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