From 1e89a0c2fc96040ba50d0fe4305ace22f3daa6cf Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期五, 11 八月 2023 15:35:21 +0800 Subject: [PATCH] 优化通用光电报警只获取小光电数据 --- src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 68 ++++------------ src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java | 4 + src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java | 67 +++++++++------- src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java | 12 +- src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 11 +- src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | 19 ++-- 6 files changed, 80 insertions(+), 101 deletions(-) diff --git a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java index 7b0f9ab..7513cd8 100644 --- a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java +++ b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java @@ -42,8 +42,10 @@ public void run(ApplicationArguments args) { //鍔犺浇sdk搴� HikClientUtil.loadHCNetSDKLib(); - //鑾峰彇鍏ㄩ儴娴峰悍鍏夌數灏濊瘯鐧诲綍 - ardCameraList = ardCamerasMapper.selectArdCamerasList(new ArdCameras()); + //鑾峰彇灏忓厜鐢靛皾璇曠櫥褰� + ArdCameras ardCamera=new ArdCameras(); + ardCamera.setGdtype("0"); + ardCameraList = ardCamerasMapper.selectArdCamerasList(ardCamera); HikClientUtil.loginAllCamera(ardCameraList); syncTask(); } @@ -56,8 +58,10 @@ private void syncTask() { scheduler.scheduleAtFixedRate(() -> { try { - //region 瀹氭椂鍚屾鐩告満 - List<ArdCameras> newArdCameraList = ardCamerasMapper.selectArdCamerasList(new ArdCameras()); + //region 瀹氭椂鍚屾灏忓厜鐢� + ArdCameras ardCamera=new ArdCameras(); + ardCamera.setGdtype("0"); + List<ArdCameras> newArdCameraList = ardCamerasMapper.selectArdCamerasList(ardCamera); //闇�瑕佹洿鏂扮殑鏁版嵁 List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList); if (updateList.size() > 0) { @@ -129,12 +133,7 @@ .findFirst() .orElse(null); - return oldItem == null || - !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()) || - !Objects.equals(oldItem.getIp(), newItem.getIp()) || - !Objects.equals(oldItem.getPort(), newItem.getPort()) || - !Objects.equals(oldItem.getUsername(), newItem.getUsername()) || - !Objects.equals(oldItem.getPassword(), newItem.getPassword()); + return oldItem == null || !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()); }) .collect(Collectors.toList()); diff --git a/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java index 9d77347..e5fa5e8 100644 --- a/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java +++ b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java @@ -29,26 +29,32 @@ @Slf4j(topic = "external") @Order(5) public class ArdEquipExternalServiceImpl implements IArdEquipExternalService, ApplicationRunner { + private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + public static List<ArdEquipExternal> ardAlarmHostList = new ArrayList<>(); public static List<ArdEquipExternal> ardAccessHostList = new ArrayList<>(); + @Autowired private ArdEquipExternalMapper ardEquipExternalMapper; @Override - public void run(ApplicationArguments args) throws Exception { + public void run(ApplicationArguments args){ //鑾峰彇鍏ㄩ儴娴峰悍鎶ヨ涓绘満灏濊瘯鐧诲綍 ArdEquipExternal alarmHost = new ArdEquipExternal(); alarmHost.setFactory("1"); alarmHost.setType("1"); ardAlarmHostList = ardEquipExternalMapper.selectArdEquipExternalList(alarmHost); HikClientUtil.loginAllAlarmHost(ardAlarmHostList); + //鑾峰彇鍏ㄩ儴闂ㄧ涓绘満灏濊瘯鐧诲綍 ArdEquipExternal accessControlHost = new ArdEquipExternal(); accessControlHost.setFactory("1"); accessControlHost.setType("6"); ardAccessHostList = ardEquipExternalMapper.selectArdEquipExternalList(accessControlHost); HikClientUtil.loginAllAccessControlHost(ardAccessHostList); + + //鍚屾浠诲姟 syncTask(); } @@ -97,7 +103,7 @@ alarmHost.setType("6"); List<ArdEquipExternal> newAccessHostList = ardEquipExternalMapper.selectArdEquipExternalList(alarmHost); //闇�瑕佹洿鏂扮殑鏁版嵁 - updateList = sameListWithDifferent(ardAccessHostList, newAccessHostList); + updateList = sameListWithDifferent(ardAccessHostList, newAccessHostList); if (updateList.size() > 0) { HikClientUtil.logoutAllAlarmHost(updateList); HikClientUtil.loginAllAlarmHost(updateList); @@ -125,6 +131,34 @@ log.error("鍚屾澶栬仈浠诲姟鎵ц鍑洪敊" + e.getMessage()); } }, 10, 10, TimeUnit.SECONDS); + } + + + /** + * 鏌ヨexternal + * + * @param id external涓婚敭 + * @return external + */ + @Override + public ArdEquipExternal selectArdEquipExternalById(String id) { + return ardEquipExternalMapper.selectArdEquipExternalById(id); + } + + @Override + public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal) { + return ardEquipExternalMapper.selectArdEquipExternal(ardEquipExternal); + } + + /** + * 鏌ヨexternal鍒楄〃 + * + * @param ardEquipExternal external + * @return external + */ + @Override + public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal) { + return ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal); } @@ -157,33 +191,4 @@ .collect(Collectors.toList()); return resultList; } - - /** - * 鏌ヨexternal - * - * @param id external涓婚敭 - * @return external - */ - @Override - public ArdEquipExternal selectArdEquipExternalById(String id) { - return ardEquipExternalMapper.selectArdEquipExternalById(id); - } - - @Override - public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal) { - return ardEquipExternalMapper.selectArdEquipExternal(ardEquipExternal); - } - - /** - * 鏌ヨexternal鍒楄〃 - * - * @param ardEquipExternal external - * @return external - */ - @Override - public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal) { - return ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal); - } - - } diff --git a/src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java b/src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java index 5e79fef..b7cadae 100644 --- a/src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java +++ b/src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java @@ -15,14 +15,12 @@ **/ @Data public class GlobalVariable { - //淇濆瓨鐩告満淇℃伅key:ip value:camera瀵硅薄 + //淇濆瓨鐩告満淇℃伅key:(ip:port) value:camera瀵硅薄 public static Map<String, ArdCameras> cameraMap = new HashMap<>(); - //淇濆瓨鐩告満淇℃伅key:ip value:鎶ヨ涓绘満瀵硅薄 - public static Map<String, ArdEquipExternal> alarmHostMap = new HashMap<>(); - //淇濆瓨鐩告満淇℃伅key:ip value:闂ㄧ涓绘満瀵硅薄 - public static Map<String, ArdEquipExternal> accessHostMap = new HashMap<>(); - //淇濆瓨鐩告満鐧诲綍淇℃伅key:cameraId value:loginId + + //淇濆瓨璁惧鐧诲綍淇℃伅key:deviceId value:loginId public static Map<String, Integer> loginMap = new HashMap<>(); - //淇濆瓨鐩告満鐨勫竷闃蹭俊鎭痥ey:cameraId value:lAlarmHandle + + //淇濆瓨璁惧鐨勫竷闃蹭俊鎭痥ey:deviceId value:lAlarmHandle public static Map<String, Integer> alarmMap = new HashMap<>(); } diff --git a/src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java index 19bea4e..ff82dae 100644 --- a/src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java +++ b/src/main/java/com/ard/utils/hiksdk/domain/CameraEventInfo.java @@ -41,6 +41,10 @@ */ String cameraIp; /** + * 鍏宠仈鐩告満port + */ + Integer cameraPort; + /** * 鍏宠仈鐩告満閫氶亾 */ Integer cameraChannel; diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java index 9314aa7..237152b 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java @@ -56,7 +56,7 @@ //log.debug("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); switch (lCommand) { case HCNetSDK.COMM_ALARM_V30: - log.debug("绉诲姩渚︽祴"); + //log.debug("绉诲姩渚︽祴"); ArdCameras ardCameras = new ArdCameras(); ardCameras.setIp(sDeviceIP); ardCameras.setPort(wLinkPort); @@ -75,6 +75,7 @@ info.setCameraName(camera.getName()); info.setCameraId(camera.getId()); info.setCameraIp(camera.getIp()); + info.setCameraPort(camera.getPort()); info.setCameraType(camera.getGdtype()); info.setCameraChannel(Integer.valueOf(netDvrAlarminfoV30.byChannel[0])); info.setLongitude(camera.getLongitude()); @@ -89,7 +90,7 @@ } case HCNetSDK.COMM_ALARM_RULE: - log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤"); + //log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤"); //region 琛屼负鍒嗘瀽淇℃伅 ardCameras = new ArdCameras(); ardCameras.setIp(sDeviceIP); @@ -112,6 +113,7 @@ info.setCameraName(ardCamera.getName()); info.setCameraId(ardCamera.getId()); info.setCameraIp(ipaddr); + info.setCameraPort(ardCamera.getPort()); info.setCameraType(ardCamera.getGdtype()); info.setCameraChannel(channel); info.setLongitude(ardCamera.getLongitude()); @@ -185,7 +187,7 @@ // log.debug("GPS鎶ヨ淇℃伅涓婃姤(鏆備笉瑙f瀽)"); // break; case HCNetSDK.COMM_ALARMHOST_CID_ALARM: - log.debug("鎶ヨ涓绘満CID鎶ュ憡鎶ヨ涓婃姤"); + //log.debug("鎶ヨ涓绘満CID鎶ュ憡鎶ヨ涓婃姤"); //region 鎶ヨ涓绘満鎶ヨ澶勭悊 ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); ardEquipExternal.setIp(sDeviceIP); @@ -401,7 +403,8 @@ */ private String savePicture(CameraEventInfo info) { CameraCmd cmd = new CameraCmd(); - ArdCameras Cameras = GlobalVariable.cameraMap.get(info.getCameraIp()); + String key=info.getCameraIp()+":"+info.getCameraPort(); + ArdCameras Cameras = GlobalVariable.cameraMap.get(key); if (Cameras == null) { return ""; } diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java index 1faeb54..02e1fe5 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java @@ -210,7 +210,8 @@ info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); login(info); - GlobalVariable.cameraMap.put(camera.getIp(), camera); + String key = camera.getIp() + ":" + camera.getPort(); + GlobalVariable.cameraMap.put(key, camera); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); @@ -233,7 +234,8 @@ info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); logout(info); - GlobalVariable.cameraMap.remove(camera.getIp()); + String key = camera.getIp() + ":" + camera.getPort(); + GlobalVariable.cameraMap.remove(key); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); @@ -256,20 +258,20 @@ info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); login(info); - String ip = alarmHost.getIp(); - GlobalVariable.alarmHostMap.put(ip, alarmHost); +// String key=alarmHost.getIp()+":"+alarmHost.getPort(); +// GlobalVariable.alarmHostMap.put(key, alarmHost); } } catch (Exception ex) { log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); } } + /** * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈� * @鍒涘缓浜� 鍒樿嫃涔� * @鍒涘缓鏃堕棿 2023/2/3 10:10 */ - public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) - { + public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); @@ -280,13 +282,14 @@ info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); logout(info); - String ip = alarmHost.getIp(); - GlobalVariable.alarmHostMap.remove(ip); +// String key=alarmHost.getIp()+":"+alarmHost.getPort(); +// GlobalVariable.alarmHostMap.remove(key); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } } + /** * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈� * @鍒涘缓浜� 鍒樿嫃涔� @@ -303,13 +306,15 @@ info.setUsername(accessControlHost.getUsername()); info.setPassword(accessControlHost.getPassword()); login(info); - String ip = accessControlHost.getIp(); - GlobalVariable.accessHostMap.put(ip, accessControlHost); +// +// String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); +// GlobalVariable.accessHostMap.put(key, accessControlHost); } } catch (Exception ex) { log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); } } + /** * @鎻忚堪 鐧诲嚭鎵�鏈夐棬绂佷富鏈� * @鍒涘缓浜� 鍒樿嫃涔� @@ -326,47 +331,14 @@ info.setUsername(accessControlHost.getUsername()); info.setPassword(accessControlHost.getPassword()); logout(info); - String ip = accessControlHost.getIp(); - GlobalVariable.accessHostMap.remove(ip); +// String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); +// GlobalVariable.accessHostMap.remove(key); } } catch (Exception ex) { log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage()); } } - /** - * @鎻忚堪 娉ㄩ攢鐧诲綍 - * @鍙傛暟 [dvrLogin] - * @杩斿洖鍊� java.lang.Integer - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/1/17 16:12 - * @淇敼浜哄拰鍏跺畠淇℃伅 - */ - public static boolean loginOut(String cameraId) { - if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; - } - Integer userId = GlobalVariable.loginMap.get(cameraId); - boolean b = hCNetSDK.NET_DVR_Logout(userId); - if (b) { - GlobalVariable.loginMap.remove(cameraId); - } - return b; - } - /** - * 鏄惁鍦ㄧ嚎 - * - * @param cmd - */ - public static boolean isOnLine(CameraCmd cmd) { - String cameraId = cmd.getCameraId(); - if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return false; - } - Integer userId = GlobalVariable.loginMap.get(cameraId); - boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0); - return isOnLine; - } /** * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹� @@ -402,8 +374,6 @@ lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); if (lAlarmHandle == -1) { log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError()); - // 娉ㄩ攢 閲婃斁sdk璧勬簮 - logout(lUserID); } else { log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�"); } @@ -452,11 +422,11 @@ //璁剧疆鍥剧墖澶у皬 ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024); // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓� - // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------"); + // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------"); boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is); if (is) { - // log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError()); + // log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError()); byte[] array = jpegBuffer.array(); //瀛樺偍鍒癿inio -- Gitblit v1.9.3