From 85446b5b526ac53af9add7c83cfd72f39ec39611 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 07 七月 2023 10:51:13 +0800
Subject: [PATCH] 优化外联设备报警解析并上传mqtt
---
src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java | 48 +++++
src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java | 22 -
src/main/java/com/ard/utils/hiksdk/domain/DeviceInfo.java | 41 ++++
src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java | 31 +++
src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java | 33 +++
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 62 +++++-
src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java | 3
src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java | 25 --
src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 40 ++-
src/main/resources/mapper/ArdEquipExternalMapper.xml | 55 ++++++
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | 28 ++
src/main/java/com/ard/utils/mqtt/MqttConsumer.java | 69 ++++---
src/main/java/com/ard/utils/tcp/ClientInitialize.java | 10
src/main/java/com/ard/alarm/external/domain/ArdEquipExternal.java | 55 ++++++
src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java | 14 +
15 files changed, 426 insertions(+), 110 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 914fd59..71d9b4b 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
@@ -4,8 +4,13 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.mapper.ArdCamerasMapper;
import com.ard.alarm.camera.service.IArdCamerasService;
+import com.ard.alarm.external.domain.ArdEquipExternal;
+import com.ard.alarm.external.mapper.ArdEquipExternalMapper;
import com.ard.utils.hiksdk.service.impl.HikClientUtil;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@@ -19,17 +24,25 @@
*/
@Service
@Slf4j(topic = "camera")
-public class ArdCamerasServiceImpl implements IArdCamerasService {
+@Order(4)
+public class ArdCamerasServiceImpl implements IArdCamerasService, ApplicationRunner {
@Resource
private ArdCamerasMapper ardCamerasMapper;
+ @Resource
+ private ArdEquipExternalMapper ardEquipExternalMapper;
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
-
- @PostConstruct
- public void init()
- {
- List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras());
HikClientUtil.loadHCNetSDKLib();
- HikClientUtil.loginAll(ardCameras);
+ //鑾峰彇鍏ㄩ儴娴峰悍鍏夌數
+ List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasList(new ArdCameras());
+ HikClientUtil.loginAllCamera(ardCameras);
+ //鑾峰彇鍏ㄩ儴娴峰悍鎶ヨ涓绘満
+ ArdEquipExternal ardEquipExternal= new ArdEquipExternal();
+ ardEquipExternal.setFactory("1");
+ ardEquipExternal.setType("1");
+ List<ArdEquipExternal> ardEquipExternals = ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal);
+ HikClientUtil.loginAllAlarmHost(ardEquipExternals);
}
/**
* 鏌ヨ鐩告満璁惧
@@ -53,4 +66,5 @@
return ardCamerasMapper.selectArdCamerasList(ardCameras);
}
+
}
diff --git a/src/main/java/com/ard/alarm/external/domain/ArdEquipExternal.java b/src/main/java/com/ard/alarm/external/domain/ArdEquipExternal.java
new file mode 100644
index 0000000..9d517e0
--- /dev/null
+++ b/src/main/java/com/ard/alarm/external/domain/ArdEquipExternal.java
@@ -0,0 +1,55 @@
+package com.ard.alarm.external.domain;
+
+import lombok.Data;
+
+/**
+ * 澶栬仈璁惧绠$悊瀵硅薄 ard_equip_external
+ *
+ * @author ard
+ * @date 2023-07-07
+ */
+@Data
+public class ArdEquipExternal
+{
+ private static final long serialVersionUID = 1L;
+
+ /** id */
+ private String id;
+
+ /** 鍚嶇О */
+ private String name;
+
+ /** 璁惧绫诲瀷 */
+ private String type;
+
+ /** 鍘傚晢 */
+ private String factory;
+
+ /** ip */
+ private String ip;
+
+ /** 绔彛 */
+ private Integer port;
+
+ /** 鐢ㄦ埛鍚� */
+ private String username;
+
+ /** 瀵嗙爜 */
+ private String password;
+
+ /** 缁忓害 */
+ private Double longitude;
+
+ /** 绾害 */
+ private Double latitude;
+
+ /** 瀹夎楂樺害 */
+ private Double altitude;
+
+ /** 閮ㄩ棬id */
+ private Integer deptId;
+
+ /** 鐢ㄦ埛id */
+ private String userId;
+
+}
diff --git a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
new file mode 100644
index 0000000..a93f6f1
--- /dev/null
+++ b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
@@ -0,0 +1,33 @@
+package com.ard.alarm.external.mapper;
+
+import java.util.List;
+import com.ard.alarm.external.domain.ArdEquipExternal;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * externalMapper鎺ュ彛
+ *
+ * @author zj
+ * @date 2023-03-13
+ */
+@Mapper
+public interface ArdEquipExternalMapper
+{
+ /**
+ * 鏌ヨexternal
+ *
+ * @param id external涓婚敭
+ * @return external
+ */
+ public ArdEquipExternal selectArdEquipExternalById(String id);
+
+ /**
+ * 鏌ヨexternal鍒楄〃
+ *
+ * @param ardEquipExternal external
+ * @return external闆嗗悎
+ */
+ public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal);
+
+}
diff --git a/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java b/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java
new file mode 100644
index 0000000..1c455a6
--- /dev/null
+++ b/src/main/java/com/ard/alarm/external/service/IArdEquipExternalService.java
@@ -0,0 +1,31 @@
+package com.ard.alarm.external.service;
+
+import java.util.List;
+import com.ard.alarm.external.domain.ArdEquipExternal;
+
+
+/**
+ * externalService鎺ュ彛
+ *
+ * @author zj
+ * @date 2023-03-13
+ */
+public interface IArdEquipExternalService
+{
+ /**
+ * 鏌ヨexternal
+ *
+ * @param id external涓婚敭
+ * @return external
+ */
+ public ArdEquipExternal selectArdEquipExternalById(String id);
+
+ /**
+ * 鏌ヨexternal鍒楄〃
+ *
+ * @param ardEquipExternal external
+ * @return external闆嗗悎
+ */
+ public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal);
+
+}
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
new file mode 100644
index 0000000..4c05ebf
--- /dev/null
+++ b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java
@@ -0,0 +1,48 @@
+package com.ard.alarm.external.service.impl;
+
+import java.util.List;
+
+import com.ard.alarm.external.domain.ArdEquipExternal;
+import com.ard.alarm.external.mapper.ArdEquipExternalMapper;
+import com.ard.alarm.external.service.IArdEquipExternalService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * externalService涓氬姟灞傚鐞�
+ *
+ * @author zj
+ * @date 2023-03-13
+ */
+@Service
+public class ArdEquipExternalServiceImpl implements IArdEquipExternalService
+{
+ @Autowired
+ private ArdEquipExternalMapper ardEquipExternalMapper;
+
+ /**
+ * 鏌ヨexternal
+ *
+ * @param id external涓婚敭
+ * @return external
+ */
+ @Override
+ public ArdEquipExternal selectArdEquipExternalById(String id)
+ {
+ return ardEquipExternalMapper.selectArdEquipExternalById(id);
+ }
+
+ /**
+ * 鏌ヨ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/alarm/tube/service/TubeAlarmService.java b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
index ee7702e..ce6bd9c 100644
--- a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
+++ b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
@@ -7,6 +7,9 @@
import com.ard.utils.udp.NettyUdpServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -24,7 +27,8 @@
**/
@Service
@Slf4j(topic = "tube")
-public class TubeAlarmService {
+@Order(3)
+public class TubeAlarmService implements ApplicationRunner {
@Resource
NettyUdpServer nettyUdpServer;
@@ -32,15 +36,15 @@
private Integer udpPort;
@Value("${spring.netty.udp.enabled}")
private String UdpServerEnable;
-
- @PostConstruct
- public void init() {
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
if (UdpServerEnable.equals("false")) {
return;
}
nettyUdpServer.init(udpPort);
log.info("绠$嚎娉勯湶UDP鏈嶅姟宸插惎鍔�");
}
+
@Async("alarm")
public void alarmHandler(String message) {
@@ -79,4 +83,6 @@
log.error("tube鎶ヨ鏁版嵁鎺ㄩ�佸紓甯革細" + ex.getMessage());
}
}
+
+
}
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 cf3cd15..6eee57f 100644
--- a/src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java
+++ b/src/main/java/com/ard/utils/hiksdk/common/GlobalVariable.java
@@ -1,6 +1,7 @@
package com.ard.utils.hiksdk.common;
import com.ard.alarm.camera.domain.ArdCameras;
+import com.ard.alarm.external.domain.ArdEquipExternal;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
@@ -16,6 +17,8 @@
public class GlobalVariable {
//淇濆瓨鐩告満淇℃伅key:ip value:camera瀵硅薄
public static Map<String, ArdCameras> cameraMap = new HashMap<>();
+ //淇濆瓨鐩告満淇℃伅key:ip value:鎶ヨ涓绘満瀵硅薄
+ public static Map<String, ArdEquipExternal> alarmHostMap = new HashMap<>();
//淇濆瓨鐩告満鐧诲綍淇℃伅key:cameraId value:loginId
public static Map<String, Integer> loginMap = new HashMap<>();
}
diff --git a/src/main/java/com/ard/utils/hiksdk/domain/DeviceInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/DeviceInfo.java
new file mode 100644
index 0000000..c0da44c
--- /dev/null
+++ b/src/main/java/com/ard/utils/hiksdk/domain/DeviceInfo.java
@@ -0,0 +1,41 @@
+package com.ard.utils.hiksdk.domain;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @ClassName: DeviceInfo
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�07鏃�9:45
+ * @Version: 1.0
+ **/
+@Data
+public class DeviceInfo {
+ /**
+ * 璁惧ID
+ */
+ private String deviceId;
+ /**
+ * 璁惧绫诲瀷
+ */
+ private String deviceType;
+ /**
+ * ip
+ */
+ private String ip;
+
+ /**
+ * 绔彛
+ */
+ private Integer port;
+
+ /**
+ * 鐢ㄦ埛鍚�
+ */
+ private String username;
+
+ /**
+ * 瀵嗙爜
+ */
+ private String password;
+}
diff --git a/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java
index 6ae023e..6f768be 100644
--- a/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java
+++ b/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java
@@ -42,29 +42,8 @@
*/
Integer subSysNo;
/**
- * 鍏宠仈鐩告満id
+ * 鍏宠仈鎶ヨ涓绘満id
*/
- String cameraId;
- /**
- * 鍏宠仈鐩告満鍚嶇О
- */
- String cameraName;
- /**
- * 鍏宠仈鐩告満ip
- */
- String cameraIp;
-
- /**
- * 鍏宠仈鐩告満缁忓害
- */
- Double longitude;
- /**
- * 鍏宠仈鐩告満绾害
- */
- Double latitude;
- /**
- * 鍏宠仈鐩告満绫诲瀷
- */
- String cameraType;
+ String alarmHostId;
}
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 a8a32c0..991e60a 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
@@ -3,7 +3,11 @@
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
+import com.ard.alarm.camera.service.IArdCamerasService;
import com.ard.alarm.camera.service.impl.ArdCamerasServiceImpl;
+import com.ard.alarm.external.domain.ArdEquipExternal;
+import com.ard.alarm.external.service.IArdEquipExternalService;
+import com.ard.alarm.external.service.impl.ArdEquipExternalServiceImpl;
import com.ard.config.MinioClientSingleton;
import com.ard.utils.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
@@ -45,13 +49,10 @@
*/
@Override
public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
- ArdCamerasServiceImpl ardCamerasService = SpringTool.getApplicationContext().getBean(ArdCamerasServiceImpl.class);
+
String sDeviceIP = ByteUtils.bytesToStringZh(pAlarmer.sDeviceIP);
Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort);
- ArdCameras ardCameras = new ArdCameras();
- ardCameras.setIp(sDeviceIP);
- ardCameras.setPort(wLinkPort);
- ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0);
+
String sTime;//浜嬩欢鏃堕棿
String url;//浜嬩欢鍥剧墖
alarmEventInfo info;//浜嬩欢淇℃伅
@@ -60,6 +61,11 @@
switch (lCommand) {
case HCNetSDK.COMM_ALARM_RULE:
//region 琛屼负鍒嗘瀽淇℃伅
+ ArdCameras ardCameras = new ArdCameras();
+ ardCameras.setIp(sDeviceIP);
+ ardCameras.setPort(wLinkPort);
+ IArdCamerasService ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class);
+ ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0);
log.info("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand));
HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM();
strVcaAlarm.write();
@@ -146,6 +152,13 @@
break;
case HCNetSDK.COMM_ALARMHOST_CID_ALARM:
log.info("鎶ヨ涓绘満 CID 鎶ュ憡鎶ヨ涓婁紶");
+ ArdEquipExternal ardEquipExternal = new ArdEquipExternal();
+ ardEquipExternal.setIp(sDeviceIP);
+ ardEquipExternal.setPort(wLinkPort);
+ IArdEquipExternalService ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class);
+ ardEquipExternal = ardEquipExternalService.selectArdEquipExternalList(ardEquipExternal).get(0);
+
+
HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM();
netDvrCidAlarm.write();
Pointer pCIDInfo = netDvrCidAlarm.getPointer();
@@ -202,7 +215,7 @@
String wDefenceName = "";
if (!bySubSysNo.equals(-1)) {
CameraCmd cmd = new CameraCmd();
- cmd.setCameraId(ardcamere.getId());
+ cmd.setCameraId(ardEquipExternal.getId());
cmd.setWZoneIndex(wDefenceNo);
wDefenceName = HikClientUtil.getDefenseZoneName(cmd);
}
@@ -212,15 +225,12 @@
ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo();
externalAlarmEventInfo.setAlarmId(sCIDCode);
externalAlarmEventInfo.setAlarmName(sCIDDescribe);
- externalAlarmEventInfo.setDefenseId((wDefenceNo + 1) );
+ externalAlarmEventInfo.setDefenseId((wDefenceNo + 1));
externalAlarmEventInfo.setDefenseName(wDefenceName);
externalAlarmEventInfo.setSubSysNo(bySubSysNo);
externalAlarmEventInfo.setAlarmType(byReportType);
externalAlarmEventInfo.setAlarmTime(struTriggerTime);
- externalAlarmEventInfo.setCameraId(ardcamere.getId());
- externalAlarmEventInfo.setCameraName(ardcamere.getName());
- externalAlarmEventInfo.setCameraIp(ardcamere.getIp());
- externalAlarmEventInfo.setCameraType(ardcamere.getGdtype());
+ externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId());
publishMqtt(externalAlarmEventInfo);
break;
default:
@@ -291,14 +301,14 @@
"銆怚P銆�" + info.getCameraIp() + "銆愰�氶亾銆�" + info.getCameraChannel() + "銆愬瀷鍙枫��" + info.getCameraType() +
"銆愬浘鐗囥��" + info.getPicUrl() + "銆愬潗鏍囥��" + info.getLongitude() + "," + info.getLatitude());
}
+
/**
* 鎵撳嵃澶栬仈鎶ヨ鏃ュ織
*/
private void printLog(ExternalAlarmEventInfo info) {
log.info("銆愭姤璀D銆�" + info.getAlarmId() + "銆愭姤璀﹀悕绉般��" + info.getAlarmName() +
"銆愰槻鍖篒D銆�" + info.getDefenseId() + "銆愰槻鍖哄悕绉般��" + info.getDefenseName() + "銆愮被鍨嬨��" + info.getAlarmType() +
- "銆愭椂闂淬��" + info.getAlarmTime() + "銆愮浉鏈篒D銆�" + info.getCameraId() + "銆愮浉鏈恒��" + info.getCameraName() +
- "銆怚P銆�" + info.getCameraIp() + "銆愬瀷鍙枫��" + info.getCameraType());
+ "銆愭椂闂淬��" + info.getAlarmTime() + "銆愭姤璀︿富鏈篒D銆�" + info.getAlarmHostId());
}
/**
@@ -308,13 +318,15 @@
// printLog(info);
MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info));
}
+
/**
* 澶栬仈鎶ヨ鎺ㄩ�乵qtt
*/
private void publishMqtt(ExternalAlarmEventInfo info) {
printLog(info);
- MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info));
+ MqttConsumer.publish(2, false, "external", JSON.toJSONString(info));
}
+
/**
* 鏃堕棿鏍煎紡鍖�
*/
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 62455b1..5e9590d 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
@@ -2,8 +2,10 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
+import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.utils.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
+import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.hiksdk.util.minio.MinioUtils;
import com.sun.jna.Native;
@@ -11,12 +13,13 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
-import static com.ard.utils.hiksdk.common.GlobalVariable.cameraMap;
/**
@@ -126,7 +129,7 @@
* @鍒涘缓鏃堕棿 2023/1/17 16:12
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
- public static void login(ArdCameras camera) {
+ public static void login(DeviceInfo deviceInfo) {
// 鍒濆鍖�
if (!hCNetSDK.NET_DVR_Init()) {
log.error("SDK鍒濆鍖栧け璐�");
@@ -138,10 +141,10 @@
} else {
hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
}
- String m_sDeviceIP = camera.getIp();
- String m_sUsername = camera.getUsername();
- String m_sPassword = camera.getPassword();
- short m_sPort = camera.getPort().shortValue();
+ String m_sDeviceIP = deviceInfo.getIp();
+ String m_sUsername = deviceInfo.getUsername();
+ String m_sPassword = deviceInfo.getPassword();
+ short m_sPort = deviceInfo.getPort().shortValue();
//璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
hCNetSDK.NET_DVR_SetReconnect(100000, true);
@@ -162,7 +165,7 @@
//鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄� windowsSDK閲屾槸true鍜宖alse
m_strLoginInfo.bUseAsynLogin = true;
//寮傛鐧诲綍鍥炶皟
- m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera);
+ m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
m_strLoginInfo.write();
int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
if (i < 0) {
@@ -170,7 +173,6 @@
log.info("鐧诲綍寮傚父锛�" + errorCode);
}
}
-
/**
* @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈�
* @鍙傛暟 []
@@ -179,18 +181,48 @@
* @鍒涘缓鏃堕棿 2023/2/3 10:10
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
-
- public static void loginAll(List<ArdCameras> ardCameras) {
+ public static void loginAllCamera(List<ArdCameras> ardCameras) {
try {
- log.debug("鍔犺浇lib瀹屾垚锛�");
for (ArdCameras camera : ardCameras) {
Thread.sleep(100);
- login(camera);
+ DeviceInfo info=new DeviceInfo();
+ info.setDeviceId(camera.getId());
+ info.setIp(camera.getIp());
+ info.setPort(camera.getPort());
+ info.setUsername(camera.getUsername());
+ info.setPassword(camera.getPassword());
+ login(info);
String ip = camera.getIp();
- cameraMap.put(ip, camera);
+ GlobalVariable.cameraMap.put(ip, camera);
}
} catch (Exception ex) {
log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
+ * @鍙傛暟 []
+ * @杩斿洖鍊� void
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ * @淇敼浜哄拰鍏跺畠淇℃伅
+ */
+ public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal alarmHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info=new DeviceInfo();
+ info.setDeviceId(alarmHost.getId());
+ info.setIp(alarmHost.getIp());
+ info.setPort(alarmHost.getPort());
+ info.setUsername(alarmHost.getUsername());
+ info.setPassword(alarmHost.getPassword());
+ login(info);
+ String ip = alarmHost.getIp();
+ GlobalVariable.alarmHostMap.put(ip, alarmHost);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
}
}
@@ -269,7 +301,7 @@
logout(lUserID);
return lAlarmHandle;
} else {
- log.info("鐩告満甯冮槻鎴愬姛");
+ log.info("璁惧甯冮槻鎴愬姛");
return lAlarmHandle;
}
}
@@ -379,4 +411,6 @@
}
return name;
}
+
+
}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java
index c5ec4a2..4ee2bf5 100644
--- a/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java
+++ b/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java
@@ -3,6 +3,7 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.utils.hiksdk.common.GlobalVariable;
+import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
@@ -17,27 +18,20 @@
@Slf4j(topic = "hikSdk")
public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack {
- private ArdCameras camera;
- public LoginResultCallBack(ArdCameras camera) {
- this.camera = camera;
+ private DeviceInfo deviceInfo;
+ public LoginResultCallBack(DeviceInfo deviceInfo)
+ {
+ this.deviceInfo=deviceInfo;
}
-
@Override
public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) {
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
if (dwResult == 1) {
- GlobalVariable.loginMap.put(camera.getId(), lUserID);
- log.info(camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛");
- camera.setLoginId(lUserID);
- camera.setChannel((int) lpDeviceinfo.byChanNum);
+ GlobalVariable.loginMap.put(deviceInfo.getDeviceId(), lUserID);
+ log.info(deviceInfo.getIp() + ":" + deviceInfo.getPort() + "鐧诲綍鎴愬姛");
// 璁剧疆鎶ヨ鍥炶皟鍑芥暟锛屽缓绔嬫姤璀︿笂浼犻�氶亾锛堝惎鐢ㄥ竷闃诧級
HikClientUtil.setupAlarmChan(lUserID, -1);
} else {
- log.info(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触");
- camera.setChannel(0);
- camera.setLoginId(-1);
+ log.info(deviceInfo.getIp() + ":" + deviceInfo.getPort() + "鐧诲綍澶辫触");
}
return 1;
}
diff --git a/src/main/java/com/ard/utils/mqtt/MqttConsumer.java b/src/main/java/com/ard/utils/mqtt/MqttConsumer.java
index 144e233..55af6ec 100644
--- a/src/main/java/com/ard/utils/mqtt/MqttConsumer.java
+++ b/src/main/java/com/ard/utils/mqtt/MqttConsumer.java
@@ -1,12 +1,17 @@
package com.ard.utils.mqtt;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.expression.spel.ast.NullLiteral;
import org.springframework.stereotype.Component;
+
import java.io.UnsupportedEncodingException;
+
/**
* @Description: mqtt娑堣垂瀹㈡埛绔�
* @ClassName: MqttConsumer
@@ -16,6 +21,7 @@
**/
@Component
@Slf4j(topic = "mqtt")
+@Order(1)
public class MqttConsumer implements ApplicationRunner {
private static MqttClient client;
@@ -23,8 +29,7 @@
@Override
public void run(ApplicationArguments args) {
log.info("鍒濆鍖栧苟鍚姩mqtt......");
- if(PropertiesUtil.MQTT_ENABLED)
- {
+ if (PropertiesUtil.MQTT_ENABLED) {
this.connect();
}
}
@@ -49,7 +54,7 @@
}
/**
- * 鍒涘缓瀹㈡埛绔� --- 1 ---
+ * 鍒涘缓瀹㈡埛绔� --- 1 ---
*/
public void getClient() {
try {
@@ -63,7 +68,7 @@
}
/**
- * 鐢熸垚閰嶇疆瀵硅薄锛岀敤鎴峰悕锛屽瘑鐮佺瓑 --- 2 ---
+ * 鐢熸垚閰嶇疆瀵硅薄锛岀敤鎴峰悕锛屽瘑鐮佺瓑 --- 2 ---
*/
public MqttConnectOptions getOptions() {
MqttConnectOptions options = new MqttConnectOptions();
@@ -81,7 +86,7 @@
}
/**
- * qos --- 3 ---
+ * qos --- 3 ---
*/
public int[] getQos(int length) {
@@ -101,7 +106,7 @@
}
/**
- * 瑁呰浇鍚勭瀹炰緥鍜岃闃呬富棰� --- 4 ---
+ * 瑁呰浇鍚勭瀹炰緥鍜岃闃呬富棰� --- 4 ---
*/
public void create(MqttConnectOptions options, String[] topic, int[] qos) {
try {
@@ -130,8 +135,8 @@
/**
* 鍙戝竷锛岄潪鎸佷箙鍖�
- *
- * qos鏍规嵁鏂囨。璁剧疆涓�1
+ * <p>
+ * qos鏍规嵁鏂囨。璁剧疆涓�1
*
* @param topic
* @param msg
@@ -144,30 +149,32 @@
* 鍙戝竷
*/
public static void publish(int qos, boolean retained, String topic, String pushMessage) {
- log.info("銆愪富棰樸��:" + topic + "銆恞os銆�:" + qos + "銆恜ushMessage銆�:" + pushMessage);
- MqttMessage message = new MqttMessage();
- message.setQos(qos);
- message.setRetained(retained);
- try {
- message.setPayload(pushMessage.getBytes("UTF-8"));
- } catch (UnsupportedEncodingException e) {
- log.error("mqtt缂栫爜寮傚父锛�" + e.getMessage());
- }
- MqttTopic mTopic = client.getTopic(topic);
- if (null == mTopic) {
- log.error("topic锛�" + topic + " 涓嶅瓨鍦�");
- }
- MqttDeliveryToken token;
- try {
- token = mTopic.publish(message);
- token.waitForCompletion();
- if (token.isComplete()) {
- log.info("娑堟伅鍙戦�佹垚鍔�");
+ if (client != null) {
+ log.info("銆愪富棰樸��:" + topic + "銆恞os銆�:" + qos + "銆恜ushMessage銆�:" + pushMessage);
+ MqttMessage message = new MqttMessage();
+ message.setQos(qos);
+ message.setRetained(retained);
+ try {
+ message.setPayload(pushMessage.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ log.error("mqtt缂栫爜寮傚父锛�" + e.getMessage());
}
- } catch (MqttPersistenceException e) {
- log.error("mqtt鎸佷箙寮傚父锛�" + e.getMessage());
- } catch (MqttException e) {
- log.error("mqtt寮傚父锛�" + e.getMessage());
+ MqttTopic mTopic = client.getTopic(topic);
+ if (null == mTopic) {
+ log.error("topic锛�" + topic + " 涓嶅瓨鍦�");
+ }
+ MqttDeliveryToken token;
+ try {
+ token = mTopic.publish(message);
+ token.waitForCompletion();
+ if (token.isComplete()) {
+ log.info("娑堟伅鍙戦�佹垚鍔�");
+ }
+ } catch (MqttPersistenceException e) {
+ log.error("mqtt鎸佷箙寮傚父锛�" + e.getMessage());
+ } catch (MqttException e) {
+ log.error("mqtt寮傚父锛�" + e.getMessage());
+ }
}
}
}
diff --git a/src/main/java/com/ard/utils/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/tcp/ClientInitialize.java
index 0fa3d9e..674d095 100644
--- a/src/main/java/com/ard/utils/tcp/ClientInitialize.java
+++ b/src/main/java/com/ard/utils/tcp/ClientInitialize.java
@@ -17,6 +17,9 @@
import io.netty.channel.socket.nio.NioSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@@ -34,7 +37,8 @@
*/
@Component
@Slf4j(topic = "netty")
-public class ClientInitialize {
+@Order(2)
+public class ClientInitialize implements ApplicationRunner {
@Resource
IArdEquipRadarService ardEquipRadarService;
@@ -119,8 +123,8 @@
/**
* 鍒濆鍖栨柟娉�
*/
- @PostConstruct
- public void initialize() {
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
if (!tcpClientEnable) {
return;
}
diff --git a/src/main/resources/mapper/ArdEquipExternalMapper.xml b/src/main/resources/mapper/ArdEquipExternalMapper.xml
new file mode 100644
index 0000000..646ba44
--- /dev/null
+++ b/src/main/resources/mapper/ArdEquipExternalMapper.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ard.alarm.external.mapper.ArdEquipExternalMapper">
+
+ <resultMap type="ArdEquipExternal" id="ArdEquipExternalResult">
+ <result property="id" column="id"/>
+ <result property="name" column="name"/>
+ <result property="type" column="type"/>
+ <result property="factory" column="factory"/>
+ <result property="ip" column="ip"/>
+ <result property="port" column="port"/>
+ <result property="username" column="username"/>
+ <result property="password" column="password"/>
+ <result property="longitude" column="longitude"/>
+ <result property="latitude" column="latitude"/>
+ <result property="altitude" column="altitude"/>
+ <result property="deptId" column="dept_id"/>
+ <result property="userId" column="user_id"/>
+ </resultMap>
+
+ <sql id="selectArdEquipExternalVo">
+ select c.id,
+ c.name,
+ c.type,
+ c.factory,
+ c.ip,
+ c.port,
+ c.username,
+ c.password,
+ c.longitude,
+ c.latitude,
+ c.altitude
+ from ard_equip_external c
+ </sql>
+
+ <select id="selectArdEquipExternalList" parameterType="ArdEquipExternal" resultMap="ArdEquipExternalResult">
+ <include refid="selectArdEquipExternalVo"/>
+ <where>
+ <if test="name != null and name != ''">and c.name like '%'||#{name}||'%'</if>
+ <if test="type != null and type != ''">and c.type = #{type}</if>
+ <if test="factory != null and factory != ''">and c.factory = #{factory}</if>
+ <if test="deptId != null ">and (c.dept_id = #{deptId} OR c.dept_id IN ( SELECT t.dept_id FROM sys_dept t
+ WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) ))
+ </if>
+ <if test="userId != null and userId != ''">and c.user_id = #{userId}</if>
+ </where>
+ </select>
+
+ <select id="selectArdEquipExternalById" parameterType="String" resultMap="ArdEquipExternalResult">
+ <include refid="selectArdEquipExternalVo"/>
+ where id = #{id}
+ </select>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3