From 650b127a6a671a87034db5e027379e740aa56364 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 14 三月 2024 08:54:33 +0800 Subject: [PATCH] 优化 --- ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 611 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 389 insertions(+), 222 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 4992f17..48c9153 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;//寮傚父鍥炶皟 @@ -140,37 +148,16 @@ camera.setState("1"); camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan); - ardCamerasService.updateArdCameras(camera); //鑾峰彇鏈�鏂伴�氶亾 - List<ArdChannel> cameraChannelList = getCameraChannelList(camera); + List<ArdChannel> cameraChannelList = getIPChannelInfo(camera); if (cameraChannelList.size() > 0) { + camera.setChannelList(cameraChannelList); for (ArdChannel channel : cameraChannelList) { channel.setId(IdUtils.simpleUUID()); ardChannelService.insertArdChannel(channel); } //娣诲姞鍒版祦濯掍綋 - for (ArdChannel channel : cameraChannelList) { - String name = camera.getId() + "_" + channel.getChanNo(); - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; - Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu != null) { - vtduService.deleteVtduByName(name); - } - //娣诲姞鍒版祦濯掍綋 - vtdu = new Vtdu(); - vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + channel.getChanNo()); - CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); - Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } else { - vtdu.setIsCode("1");//榛樿杞爜 - } - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); - } + addVtdu(camera); } //鍒涘缓寮曞闃熷垪 if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { @@ -178,7 +165,7 @@ PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); } - + ardCamerasService.updateArdCameras(camera); } catch (Exception ex) { log.error("娉ㄥ唽璁惧寮傚父", ex); } @@ -235,28 +222,32 @@ //鍚屾鐧诲綍 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(); + log.debug("Login Failed 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�," + + "Error Code:" + errorCode + " " + + "Error Info:" + SdkErrorCodeEnum.getDescByCode(errorCode)); camera.setChanNum(0); camera.setLoginId(-1); camera.setState("0"); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); ardCamerasService.updateArdCameras(camera); - return ; + return; } - 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"); + return; + } else { + log.debug("Set fExceptionCallBack function successfully!"); + } } } - if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); } @@ -270,48 +261,71 @@ camera.setState("1"); camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan); - ardCamerasService.updateArdCameras(camera); + //鑾峰彇鏈�鏂伴�氶亾 - List<ArdChannel> cameraChannelList = getCameraChannelList(camera); + List<ArdChannel> cameraChannelList = getIPChannelInfo(camera); if (cameraChannelList.size() > 0) { + camera.setChannelList(cameraChannelList); + camera.setChanNum(cameraChannelList.size()); for (ArdChannel channel : cameraChannelList) { channel.setId(IdUtils.simpleUUID()); ardChannelService.insertArdChannel(channel); } - //娣诲姞鍒版祦濯掍綋 - for (ArdChannel channel : cameraChannelList) { - String name = camera.getId() + "_" + channel.getChanNo(); - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; - Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu != null) { - vtduService.deleteVtduByName(name); - } - //娣诲姞鍒版祦濯掍綋 - vtdu = new Vtdu(); - vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + channel.getChanNo()); - CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); - Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } else { - vtdu.setIsCode("1");//榛樿杞爜 - } - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); - } } + ardCamerasService.updateArdCameras(camera); + //娣诲姞鍒版祦濯掍綋 + 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); } catch (Exception ex) { log.error("娉ㄥ唽璁惧寮傚父", ex); } + } + + //鍒涘缓寮曞闃熷垪 + 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()); + } + } + } + } + + //娣诲姞鍒版祦濯掍綋 + private void addVtdu(ArdCameras camera) { + try { + for (ArdChannel channel : camera.getChannelList()) { + String name = camera.getId() + "_" + channel.getChanNo(); + String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; + Vtdu vtdu = vtduService.selectVtduByName(name); + if (vtdu != null) { + vtduService.deleteVtduByName(name); + } + //娣诲姞鍒版祦濯掍綋 + vtdu = new Vtdu(); + vtdu.setRtspSource(rtspSource); + vtdu.setName(camera.getId() + "_" + channel.getChanNo()); + CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); + Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); + if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { + vtdu.setIsCode("0");//榛樿涓嶈浆鐮� + } else { + vtdu.setIsCode("1");//榛樿杞爜 + } + vtdu.setMode("1");//榛樿CPU杞В鐮� + vtdu.setCameraId(camera.getId()); + vtduService.insertVtdu(vtdu); + } + } catch (Exception ex) { + log.error("閫氶亾娣诲姞鍒版祦濯掍綋寮傚父锛�" + ex.getMessage()); + } + } /** @@ -366,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; @@ -441,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("鎺у埗鎴愬姛"); } /** @@ -452,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); @@ -475,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淇℃伅鏁版嵁鎴愬姛"); } /** @@ -487,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); @@ -508,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); } /** @@ -523,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("棰勭疆鐐硅缃垚鍔�"); } /** @@ -545,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("璋冪敤棰勭疆鐐规垚鍔�"); } /** @@ -881,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); @@ -895,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()); } } @@ -931,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(); @@ -952,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(); @@ -985,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()); } } @@ -1006,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(); @@ -1020,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); } } @@ -1037,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(); @@ -1054,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(); } /** @@ -1069,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(); @@ -1083,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");//璁剧疆淇濈暀浣嶆暟 @@ -1102,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 * @鍒涘缓浜� 鍒樿嫃涔� @@ -1116,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(); @@ -1129,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); @@ -1146,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 * @鍒涘缓浜� 鍒樿嫃涔� @@ -1161,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 ? "寮�鍚�" : "鍏抽棴"; @@ -1190,16 +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); + log.error("鍒囨崲绾㈠澶辫触 ErrorCode:{},ErrorInfo:{}", code, SdkErrorCodeEnum.getDescByCode(code)); + return AjaxResult.error("鍒囨崲绾㈠澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); } - else { - log.debug("璁剧疆澶滆鎴愬姛"); - } - - return bool; + log.debug("鍒囨崲绾㈠鎴愬姛"); + return AjaxResult.success("鍒囨崲绾㈠鎴愬姛"); } /** @@ -1211,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(); @@ -1224,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); @@ -1241,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("璁剧疆鑱氱劍妯″紡鎴愬姛"); } /** @@ -1255,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(); @@ -1267,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); } /** @@ -1283,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; @@ -1300,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("璁剧疆浜戝彴鍔犵儹鎴愬姛"); } /** @@ -1315,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(); @@ -1328,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); @@ -1342,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("璁剧疆闀滃ご闄ゅ啺鎴愬姛"); } /** @@ -1353,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(); @@ -1383,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); } /** @@ -1682,38 +1827,60 @@ } //鑾峰彇IP閫氶亾 - @Override - public List<ArdChannel> getCameraChannelList(ArdCameras camera) { - /*鑾峰彇閫氶亾*/ + public List<ArdChannel> getIPChannelInfo(ArdCameras camera) { + + //鑾峰彇閫氶亾 List<ArdChannel> channelList = new ArrayList<>(); try { - Integer chanNum = camera.getChanNum(); - Integer startDChan = camera.getStartDChan(); - if (chanNum > 0) { - // 鑾峰彇閫氶亾鍙� - for (int iChannum = 0; iChannum < chanNum; iChannum++) { - ArdChannel ardChannel = new ArdChannel(); - int channum = iChannum + startDChan + 1; - HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); - strPicCfg.dwSize = strPicCfg.size(); - strPicCfg.write(); - Pointer pStrPicCfg = strPicCfg.getPointer(); - NativeLong lChannel = new NativeLong(channum); - IntByReference pInt = new IntByReference(0); - boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), - pStrPicCfg, strPicCfg.size(), pInt); - if (b_GetPicCfg) { - strPicCfg.read(); - String channelName = new String(strPicCfg.sChanName, "GBK").trim(); - ardChannel.setName(channelName); - } + if (camera.getGdtype().equals("3")) { + camera.setChanNum(64);//瓒呰剳鑾峰彇鍦ㄧ嚎閫氶亾鏁� + camera.setStartDChan(0);//瓒呰剳鍒濆閫氶亾涓�0 + } + IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟 + HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40(); + m_strIpparaCfg.write(); + //lpIpParaConfig 鎺ユ敹鏁版嵁鐨勭紦鍐叉寚閽� + Pointer lpIpParaConfig = m_strIpparaCfg.getPointer(); + boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned); + m_strIpparaCfg.read(); + //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan);//m_strIpparaCfg.dwDChanNum + for (int iChannum = 0; iChannum < camera.getChanNum(); iChannum++) { + ArdChannel ardChannel = new ArdChannel(); + int channum = iChannum + camera.getStartDChan() + 1; + HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); + strPicCfg.dwSize = strPicCfg.size(); + strPicCfg.write(); + Pointer pStrPicCfg = strPicCfg.getPointer(); + NativeLong lChannel = new NativeLong(channum); + IntByReference pInt = new IntByReference(0); + boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), + pStrPicCfg, strPicCfg.size(), pInt); + if (!b_GetPicCfg) { + // log.error("鑾峰彇鍥惧儚鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + } + strPicCfg.read(); + m_strIpparaCfg.struStreamMode[iChannum].read(); + if (m_strIpparaCfg.struStreamMode[iChannum].byGetStreamType == 0) { + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO.class); + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read(); + int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256; + String channelName = new String(strPicCfg.sChanName, "GBK").trim(); ardChannel.setDeviceId(camera.getId()); - ardChannel.setChanNo(iChannum + 1); - channelList.add(ardChannel); + ardChannel.setName(channelName); + ardChannel.setChanNo(channum); + if (camera.getGdtype().equals("3")) { + //瓒呰剳鍙幏鍙栧湪绾块�氶亾 + if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) { + //log.debug("IP閫氶亾" + channum + "鍦ㄧ嚎"); + channelList.add(ardChannel); + } + } else { + channelList.add(ardChannel); + } } } } catch (Exception ex) { - log.error("鑾峰彇鐩告満閫氶亾寮傚父:" + ex.getMessage()); + log.error("鑾峰彇IP閫氶亾寮傚父:" + ex.getMessage()); } return channelList; } @@ -1727,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); @@ -1747,9 +1914,9 @@ 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 { + 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); @@ -1757,7 +1924,7 @@ map.put("z", struGisInfo.struPtzPos.fZoomPos); map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙� map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙� - return map; - } + return AjaxResult.success(map); + } } -- Gitblit v1.9.3