From 6a26b1d539576a556d0f8682af7ae4317de78c7a Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期二, 02 四月 2024 13:35:35 +0800 Subject: [PATCH] 修复相机密码脱敏导致的bug --- ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 469 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 312 insertions(+), 157 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java index 7c36f42..1193b37 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java @@ -2,8 +2,12 @@ import com.ruoyi.alarm.global.domain.GuidePriorityQueue; import com.ruoyi.alarm.global.domain.GuideTask; +import com.ruoyi.alarm.global.service.impl.QueueHandler; +import com.ruoyi.common.annotation.SdkOperate; +import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.camera.factory.CameraSDK; @@ -16,6 +20,7 @@ import com.ruoyi.utils.gis.GisUtil; import com.ruoyi.utils.minio.MinioUtil; import com.ruoyi.utils.sdk.common.GlobalVariable; +import com.ruoyi.utils.sdk.common.SdkErrorCodeEnum; import com.ruoyi.utils.sdk.hiksdk.lib.ExceptionCallBack; import com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK; import com.sun.jna.NativeLong; @@ -52,7 +57,10 @@ private IArdChannelService ardChannelService; @Resource private IVtduService vtduService; + @Resource + private QueueHandler queueHandler; + public Object _lock = new Object(); public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK; private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟 @@ -65,7 +73,7 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean login(ArdCameras camera) { + public AjaxResult login(ArdCameras camera) { try { // 鍒濆鍖� if (!hCNetSDK.NET_DVR_Init()) { @@ -105,14 +113,15 @@ //鍚屾鐧诲綍 int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (lUserID < 0) { - log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],閿欒鐮侊細" + hCNetSDK.NET_DVR_GetLastError()); + int errorCode = hCNetSDK.NET_DVR_GetLastError(); camera.setChanNum(0); camera.setLoginId(-1); camera.setState("0"); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); ardCamerasService.updateArdCameras(camera); - return false; + log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); + return AjaxResult.error("鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]"); @@ -121,7 +130,6 @@ //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑) if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) { log.debug("Set fExceptionCallBack function fail"); - return false; } else { log.debug("Set fExceptionCallBack function successfully!"); } @@ -158,10 +166,11 @@ GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); } ardCamerasService.updateArdCameras(camera); + return AjaxResult.success("璁惧鐧诲綍鎴愬姛"); } catch (Exception ex) { log.error("娉ㄥ唽璁惧寮傚父", ex); + return AjaxResult.error("娉ㄥ唽璁惧寮傚父" + ex.getMessage()); } - return true; } /** @@ -174,11 +183,12 @@ */ @Override @Async("loginExecutor") - public void asyncLogin(ArdCameras camera) { + public AjaxResult asyncLogin(ArdCameras camera) { try { // 鍒濆鍖� if (!hCNetSDK.NET_DVR_Init()) { log.error("SDK鍒濆鍖栧け璐�"); + return AjaxResult.error("SDK鍒濆鍖栧け璐�"); } //鎵撳嵃娴峰悍sdk鏃ュ織 if (Platform.isWindows()) { @@ -214,28 +224,28 @@ //鍚屾鐧诲綍 int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (lUserID < 0) { - log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],閿欒鐮侊細" + hCNetSDK.NET_DVR_GetLastError()); + int errorCode = hCNetSDK.NET_DVR_GetLastError(); camera.setChanNum(0); camera.setLoginId(-1); camera.setState("0"); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); ardCamerasService.updateArdCameras(camera); - return; + log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); + return AjaxResult.error("璁惧鐧诲綍澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } - - log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]"); - if (fExceptionCallBack == null) { - fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟 - //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑) - if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) { - log.debug("Set fExceptionCallBack function fail"); - return; - } else { - log.debug("Set fExceptionCallBack function successfully!"); + log.debug("Login Success 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�"); + synchronized (_lock) { + if (fExceptionCallBack == null) { + fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟 + //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑) + if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) { + log.debug("Set fExceptionCallBack function fail"); + } else { + log.debug("Set fExceptionCallBack function successfully!"); + } } } - if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); } @@ -264,13 +274,26 @@ //娣诲姞鍒版祦濯掍綋 addVtdu(camera); //鍒涘缓寮曞闃熷垪 - if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { - Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); - PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); - GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); - } + createGuideQueue(camera); + return AjaxResult.success("璁惧鐧诲綍鎴愬姛"); } catch (Exception ex) { log.error("娉ㄥ唽璁惧寮傚父", ex); + return AjaxResult.error("娉ㄥ唽璁惧寮傚父" + ex.getMessage()); + } + } + + //鍒涘缓寮曞闃熷垪 + private void createGuideQueue(ArdCameras camera) { + if (camera.getCamAlarmGuideEnable() != null) { + if (camera.getCamAlarmGuideEnable() == 1) { + if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { + Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); + PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); + GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); + //鍚姩闃熷垪澶勭悊鍣� + queueHandler.process(camera.getId()); + } + } } } @@ -357,14 +380,15 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean pTZControl(CameraCmd cmd) { + @SdkOperate + public AjaxResult pTZControl(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); Integer speed = cmd.getSpeed(); Integer code = cmd.getCode(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); int dwStop; @@ -432,9 +456,10 @@ boolean bool = hCNetSDK.NET_DVR_PTZControlWithSpeed_Other(userId, channelNum, dwPTZCommand, dwStop, speed); if (!bool) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + errorCode); + log.error("鎺у埗澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); + return AjaxResult.error("鎺у埗澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } - return bool; + return AjaxResult.success("鎺у埗鎴愬姛"); } /** @@ -443,12 +468,12 @@ * @param cmd 鐩告満鍛戒护 */ @Override - public boolean setFocusPos(CameraCmd cmd) { + public AjaxResult setFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer dwFocusPos = cmd.getDwFocusPos(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } // 鑾峰彇鍙傛暟 Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -466,10 +491,9 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("璁剧疆GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code); - return false; - } else { - return true; + return AjaxResult.error("璁剧疆GIS淇℃伅鏁版嵁澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } + return AjaxResult.success("璁剧疆GIS淇℃伅鏁版嵁鎴愬姛"); } /** @@ -478,12 +502,11 @@ * @param cmd 鐩告満鍛戒护 */ @Override - public int getFocusPos(CameraCmd cmd) { - int result = 0; + public AjaxResult getFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return result; + return AjaxResult.error("璁惧鏈櫥褰�"); } // 鑾峰彇鍙傛暟 Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -499,13 +522,12 @@ boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code); - return result; - } else { - struGisInfo.read(); - result = struGisInfo.struPtzPosEx.dwFocus; + log.error("鑾峰彇鑱氱劍鍊煎け璐�: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇鑱氱劍鍊煎け璐�: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } - return result; + struGisInfo.read(); + int result = struGisInfo.struPtzPosEx.dwFocus; + return AjaxResult.success(result); } /** @@ -514,20 +536,21 @@ * @param cmd 鐩告満鍛戒护 */ @Override - public boolean setPreset(CameraCmd cmd) { + public AjaxResult setPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("棰勭疆鐐硅缃け璐�,璇风◢鍚庨噸璇�" + code); + log.error("棰勭疆鐐硅缃け璐�: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("棰勭疆鐐硅缃け璐�: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } - return bool; + return AjaxResult.success("棰勭疆鐐硅缃垚鍔�"); } /** @@ -536,20 +559,21 @@ * @param cmd 鐩告満鍛戒护 */ @Override - public boolean gotoPreset(CameraCmd cmd) { + public AjaxResult gotoPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Integer PresetIndex = cmd.getPresetIndex(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("棰勭疆鐐硅缃け璐�,璇风◢鍚庨噸璇�" + code); + log.error("璋冪敤棰勭疆鐐瑰け璐�: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("璋冪敤棰勭疆鐐瑰け璐�: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } - return bool; + return AjaxResult.success("璋冪敤棰勭疆鐐规垚鍔�"); } /** @@ -872,12 +896,11 @@ * @鍒涘缓鏃堕棿 2023/1/17 16:36 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - @Override - public Map<String, Object> getPtz(CameraCmd cmd) { + public AjaxResult getPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return new HashMap<>(); + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -886,30 +909,82 @@ IntByReference ibrBytesReturned = new IntByReference(0); m_ptzPosCurrent.write(); boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_PTZPOS, channelNum, pioint, m_ptzPosCurrent.size(), ibrBytesReturned); - if (bool) { - m_ptzPosCurrent.read(); - // DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟 - //16杩涘埗杞琁nteger鍚庨櫎10锛屼繚鐣欏皬鏁扮偣1浣� - //瀹為檯鏄剧ず鐨凱TZ鍊兼槸鑾峰彇鍒扮殑鍗佸叚杩涘埗鍊肩殑鍗佸垎涔嬩竴锛� - //濡傝幏鍙栫殑姘村钩鍙傛暟P鐨勫�兼槸0x1750锛屽疄闄呮樉绀虹殑P鍊间负175搴︼紱 - //鑾峰彇鍒扮殑鍨傜洿鍙傛暟T鐨勫�兼槸0x0789锛屽疄闄呮樉绀虹殑T鍊间负78.9搴︼紱 - //鑾峰彇鍒扮殑鍙樺�嶅弬鏁癦鐨勫�兼槸0x1100锛屽疄闄呮樉绀虹殑Z鍊间负110鍊嶃�� - BigDecimal b = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPos)) / 10); - BigDecimal c = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPos)) / 10); - BigDecimal d = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPos)) / 10); - double p = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); - double t = c.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); - double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); - //log.debug("T鍨傜洿鍙傛暟涓�: " + p + "P姘村钩鍙傛暟涓�: " + t + "Z鍙樺�嶅弬鏁颁负: " + z); - Map<String, Object> ptzMap = new HashMap<>(); + if (!bool) { + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇ptz澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇ptz澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + } + m_ptzPosCurrent.read(); + // DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟 + //16杩涘埗杞琁nteger鍚庨櫎10锛屼繚鐣欏皬鏁扮偣1浣� + //瀹為檯鏄剧ず鐨凱TZ鍊兼槸鑾峰彇鍒扮殑鍗佸叚杩涘埗鍊肩殑鍗佸垎涔嬩竴锛� + //濡傝幏鍙栫殑姘村钩鍙傛暟P鐨勫�兼槸0x1750锛屽疄闄呮樉绀虹殑P鍊间负175搴︼紱 + //鑾峰彇鍒扮殑鍨傜洿鍙傛暟T鐨勫�兼槸0x0789锛屽疄闄呮樉绀虹殑T鍊间负78.9搴︼紱 + //鑾峰彇鍒扮殑鍙樺�嶅弬鏁癦鐨勫�兼槸0x1100锛屽疄闄呮樉绀虹殑Z鍊间负110鍊嶃�� + BigDecimal b = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPos)) / 10); + BigDecimal c = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPos)) / 10); + BigDecimal d = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPos)) / 10); + double p = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); + double t = c.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); + double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); + //log.debug("T鍨傜洿鍙傛暟涓�: " + p + "P姘村钩鍙傛暟涓�: " + t + "Z鍙樺�嶅弬鏁颁负: " + z); + Map<String, Object> ptzMap = new HashMap<>(); + ptzMap.put("p", p); + ptzMap.put("t", t); + ptzMap.put("z", z); + return AjaxResult.success(ptzMap); + } + + /** + * @鎻忚堪 鑾峰彇楂樼簿搴tz淇℃伅 + * @鍙傛暟 [userId, chanNo] + * @杩斿洖鍊� boolean + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/17 16:36 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public AjaxResult getPtzHigh(CameraCmd cmd) { + Map<String, Object> ptzMap = new HashMap<>(); + try { + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return AjaxResult.error("璁惧鏈櫥褰�"); + } + IntByReference pchannel = new IntByReference(chanNo); + Pointer pChannelNum = pchannel.getPointer(); + Integer lUserID = (Integer) GlobalVariable.loginMap.get(cameraId); + HCNetSDK.NET_DVR_STD_CONFIG lpConfigParam6696 = new HCNetSDK.NET_DVR_STD_CONFIG(); + HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG lpPTZAbsoluteEX_cfg = new HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG(); + lpConfigParam6696.lpCondBuffer = pChannelNum; + lpConfigParam6696.dwCondSize = 4; + lpConfigParam6696.lpInBuffer = null; + lpConfigParam6696.dwInSize = 0; + lpConfigParam6696.lpOutBuffer = lpPTZAbsoluteEX_cfg.getPointer(); + lpConfigParam6696.dwOutSize = lpPTZAbsoluteEX_cfg.size(); + lpConfigParam6696.write(); + boolean res = hCNetSDK.NET_DVR_GetSTDConfig(lUserID, HCNetSDK.NET_DVR_GET_PTZABSOLUTEEX, lpConfigParam6696); + if (!res) { + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇楂樼簿搴TZ缁濆浣嶇疆閰嶇疆澶辫触: errorCde" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇楂樼簿搴TZ缁濆浣嶇疆閰嶇疆澶辫触: errorCde" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + } + lpPTZAbsoluteEX_cfg.read(); + //log.debug("P锛�" + lpPTZAbsoluteEX_cfg.struPTZCtrl.fPan + " T锛�" + lpPTZAbsoluteEX_cfg.struPTZCtrl.fTilt + " Z锛�" + lpPTZAbsoluteEX_cfg.struPTZCtrl.fZoom + // + " 鑱氱劍鍙傛暟锛�" + lpPTZAbsoluteEX_cfg.struPTZCtrl.dwFocus + " 鑱氱劍鑼冨洿锛�" + lpPTZAbsoluteEX_cfg.dwFocalLen + " 姘村钩杞姩閫熷害锛�" + lpPTZAbsoluteEX_cfg.fHorizontalSpeed + // + " 鍨傜洿杞姩閫熷害锛�" + lpPTZAbsoluteEX_cfg.fVerticalSpeed + " 闀滃ご鍙樺�嶉厤缃被鍨嬶細" + lpPTZAbsoluteEX_cfg.byZoomType); + float p = lpPTZAbsoluteEX_cfg.struPTZCtrl.fPan; + float fTilt = lpPTZAbsoluteEX_cfg.struPTZCtrl.fTilt; + float t = fTilt < 0 ? fTilt + 360 : fTilt; + float z = lpPTZAbsoluteEX_cfg.struPTZCtrl.fZoom; ptzMap.put("p", p); ptzMap.put("t", t); ptzMap.put("z", z); - return ptzMap; - } else { - int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code); - return new HashMap<>(); + return AjaxResult.success(ptzMap); + } catch (Exception ex) { + log.error("鑾峰彇楂樼簿搴TZ缁濆浣嶇疆寮傚父:" + ex.getMessage()); + return AjaxResult.error("鑾峰彇楂樼簿搴TZ缁濆浣嶇疆寮傚父:" + ex.getMessage()); } } @@ -922,12 +997,13 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃� */ @Override - public boolean setPtz(CameraCmd cmd) { + @SdkOperate + public AjaxResult setPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); Map<String, Double> ptz = cmd.getPtzMap(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); @@ -943,22 +1019,84 @@ m_ptzPosCurrent.write(); boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size()); if (!bool) { - int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); + int errorCode = hCNetSDK.NET_DVR_GetLastError(); + log.error("璁剧疆PTZ鍙傛暟澶辫触:" + errorCode); + return AjaxResult.error("璁剧疆PTZ鍙傛暟澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); } - return bool; + return AjaxResult.success("璁剧疆PTZ鍙傛暟鎴愬姛"); } catch (Exception ex) { log.error(ex.getMessage()); - return false; + return AjaxResult.error("璁剧疆PTZ鍙傛暟寮傚父:" + ex.getMessage()); + } + } + + /** + * @鎻忚堪 璁剧疆楂樼簿搴tz淇℃伅 + * @鍙傛暟 [userId, channelNum] + * @杩斿洖鍊� boolean + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/17 16:36 + * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�煎悜涓嬭礋鍊� + */ + @Override + @SdkOperate + public AjaxResult setPtzHigh(CameraCmd cmd) { + try { + String cameraId = cmd.getCameraId(); + Integer chanNo = cmd.getChanNo(); + Map<String, Double> ptz = cmd.getPtzMap(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return AjaxResult.error("璁惧鏈櫥褰�"); + } + Integer lUserID = (Integer) GlobalVariable.loginMap.get(cameraId); + IntByReference pchannel = new IntByReference(chanNo); + Pointer pChannelNum = pchannel.getPointer(); + + HCNetSDK.NET_DVR_STD_CONFIG lpConfigParam6697 = new HCNetSDK.NET_DVR_STD_CONFIG(); + HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG lpPTZAbsoluteEX_cfgInfo = new HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG(); + lpConfigParam6697.lpCondBuffer = pChannelNum; + lpConfigParam6697.dwCondSize = 4; + HCNetSDK.BYTE_ARRAY m_szStatusBuf = new HCNetSDK.BYTE_ARRAY(4096 * 4); + lpConfigParam6697.lpStatusBuffer = m_szStatusBuf.getPointer(); + lpConfigParam6697.dwStatusSize = 4096 * 4; + lpPTZAbsoluteEX_cfgInfo.dwSize = lpPTZAbsoluteEX_cfgInfo.size(); + lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fPan = new Double(ptz.get("p")).floatValue(); + float t = new Double(ptz.get("t")).floatValue(); + float t1 = t > 300 ? (t - 360) : t; + BigDecimal bigDecimal = new BigDecimal(t1); + float t2 = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); + lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fTilt = t2; + lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fZoom = new Double(ptz.get("z")).floatValue(); + lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.dwFocus = 399; + lpPTZAbsoluteEX_cfgInfo.dwFocalLen = 1250; + lpPTZAbsoluteEX_cfgInfo.fHorizontalSpeed = (float) 10; + lpPTZAbsoluteEX_cfgInfo.fVerticalSpeed = (float) 10; + lpPTZAbsoluteEX_cfgInfo.byZoomType = 0; + lpPTZAbsoluteEX_cfgInfo.write(); + lpConfigParam6697.lpInBuffer = lpPTZAbsoluteEX_cfgInfo.getPointer(); + lpConfigParam6697.dwInSize = lpPTZAbsoluteEX_cfgInfo.dwSize; + lpConfigParam6697.write(); + boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(lUserID, NET_DVR_SET_PTZABSOLUTEEX, lpConfigParam6697); + if (!bool) { + int errorCode = hCNetSDK.NET_DVR_GetLastError(); + log.error("璁剧疆楂樼簿搴TZ鍙傛暟澶辫触:" + errorCode); + return AjaxResult.error("璁剧疆楂樼簿搴TZ鍙傛暟澶辫触: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode)); + } + return AjaxResult.success("璁剧疆楂樼簿搴TZ鍙傛暟鎴愬姛"); + + } catch (Exception ex) { + log.error("璁剧疆楂樼簿搴TZ鍙傛暟寮傚父", ex); + return AjaxResult.error("璁剧疆楂樼簿搴TZ鍙傛暟寮傚父:" + ex); } } @Override - public boolean guideTargetPosition(CameraCmd cmd) { + @SdkOperate + public AjaxResult guideTargetPosition(CameraCmd cmd) { String cameraId = cmd.getCameraId(); - Integer channelNum = cmd.getChanNo(); + Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); @@ -976,15 +1114,16 @@ m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16)); Pointer point = m_ptzPosCurrent.getPointer(); m_ptzPosCurrent.write(); - boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size()); + boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, chanNo, point, m_ptzPosCurrent.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); + return AjaxResult.error("璁剧疆ptz澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } - return bool; + return AjaxResult.success("寮曞鍧愭爣鎴愬姛"); } catch (Exception ex) { - log.error("寮曞寮傚父:" + ex.getMessage()); - return false; + log.error("寮曞鍧愭爣寮傚父:" + ex.getMessage()); + return AjaxResult.error("寮曞鍧愭爣寮傚父:" + ex.getMessage()); } } @@ -997,11 +1136,11 @@ * @鍒涘缓鏃堕棿 2023/1/17 16:36 * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾 */ - public int getPTZLockInfo(CameraCmd cmd) { + public AjaxResult getPTZLockInfo(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return -1; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG(); @@ -1011,11 +1150,12 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZLOCKCFG, channelNum, point, netDvrPtzLockcfg.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("鑾峰彇ptz閿佸畾淇℃伅澶辫触,璇风◢鍚庨噸璇�" + code); - return -1; + log.error("鑾峰彇ptz閿佸畾淇℃伅澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇ptz閿佸畾淇℃伅澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } else { netDvrPtzLockcfg.read(); - return netDvrPtzLockcfg.byWorkMode; + int byWorkMode = netDvrPtzLockcfg.byWorkMode; + return AjaxResult.success(byWorkMode); } } @@ -1028,11 +1168,12 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃� */ @Override - public boolean setZeroPtz(CameraCmd cmd) { + @SdkOperate + public AjaxResult setZeroPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL(); @@ -1045,10 +1186,11 @@ initialpositionctrl.write(); boolean bool = hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_PTZ_INITIALPOSITIONCTRL, point, initialpositionctrl.size()); if (!bool) { - int i = hCNetSDK.NET_DVR_GetLastError(); - log.error("閿欒鐮侊細" + i); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("璁剧疆闆舵柟浣嶈澶辫触:" + code); + return AjaxResult.error("璁剧疆闆舵柟浣嶈澶辫触: errorCode:" + code + "errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } - return bool; + return AjaxResult.success(); } /** @@ -1060,11 +1202,11 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public Map<String, Object> getPtzScope(CameraCmd cmd) { + public AjaxResult getPtzScope(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return new HashMap<>(); + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE(); @@ -1074,8 +1216,8 @@ boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZSCOPE, channelNum, point, m_ptzPosCurrent.size(), ibrBytesReturned); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code); - return new HashMap<>(); + log.error("鑾峰彇ptz鑼冨洿澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇ptz鑼冨洿澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } else { m_ptzPosCurrent.read(); DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟 @@ -1093,13 +1235,12 @@ ptzScopeMap.put("tMin", wTiltPosMin); ptzScopeMap.put("zMax", wZoomPosMax); ptzScopeMap.put("zMin", wZoomPosMin); - return ptzScopeMap; + return AjaxResult.success(ptzScopeMap); } - } /** - * @鎻忚堪 閫忛浘寮�鍏� + * @鎻忚堪 鍒囨崲閫忛浘 * @鍙傛暟 [userId, channelNum, enable] * @杩斿洖鍊� boolean * @鍒涘缓浜� 鍒樿嫃涔� @@ -1107,12 +1248,12 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean controlDefogcfg(CameraCmd cmd) { + public AjaxResult controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX(); @@ -1120,7 +1261,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size(), ibrBytesReturned); if (!b_GetCameraParam) { - log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struCameraParam.read(); log.debug("鏄惁寮�鍚�忛浘锛�" + struCameraParam.struDefogCfg.byMode); @@ -1137,14 +1280,15 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆閫忛浘澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("鍒囨崲閫忛浘澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鍒囨崲閫忛浘澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } - log.debug("璁剧疆閫忛浘鎴愬姛"); - return bool; + log.debug("鍒囨崲閫忛浘鎴愬姛"); + return AjaxResult.success("鍒囨崲閫忛浘鎴愬姛"); } /** - * @鎻忚堪 绾㈠寮�鍏� + * @鎻忚堪 鍒囨崲绾㈠ * @鍙傛暟 [userId, channelNum, enable] * @杩斿洖鍊� boolean * @鍒涘缓浜� 鍒樿嫃涔� @@ -1152,20 +1296,22 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean controlInfrarecfg(CameraCmd cmd) { + public AjaxResult controlInfrarecfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer chanNo = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX(); Pointer point = struDayNigh.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); - boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, chanNo, point, struDayNigh.size(), ibrBytesReturned); + boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG, chanNo, point, struDayNigh.size(), ibrBytesReturned); if (!b_GetCameraParam) { - log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } struDayNigh.read(); String current = struDayNigh.struDayNight.byDayNightFilterType == 1 ? "寮�鍚�" : "鍏抽棴"; @@ -1181,15 +1327,14 @@ daynight.byDayNightFilterTime = 60; struDayNigh.struDayNight = daynight; struDayNigh.write(); - boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, chanNo, point, struDayNigh.size()); + boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG, chanNo, point, struDayNigh.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆澶滆澶辫触,璇风◢鍚庨噸璇�" + code); - } else { - log.debug("璁剧疆澶滆鎴愬姛"); + log.error("鍒囨崲绾㈠澶辫触 ErrorCode:{},ErrorInfo:{}", code, SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鍒囨崲绾㈠澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } - - return bool; + log.debug("鍒囨崲绾㈠鎴愬姛"); + return AjaxResult.success("鍒囨崲绾㈠鎴愬姛"); } /** @@ -1201,12 +1346,12 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean controlFocusMode(CameraCmd cmd) { + public AjaxResult controlFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); @@ -1214,7 +1359,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); if (!b_GetCameraParam) { - log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struFocusMode.read(); log.debug("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); @@ -1231,10 +1378,11 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_FOCUSMODECFG, channelNum, point, struFocusMode.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆鑱氱劍妯″紡澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆鑱氱劍妯″紡澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("璁剧疆鑱氱劍妯″紡澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("璁剧疆鑱氱劍妯″紡鎴愬姛"); - return bool; + return AjaxResult.success("璁剧疆鑱氱劍妯″紡鎴愬姛"); } /** @@ -1245,11 +1393,11 @@ * @鍒涘缓鏃堕棿 2023/1/18 13:07 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public String getFocusMode(CameraCmd cmd) { + public AjaxResult getFocusMode(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return ""; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); @@ -1257,11 +1405,13 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); if (!b_GetCameraParam) { - log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struFocusMode.read(); log.debug("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); - return String.valueOf(struFocusMode.byFocusMode); + return AjaxResult.success(struFocusMode.byFocusMode); } /** @@ -1273,12 +1423,12 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean controlPTHeateRpwron(CameraCmd cmd) { + public AjaxResult controlPTHeateRpwron(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); int dwStop; @@ -1290,10 +1440,11 @@ boolean bool = hCNetSDK.NET_DVR_PTZControl_Other(userId, channelNum, HEATER_PWRON, dwStop); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆浜戝彴鍔犵儹澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆浜戝彴鍔犵儹澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("璁剧疆浜戝彴鍔犵儹澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("璁剧疆浜戝彴鍔犵儹鎴愬姛"); - return bool; + return AjaxResult.success("璁剧疆浜戝彴鍔犵儹鎴愬姛"); } /** @@ -1305,12 +1456,12 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public boolean controlCameraDeicing(CameraCmd cmd) { + public AjaxResult controlCameraDeicing(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG(); @@ -1318,7 +1469,9 @@ IntByReference ibrBytesReturned = new IntByReference(0); boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_DEVSERVER_CFG, channelNum, point, struDeicing.size(), ibrBytesReturned); if (!b_GetCameraParam) { - log.error("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } struDeicing.read(); log.debug("鏄惁寮�鍚櫎鍐帮細" + struDeicing.byEnableDeicing); @@ -1332,10 +1485,11 @@ boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_DEVSERVER_CFG, channelNum, point, struDeicing.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("璁剧疆闀滃ご闄ゅ啺澶辫触,璇风◢鍚庨噸璇�" + code); + log.error("璁剧疆闀滃ご闄ゅ啺澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("璁剧疆闀滃ご闄ゅ啺澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } log.debug("璁剧疆闀滃ご闄ゅ啺鎴愬姛"); - return bool; + return AjaxResult.success("璁剧疆闀滃ご闄ゅ啺鎴愬姛"); } /** @@ -1343,17 +1497,18 @@ * * @param cmd 鐩告満鍛戒护 */ - public String captureJPEGPicture(CameraCmd cmd) { + public AjaxResult captureJPEGPicture(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return ""; + return AjaxResult.error("璁惧鏈櫥褰�"); } Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30(); if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) { - // 杩斿洖Boolean鍊硷紝鍒ゆ柇鏄惁鑾峰彇璁惧鑳藉姏 - log.error("鎶撳浘澶辫触锛岃绋嶅悗閲嶈瘯"); + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇璁惧宸ヤ綔鐘舵�佸け璐�: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇璁惧宸ヤ綔鐘舵�佸け璐�: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } //鍥剧墖璐ㄩ噺 NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA(); @@ -1373,7 +1528,7 @@ String png_base64 = decoder.encodeToString(jpegBuffer.array());//杞崲鎴恇ase64涓� png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//鍒犻櫎 \r\n log.debug("-----------澶勭悊瀹屾垚鎴浘鏁版嵁----------"); - return png_base64; + return AjaxResult.success(png_base64); } /** @@ -1739,11 +1894,11 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾 */ @Override - public Map<String, Object> getGisInfo(CameraCmd cmd) { + public AjaxResult getGisInfo(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return new HashMap<>(); + return AjaxResult.error("璁惧鏈櫥褰�"); } // 鑾峰彇鍙傛暟 Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); @@ -1759,17 +1914,17 @@ boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code); - return new HashMap<>(); - } else { - struGisInfo.read(); - Map<String, Object> map = new HashMap<>(); - map.put("p", struGisInfo.struPtzPos.fPanPos); - map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos); - map.put("z", struGisInfo.struPtzPos.fZoomPos); - map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙� - map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙� - return map; + log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); } + struGisInfo.read(); + Map<String, Object> map = new HashMap<>(); + map.put("p", struGisInfo.struPtzPos.fPanPos); + map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos); + map.put("z", struGisInfo.struPtzPos.fZoomPos); + map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙� + map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙� + return AjaxResult.success(map); + } } -- Gitblit v1.9.3