From 092d7c56bb8653075b8f4b27220e69e6bb8e5d37 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 09 十一月 2023 16:49:26 +0800
Subject: [PATCH] 增加超脑业务
---
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 59 ++++
src/main/java/com/ard/utils/tcp/ClientHandler.java | 22 +
src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java | 57 ++++
src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 467 +++++++++++++++++++++--------------------
src/main/java/com/ard/alarm/radar/controller/RadarController.java | 15 +
src/main/java/com/ard/utils/other/ByteUtils.java | 29 ++
6 files changed, 387 insertions(+), 262 deletions(-)
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 723ab35..411eaf2 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
@@ -19,6 +19,8 @@
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
/**
* externalService涓氬姟灞傚鐞�
@@ -35,12 +37,12 @@
public static List<ArdEquipExternal> ardAlarmHostList = new ArrayList<>();
public static List<ArdEquipExternal> ardAccessHostList = new ArrayList<>();
-
- @Autowired
+ public static List<ArdEquipExternal> ardSuperBrainHostList = new ArrayList<>();
+ @Resource
private ArdEquipExternalMapper ardEquipExternalMapper;
@Override
- public void run(ApplicationArguments args){
+ public void run(ApplicationArguments args) {
//鑾峰彇鍏ㄩ儴娴峰悍鎶ヨ涓绘満灏濊瘯鐧诲綍
ArdEquipExternal alarmHost = new ArdEquipExternal();
alarmHost.setFactory("1");
@@ -55,6 +57,13 @@
ardAccessHostList = selectArdEquipExternalList(accessControlHost);
HikClientUtil.loginAllAccessControlHost(ardAccessHostList);
log.debug("闂ㄧ涓绘満灏濊瘯鐧诲綍");
+ //鑾峰彇鍏ㄩ儴瓒呰剳灏濊瘯鐧诲綍
+ ArdEquipExternal superBrainHost = new ArdEquipExternal();
+ superBrainHost.setFactory("1");
+ superBrainHost.setType("5");
+ ardSuperBrainHostList = selectArdEquipExternalList(superBrainHost);
+ HikClientUtil.loginAllSuperBrainHost(ardSuperBrainHostList);
+ log.debug("瓒呰剳灏濊瘯鐧诲綍");
//鍚屾浠诲姟
syncTask();
}
@@ -99,10 +108,10 @@
//endregion
//region 瀹氭椂鍚屾闂ㄧ涓绘満
- alarmHost = new ArdEquipExternal();
- alarmHost.setFactory("1");
- alarmHost.setType("6");
- List<ArdEquipExternal> newAccessHostList = selectArdEquipExternalList(alarmHost);
+ ArdEquipExternal accessHost = new ArdEquipExternal();
+ accessHost.setFactory("1");
+ accessHost.setType("6");
+ List<ArdEquipExternal> newAccessHostList = selectArdEquipExternalList(accessHost);
//闇�瑕佹洿鏂扮殑鏁版嵁
updateList = sameListWithDifferent(ardAccessHostList, newAccessHostList);
if (updateList.size() > 0) {
@@ -128,6 +137,36 @@
}
}
//endregion
+ //region 瀹氭椂鍚屾瓒呰剳
+ ArdEquipExternal superBrainHost = new ArdEquipExternal();
+ superBrainHost.setFactory("1");
+ superBrainHost.setType("5");
+ List<ArdEquipExternal> newSuperBrainList = selectArdEquipExternalList(superBrainHost);
+ //闇�瑕佹洿鏂扮殑鏁版嵁
+ updateList = sameListWithDifferent(ardSuperBrainHostList, newSuperBrainList);
+ if (updateList.size() > 0) {
+ HikClientUtil.logoutAllSuperBrainHost(updateList);
+ HikClientUtil.loginAllSuperBrainHost(updateList);
+ ardSuperBrainHostList.clear();
+ ardSuperBrainHostList.addAll(newSuperBrainList);
+ }
+ //闇�瑕佸垹闄ょ殑鏁版嵁
+ delList = diffList(ardSuperBrainHostList, newSuperBrainList);
+ if (delList.size() > 0) {
+ HikClientUtil.logoutAllSuperBrainHost(delList);
+ for (ArdEquipExternal ardEquipExternal : delList) {
+ ardSuperBrainHostList.remove(ardEquipExternal);
+ }
+ }
+ //闇�瑕佹柊澧炵殑鏁版嵁
+ inserList = diffList(newSuperBrainList, ardSuperBrainHostList);
+ if (inserList.size() > 0) {
+ HikClientUtil.loginAllSuperBrainHost(inserList);
+ for (ArdEquipExternal ardEquipExternal : inserList) {
+ ardSuperBrainHostList.add(ardEquipExternal);
+ }
+ }
+ //endregion
} catch (Exception e) {
log.error("鍚屾澶栬仈浠诲姟鎵ц鍑洪敊" + e.getMessage());
}
@@ -148,7 +187,7 @@
@Override
public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal) {
- QueryWrapper<ArdEquipExternal> queryWrapper=new QueryWrapper<>(ardEquipExternal);
+ QueryWrapper<ArdEquipExternal> queryWrapper = new QueryWrapper<>(ardEquipExternal);
return ardEquipExternalMapper.selectOne(queryWrapper);
}
@@ -160,7 +199,7 @@
*/
@Override
public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal) {
- QueryWrapper<ArdEquipExternal> queryWrapper=new QueryWrapper<>(ardEquipExternal);
+ QueryWrapper<ArdEquipExternal> queryWrapper = new QueryWrapper<>(ardEquipExternal);
return ardEquipExternalMapper.selectList(queryWrapper);
}
diff --git a/src/main/java/com/ard/alarm/radar/controller/RadarController.java b/src/main/java/com/ard/alarm/radar/controller/RadarController.java
index e4dfbad..72f02fb 100644
--- a/src/main/java/com/ard/alarm/radar/controller/RadarController.java
+++ b/src/main/java/com/ard/alarm/radar/controller/RadarController.java
@@ -9,12 +9,15 @@
import com.ard.utils.tcp.ClientInitialize;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
/**
* @Description: 闆疯揪鎺ュ彛
@@ -24,6 +27,7 @@
**/
@RestController
@RequestMapping("/radar")
+@Slf4j(topic = "netty")
public class RadarController {
@Resource
@@ -55,14 +59,19 @@
radarPosition[1] = latitude;
double distance = GisUtils.getDistance(radarPosition, targetPosition);
float angleInRadians = (float)Math.atan(distance / altitude);
- float t = 90-(float)Math.toDegrees(angleInRadians);
-
+ float t = (90-(float)Math.toDegrees(angleInRadians))*-1;
+ log.debug("distance锛�"+distance);
+ log.debug("p锛�"+p);
+ log.debug("t锛�"+t);
//鍙戦�佸憡璀﹀墠绔殑瑙掑害鎻愮ず
byte[] header = {0x01, 0x02, 0x01};//鍖呭ご
- byte[] payloadHeader = {0x10, 0x03, 0x40, 0x00};//璐熻浇澶�
+ byte[] payloadHeader = {0x10, 0x03, 0x20, 0x00};//璐熻浇澶�
byte[] distanceBytes = ByteUtils.decimalToBytes((int)distance);
+ distanceBytes=ByteUtils.toLittleEndian(distanceBytes);
byte[] pBytes = ByteUtils.floatToBytes(p);
+ pBytes=ByteUtils.toLittleEndian(pBytes);
byte[] tBytes = ByteUtils.floatToBytes(t);
+ tBytes=ByteUtils.toLittleEndian(tBytes);
byte[] resBytes=new byte[20];
byte[] payloadBody = ByteUtils.appendArrays(distanceBytes,pBytes,tBytes,resBytes);//璐熻浇
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 aea22b1..6e3ca3c 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
@@ -54,22 +54,23 @@
String sTime;//浜嬩欢鏃堕棿
String url = "";//浜嬩欢鍥剧墖
//lCommand鏄紶鐨勬姤璀︾被鍨�
- //log.debug("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand));
+ log.debug("鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand));
ArdCameras ardCameras = new ArdCameras();
ardCameras.setIp(sDeviceIP);
ardCameras.setPort(wLinkPort);
IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class);
List<ArdCameras> ardCamerasList = ardCamerasService.selectArdCamerasList(ardCameras);
- if (ardCamerasList.size() > 0) {
- ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0);
- switch (lCommand) {
- case HCNetSDK.COMM_ALARM_V30:
- //log.debug("绉诲姩渚︽祴");
- HCNetSDK.NET_DVR_ALARMINFO_V30 netDvrAlarminfoV30 = new HCNetSDK.NET_DVR_ALARMINFO_V30();
- netDvrAlarminfoV30.write();
- Pointer pNDAInfo = netDvrAlarminfoV30.getPointer();
- pNDAInfo.write(0, pAlarmInfo.getByteArray(0, netDvrAlarminfoV30.size()), 0, netDvrAlarminfoV30.size());
- netDvrAlarminfoV30.read();
+ switch (lCommand) {
+ //region 绉诲姩渚︽祴銆佽棰戜涪澶便�侀伄鎸°�両O淇″彿閲忕瓑鎶ヨ淇℃伅(V3.0浠ヤ笂鐗堟湰鏀寔鐨勮澶�)
+ case HCNetSDK.COMM_ALARM_V30:
+ //region 绉诲姩渚︽祴銆佽棰戜涪澶便�侀伄鎸°�両O淇″彿閲忕瓑鎶ヨ淇℃伅(V3.0浠ヤ笂鐗堟湰鏀寔鐨勮澶�)
+ HCNetSDK.NET_DVR_ALARMINFO_V30 netDvrAlarminfoV30 = new HCNetSDK.NET_DVR_ALARMINFO_V30();
+ netDvrAlarminfoV30.write();
+ Pointer pNDAInfo = netDvrAlarminfoV30.getPointer();
+ pNDAInfo.write(0, pAlarmInfo.getByteArray(0, netDvrAlarminfoV30.size()), 0, netDvrAlarminfoV30.size());
+ netDvrAlarminfoV30.read();
+ if (ardCamerasList.size() > 0) {
+ ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0);
switch (netDvrAlarminfoV30.dwAlarmType) {
case 3:
info = new CameraEventInfo();
@@ -90,21 +91,26 @@
publishMqtt(info);
break;
}
- case HCNetSDK.COMM_ALARM_RULE:
- //log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤");
- //region 琛屼负鍒嗘瀽淇℃伅
- HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM();
- strVcaAlarm.write();
- Pointer pVCAInfo = strVcaAlarm.getPointer();
- pVCAInfo.write(0, pAlarmInfo.getByteArray(0, strVcaAlarm.size()), 0, strVcaAlarm.size());
- strVcaAlarm.read();
- Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID);
- sTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿
- String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip
- Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾
- info = new CameraEventInfo();
- info.setAlarmName("浜哄憳琛屼负鍒嗘瀽");
- info.setAlarmTime(sTime);
+ }
+ //endregion
+ break;
+ case HCNetSDK.COMM_ALARM_RULE:
+ //log.debug("琛屼负鍒嗘瀽淇℃伅鎶ヨ淇℃伅涓婃姤");
+ //region 寮傚父琛屼负璇嗗埆淇℃伅
+ HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM();
+ strVcaAlarm.write();
+ Pointer pVCAInfo = strVcaAlarm.getPointer();
+ pVCAInfo.write(0, pAlarmInfo.getByteArray(0, strVcaAlarm.size()), 0, strVcaAlarm.size());
+ strVcaAlarm.read();
+ Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID);
+ sTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿
+ String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip
+ Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾
+ info = new CameraEventInfo();
+ info.setAlarmName("浜哄憳琛屼负鍒嗘瀽");
+ info.setAlarmTime(sTime);
+ if (ardCamerasList.size() > 0) {
+ ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0);
info.setCameraName(camera.getName());
info.setCameraId(camera.getId());
info.setCameraIp(camera.getIp());
@@ -171,217 +177,218 @@
// log.debug("鏈煡琛屼负浜嬩欢绫诲瀷:" + strVcaAlarm.struRuleInfo.wEventTypeEx);
break;
}
- //endregion
- break;
- case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT:
- //log.debug("浜鸿劯妫�娴嬩簨浠朵笂鎶�(鏆備笉瑙f瀽)");
- break;
- case HCNetSDK.COMM_GISINFO_UPLOAD:
- //log.debug("GPS鎶ヨ淇℃伅涓婃姤(鏆備笉瑙f瀽)");
- break;
- case HCNetSDK.COMM_ALARMHOST_CID_ALARM:
- //log.debug("鎶ヨ涓绘満CID鎶ュ憡鎶ヨ涓婃姤");
- //region 鎶ヨ涓绘満鎶ヨ澶勭悊
- ArdEquipExternal ardEquipExternal = new ArdEquipExternal();
- ardEquipExternal.setIp(sDeviceIP);
- ardEquipExternal.setPort(wLinkPort);
- IArdEquipExternalService ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class);
- ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal);
+ }
+ //endregion
+ break;
+ case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT:
+ //log.debug("浜鸿劯妫�娴嬩簨浠朵笂鎶�(鏆備笉瑙f瀽)");
+ break;
+ case HCNetSDK.COMM_GISINFO_UPLOAD:
+ //log.debug("GPS鎶ヨ淇℃伅涓婃姤(鏆備笉瑙f瀽)");
+ break;
+ case HCNetSDK.COMM_ALARMHOST_CID_ALARM:
+ log.debug("鎶ヨ涓绘満CID鎶ュ憡鎶ヨ涓婃姤");
+ //region 鎶ヨ涓绘満鎶ヨ澶勭悊
+ ArdEquipExternal ardEquipExternal = new ArdEquipExternal();
+ ardEquipExternal.setIp(sDeviceIP);
+ ardEquipExternal.setPort(wLinkPort);
+ IArdEquipExternalService ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class);
+ ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal);
- HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM();
- netDvrCidAlarm.write();
- Pointer pCIDInfo = netDvrCidAlarm.getPointer();
- pCIDInfo.write(0, pAlarmInfo.getByteArray(0, netDvrCidAlarm.size()), 0, netDvrCidAlarm.size());
- netDvrCidAlarm.read();
- //CID浜嬩欢鍚�
- String sCIDCode = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDCode);//CID浜嬩欢鍚�
- //CID浜嬩欢鍚�
- //String sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);//CID浜嬩欢鍚�
- int position = ByteUtils.findIndexOfDoubleZero(netDvrCidAlarm.sCIDDescribe);
- String sCIDDescribe;
- if (position != -1) {
- byte[] result = new byte[position];
- System.arraycopy(netDvrCidAlarm.sCIDDescribe, 0, result, 0, position);
- sCIDDescribe = ByteUtils.bytesToStringZh(result);
- } else {
- sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);
- }
- //瑙﹀彂鎶ヨ鐨勬椂闂寸偣
- String struTriggerTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struTriggerTime), "yyyy-M-d H:m:s");
- //涓婁紶鎶ヨ鐨勬椂闂寸偣
- String struUploadTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struUploadTime), "yyyy-M-d H:m:s");
- //鎶ュ憡绫诲瀷
- String byReportType = "";
- switch (netDvrCidAlarm.byReportType) {
- case 1:
- byReportType = "闃插尯鎶ヨ";
- break;
- case 2:
- byReportType = "瑙嗛鎶ヨ";
- break;
- case 3:
- byReportType = "杞槻鍖烘姤璀�";
- break;
- case 4:
- byReportType = "鎸熸寔鎶ヨ";
- break;
- case 5:
- byReportType = "闃叉媶鎶ヨ ";
- break;
- case 6:
- byReportType = "鎿嶄綔鎶ュ憡 ";
- break;
- case 7:
- byReportType = "寮傚父鎶ュ憡 ";
- break;
- }
- //瀛愮郴缁熷彿
- Integer bySubSysNo = Integer.valueOf(netDvrCidAlarm.bySubSysNo);
- //闃插尯鍙� 璧峰0
- Integer wDefenceNo = Integer.valueOf(netDvrCidAlarm.wDefenceNo);
- //闃插尯鍚嶇О
- String wDefenceName = "";
- if (!bySubSysNo.equals(-1)) {
- CameraCmd cmd = new CameraCmd();
- cmd.setCameraId(ardEquipExternal.getId());
- cmd.setWZoneIndex(wDefenceNo);
- wDefenceName = HikClientUtil.getDefenseZoneName(cmd);
- }
- if (sCIDDescribe.contains("鎭㈠")) {
- return true;
- }
-
- ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo();
- externalAlarmEventInfo.setAlarmId(sCIDCode);
- externalAlarmEventInfo.setAlarmName(sCIDDescribe);
- externalAlarmEventInfo.setDefenseId((wDefenceNo + 1));
- externalAlarmEventInfo.setDefenseName(wDefenceName);
- externalAlarmEventInfo.setSubSysNo(bySubSysNo);
- externalAlarmEventInfo.setAlarmType(byReportType);
- externalAlarmEventInfo.setAlarmTime(struTriggerTime);
- externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId());
- publishMqtt(externalAlarmEventInfo);
- //endregion
- break;
- case HCNetSDK.COMM_ALARM_ACS:
- //region 闂ㄧ涓绘満鎶ヨ澶勭悊
- ArdEquipExternal accessControlHost = new ArdEquipExternal();
- accessControlHost.setIp(sDeviceIP);
- accessControlHost.setPort(wLinkPort);
- ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class);
- accessControlHost = ardEquipExternalService.selectArdEquipExternal(accessControlHost);
- HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO();
- strACSInfo.write();
- Pointer acsInfo = strACSInfo.getPointer();
- acsInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size());
- strACSInfo.read();
- int dwMajor = strACSInfo.dwMajor;
-
- if (dwMajor != 5) {
- //鍙幏鍙栦簨浠�
- // log.debug("闈炰簨浠舵姤璀︽暟鎹笂鎶�(鏆備笉瑙f瀽)");
+ HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM();
+ netDvrCidAlarm.write();
+ Pointer pCIDInfo = netDvrCidAlarm.getPointer();
+ pCIDInfo.write(0, pAlarmInfo.getByteArray(0, netDvrCidAlarm.size()), 0, netDvrCidAlarm.size());
+ netDvrCidAlarm.read();
+ //CID浜嬩欢鍚�
+ String sCIDCode = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDCode);//CID浜嬩欢鍚�
+ //CID浜嬩欢鍚�
+ //String sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);//CID浜嬩欢鍚�
+ int position = ByteUtils.findIndexOfDoubleZero(netDvrCidAlarm.sCIDDescribe);
+ String sCIDDescribe;
+ if (position != -1) {
+ byte[] result = new byte[position];
+ System.arraycopy(netDvrCidAlarm.sCIDDescribe, 0, result, 0, position);
+ sCIDDescribe = ByteUtils.bytesToStringZh(result);
+ } else {
+ sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);
+ }
+ //瑙﹀彂鎶ヨ鐨勬椂闂寸偣
+ String struTriggerTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struTriggerTime), "yyyy-M-d H:m:s");
+ //涓婁紶鎶ヨ鐨勬椂闂寸偣
+ String struUploadTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struUploadTime), "yyyy-M-d H:m:s");
+ //鎶ュ憡绫诲瀷
+ String byReportType = "";
+ switch (netDvrCidAlarm.byReportType) {
+ case 1:
+ byReportType = "闃插尯鎶ヨ";
break;
- }
-
- int dwMinor = strACSInfo.dwMinor;
- if (dwMinor != 80 && dwMinor != 104) {
- //鍙В鏋愮湡浜烘娴嬪け璐ュ拰浜鸿劯鎶撴媿澶辫触鐨勬绫诲瀷浜嬩欢
+ case 2:
+ byReportType = "瑙嗛鎶ヨ";
break;
- }
- String alarmType = "";
- switch (dwMinor) {
- case 104:
- alarmType = "鐪熶汉妫�娴嬪け璐�";
- break;
- case 80:
- alarmType = "浜鸿劯鎶撴媿澶辫触";
- break;
- }
- log.debug("闂ㄧ涓绘満鎶ヨ涓婁紶:" + alarmType);
- String alarmTime = DateUtils.convertDate(parseAlarmTime(strACSInfo.struTime), "yyyy-M-d H:m:s");
+ case 3:
+ byReportType = "杞槻鍖烘姤璀�";
+ break;
+ case 4:
+ byReportType = "鎸熸寔鎶ヨ";
+ break;
+ case 5:
+ byReportType = "闃叉媶鎶ヨ ";
+ break;
+ case 6:
+ byReportType = "鎿嶄綔鎶ュ憡 ";
+ break;
+ case 7:
+ byReportType = "寮傚父鎶ュ憡 ";
+ break;
+ }
+ //瀛愮郴缁熷彿
+ Integer bySubSysNo = Integer.valueOf(netDvrCidAlarm.bySubSysNo);
+ //闃插尯鍙� 璧峰0
+ Integer wDefenceNo = Integer.valueOf(netDvrCidAlarm.wDefenceNo);
+ //闃插尯鍚嶇О
+ String wDefenceName = "";
+ if (!bySubSysNo.equals(-1)) {
+ CameraCmd cmd = new CameraCmd();
+ cmd.setCameraId(ardEquipExternal.getId());
+ cmd.setWZoneIndex(wDefenceNo);
+ wDefenceName = HikClientUtil.getDefenseZoneName(cmd);
+ }
+ if (sCIDDescribe.contains("鎭㈠")) {
+ return true;
+ }
- //浜嬩欢鍥剧墖澶勭悊
- int dwPicDataLen = strACSInfo.dwPicDataLen;
- if (dwPicDataLen > 0) {
- try {
- //灏嗗瓧鑺傚啓鍏ユ枃浠�
- long offset = 0;
- ByteBuffer buffers = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen);
- byte[] bytes = new byte[strACSInfo.dwPicDataLen];
- buffers.rewind();
- buffers.get(bytes);
- InputStream input = new ByteArrayInputStream(bytes);
- String bucketName = "pic";
- String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg";
- boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG");
- if (uploadObject) {
- url = MinioUtil.getBucketObjectUrl(bucketName, objectName);
- //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
- }
- } catch (Exception e) {
- log.error("鍥剧墖淇濆瓨澶辫触");
+ ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo();
+ externalAlarmEventInfo.setAlarmId(sCIDCode);
+ externalAlarmEventInfo.setAlarmName(sCIDDescribe);
+ externalAlarmEventInfo.setDefenseId((wDefenceNo + 1));
+ externalAlarmEventInfo.setDefenseName(wDefenceName);
+ externalAlarmEventInfo.setSubSysNo(bySubSysNo);
+ externalAlarmEventInfo.setAlarmType(byReportType);
+ externalAlarmEventInfo.setAlarmTime(struTriggerTime);
+ externalAlarmEventInfo.setAlarmHostId(ardEquipExternal.getId());
+ publishMqtt(externalAlarmEventInfo);
+ //endregion
+ break;
+ case HCNetSDK.COMM_ALARM_ACS:
+ log.debug("闂ㄧ涓绘満鎶ヨ涓婃姤");
+ //region 闂ㄧ涓绘満鎶ヨ澶勭悊
+ ArdEquipExternal accessControlHost = new ArdEquipExternal();
+ accessControlHost.setIp(sDeviceIP);
+ accessControlHost.setPort(wLinkPort);
+ ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class);
+ accessControlHost = ardEquipExternalService.selectArdEquipExternal(accessControlHost);
+ HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO();
+ strACSInfo.write();
+ Pointer acsInfo = strACSInfo.getPointer();
+ acsInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size());
+ strACSInfo.read();
+ int dwMajor = strACSInfo.dwMajor;
+
+ if (dwMajor != 5) {
+ //鍙幏鍙栦簨浠�
+ // log.debug("闈炰簨浠舵姤璀︽暟鎹笂鎶�(鏆備笉瑙f瀽)");
+ break;
+ }
+
+ int dwMinor = strACSInfo.dwMinor;
+ if (dwMinor != 80 && dwMinor != 104) {
+ //鍙В鏋愮湡浜烘娴嬪け璐ュ拰浜鸿劯鎶撴媿澶辫触鐨勬绫诲瀷浜嬩欢
+ break;
+ }
+ String alarmType = "";
+ switch (dwMinor) {
+ case 104:
+ alarmType = "鐪熶汉妫�娴嬪け璐�";
+ break;
+ case 80:
+ alarmType = "浜鸿劯鎶撴媿澶辫触";
+ break;
+ }
+ log.debug("闂ㄧ涓绘満鎶ヨ涓婁紶:" + alarmType);
+ String alarmTime = DateUtils.convertDate(parseAlarmTime(strACSInfo.struTime), "yyyy-M-d H:m:s");
+
+ //浜嬩欢鍥剧墖澶勭悊
+ int dwPicDataLen = strACSInfo.dwPicDataLen;
+ if (dwPicDataLen > 0) {
+ try {
+ //灏嗗瓧鑺傚啓鍏ユ枃浠�
+ long offset = 0;
+ ByteBuffer buffers = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen);
+ byte[] bytes = new byte[strACSInfo.dwPicDataLen];
+ buffers.rewind();
+ buffers.get(bytes);
+ InputStream input = new ByteArrayInputStream(bytes);
+ String bucketName = "pic";
+ String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg";
+ boolean uploadObject = MinioUtil.uploadObject(bucketName, objectName, input, input.available(), "image/JPEG");
+ if (uploadObject) {
+ url = MinioUtil.getBucketObjectUrl(bucketName, objectName);
+ //log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
}
+ } catch (Exception e) {
+ log.error("鍥剧墖淇濆瓨澶辫触");
}
- HCNetSDK.NET_DVR_ACS_EVENT_INFO struAcsEventInfo = strACSInfo.struAcsEventInfo;
- int byType = struAcsEventInfo.byType;
- String defenseType = "";
- switch (byType) {
- case 0:
- defenseType = "鍗虫椂闃插尯";
- break;
- case 1:
- defenseType = "24灏忔椂闃插尯";
- break;
- case 2:
- defenseType = "寤舵椂闃插尯";
- break;
- case 3:
- defenseType = "鍐呴儴闃插尯";
- break;
- case 4:
- defenseType = "閽ュ寵闃插尯";
- break;
- case 5:
- defenseType = "鐏闃插尯";
- break;
- case 6:
- defenseType = "鍛ㄧ晫闃插尯";
- break;
- case 7:
- defenseType = "24灏忔椂鏃犲0闃插尯";
- break;
- case 8:
- defenseType = "24灏忔椂杈呭姪闃插尯";
- break;
- case 9:
- defenseType = "24灏忔椂闇囧姩闃插尯";
- break;
- case 10:
- defenseType = "闂ㄧ绱ф�ュ紑闂ㄩ槻鍖�";
- break;
- case 11:
- defenseType = "闂ㄧ绱ф�ュ叧闂ㄩ槻鍖�";
- break;
- default:
- defenseType = "鏃�";
- break;
- }
- AccessControlHostEventInfo accessControlHostEventInfo = new AccessControlHostEventInfo();
- accessControlHostEventInfo.setSerialNo(struAcsEventInfo.dwSerialNo);
- accessControlHostEventInfo.setAlarmType(alarmType);
- accessControlHostEventInfo.setDoorNo(struAcsEventInfo.dwDoorNo);
- accessControlHostEventInfo.setDefenseType(defenseType);
- accessControlHostEventInfo.setAlarmTime(alarmTime);
- accessControlHostEventInfo.setPicUrl(url);
- accessControlHostEventInfo.setAcsId(accessControlHost.getId());
- publishMqtt(accessControlHostEventInfo);
- //endregion
- break;
- default:
- // log.debug("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand));
- break;
+ }
+ HCNetSDK.NET_DVR_ACS_EVENT_INFO struAcsEventInfo = strACSInfo.struAcsEventInfo;
+ int byType = struAcsEventInfo.byType;
+ String defenseType = "";
+ switch (byType) {
+ case 0:
+ defenseType = "鍗虫椂闃插尯";
+ break;
+ case 1:
+ defenseType = "24灏忔椂闃插尯";
+ break;
+ case 2:
+ defenseType = "寤舵椂闃插尯";
+ break;
+ case 3:
+ defenseType = "鍐呴儴闃插尯";
+ break;
+ case 4:
+ defenseType = "閽ュ寵闃插尯";
+ break;
+ case 5:
+ defenseType = "鐏闃插尯";
+ break;
+ case 6:
+ defenseType = "鍛ㄧ晫闃插尯";
+ break;
+ case 7:
+ defenseType = "24灏忔椂鏃犲0闃插尯";
+ break;
+ case 8:
+ defenseType = "24灏忔椂杈呭姪闃插尯";
+ break;
+ case 9:
+ defenseType = "24灏忔椂闇囧姩闃插尯";
+ break;
+ case 10:
+ defenseType = "闂ㄧ绱ф�ュ紑闂ㄩ槻鍖�";
+ break;
+ case 11:
+ defenseType = "闂ㄧ绱ф�ュ叧闂ㄩ槻鍖�";
+ break;
+ default:
+ defenseType = "鏃�";
+ break;
+ }
+ AccessControlHostEventInfo accessControlHostEventInfo = new AccessControlHostEventInfo();
+ accessControlHostEventInfo.setSerialNo(struAcsEventInfo.dwSerialNo);
+ accessControlHostEventInfo.setAlarmType(alarmType);
+ accessControlHostEventInfo.setDoorNo(struAcsEventInfo.dwDoorNo);
+ accessControlHostEventInfo.setDefenseType(defenseType);
+ accessControlHostEventInfo.setAlarmTime(alarmTime);
+ accessControlHostEventInfo.setPicUrl(url);
+ accessControlHostEventInfo.setAcsId(accessControlHost.getId());
+ publishMqtt(accessControlHostEventInfo);
+ //endregion
+ break;
+ default:
+ log.debug("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand));
+ break;
- }
}
return true;
}
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 ee4b07d..24e4662 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
@@ -124,7 +124,7 @@
int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
if (i < 0) {
int errorCode = hCNetSDK.NET_DVR_GetLastError();
- log.info("鐧诲綍寮傚父锛�" + errorCode);
+ log.error("鐧诲綍寮傚父锛�" + errorCode);
}
}
@@ -221,7 +221,7 @@
// GlobalVariable.alarmHostMap.put(key, alarmHost);
}
} catch (Exception ex) {
- log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+ log.error("鐧诲綍鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
}
}
@@ -245,7 +245,7 @@
// GlobalVariable.alarmHostMap.remove(key);
}
} catch (Exception ex) {
- log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ log.error("鐧诲嚭鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
}
}
@@ -270,7 +270,7 @@
// GlobalVariable.accessHostMap.put(key, accessControlHost);
}
} catch (Exception ex) {
- log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+ log.error("鐧诲綍鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage());
}
}
@@ -294,10 +294,57 @@
// GlobalVariable.accessHostMap.remove(key);
}
} catch (Exception ex) {
- log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+ log.error("鐧诲嚭鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夎秴鑴�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal superBrainHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(superBrainHost.getId());
+ info.setIp(superBrainHost.getIp());
+ info.setPort(superBrainHost.getPort());
+ info.setUsername(superBrainHost.getUsername());
+ info.setPassword(superBrainHost.getPassword());
+ login(info);
+//
+// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
+// GlobalVariable.accessHostMap.put(key, accessControlHost);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲綍鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
}
}
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夎秴鑴�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal superBrainHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(superBrainHost.getId());
+ info.setIp(superBrainHost.getIp());
+ info.setPort(superBrainHost.getPort());
+ info.setUsername(superBrainHost.getUsername());
+ info.setPassword(superBrainHost.getPassword());
+ logout(info);
+// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
+// GlobalVariable.accessHostMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
+ }
+ }
/**
* 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
@@ -323,7 +370,7 @@
HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
// 鏅鸿兘浜ら�氬竷闃蹭紭鍏堢骇锛�0 - 涓�绛夌骇锛堥珮锛夛紝1 - 浜岀瓑绾э紙涓級锛�2 - 涓夌瓑绾э紙浣庯級
- m_strAlarmInfo.byLevel = 2;
+ m_strAlarmInfo.byLevel = 0;
// 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT)
m_strAlarmInfo.byAlarmInfoType = 1;
// 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�)
diff --git a/src/main/java/com/ard/utils/other/ByteUtils.java b/src/main/java/com/ard/utils/other/ByteUtils.java
index bda4b8c..0c11f68 100644
--- a/src/main/java/com/ard/utils/other/ByteUtils.java
+++ b/src/main/java/com/ard/utils/other/ByteUtils.java
@@ -30,13 +30,27 @@
* byte鏁扮粍杞腑鏂囧瓧绗︿覆
*/
public static String bytesToStringZh(byte[] bytes) {
- ByteBuffer buffer = ByteBuffer.wrap(bytes); // byteArray 鏄寘鍚瓧鑺傛暟缁勭殑鍙橀噺
+ //ByteBuffer buffer = ByteBuffer.wrap(bytes); // byteArray 鏄寘鍚瓧鑺傛暟缁勭殑鍙橀噺
+ //try {
+ // return new String(buffer.array(), "GBK");
+ //} catch (UnsupportedEncodingException e) {
+ // e.printStackTrace();
+ //}
+ //return "";
+ String zhStr = "";
try {
- return new String(buffer.array(), "GBK");
+ int position = ByteUtils.findIndexOfDoubleZero(bytes);
+ if (position != -1) {
+ byte[] result = new byte[position];
+ System.arraycopy(bytes, 0, result, 0, position);
+ zhStr = new String(result, "GBK");
+ } else {
+ zhStr = new String(bytes, "GBK");
+ }
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
- return "";
+ return zhStr;
}
/**
@@ -67,8 +81,13 @@
* byte鏁扮粍杞暣鍨�
*/
public static int bytesToDecimal(byte[] byteArray) {
- ByteBuffer buffer = ByteBuffer.wrap(byteArray); // byteArray 鏄寘鍚瓧鑺傛暟缁勭殑鍙橀噺
- return buffer.getInt();
+ //ByteBuffer buffer = ByteBuffer.wrap(byteArray); // byteArray 鏄寘鍚瓧鑺傛暟缁勭殑鍙橀噺
+ //return buffer.getInt();
+ int decimalValue = 0;
+ for (int i = 0; i < byteArray.length; i++) {
+ decimalValue = (decimalValue << 8) | (byteArray[i] & 0xFF);
+ }
+ return decimalValue;
}
diff --git a/src/main/java/com/ard/utils/tcp/ClientHandler.java b/src/main/java/com/ard/utils/tcp/ClientHandler.java
index 15258ce..0063611 100644
--- a/src/main/java/com/ard/utils/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/tcp/ClientHandler.java
@@ -175,7 +175,7 @@
if (!crc32Check) {
log.debug("CRC32鏍¢獙涓嶉�氳繃");
} else {
- log.debug("CRC32鏍¢獙閫氳繃");
+ //log.debug("CRC32鏍¢獙閫氳繃");
}
//endregion
//log.info("鍘熷鏁版嵁:" + DatatypeConverter.printHexBinary(data));
@@ -188,6 +188,7 @@
// log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//鏈夋晥璐熻浇澶у皬
payloadSize = ByteUtils.toLittleEndian(payloadSize);
+ //log.info("payloadSize:" + DatatypeConverter.printHexBinary(payloadSize));
int payloadSizeToDecimal = ByteUtils.bytesToDecimal(payloadSize);
// log.info("鏈夋晥璐熻浇澶у皬(杞暣鍨�):" + payloadSizeToDecimal);
//endregion
@@ -461,13 +462,17 @@
log.debug("鏂逛綅:" + tx);
byte[] fTy = Arrays.copyOfRange(data, 12, 16);
fTy = ByteUtils.toLittleEndian(fTy);
- float ty= ByteUtils.bytesToFloat(fTy);
+ float ty = ByteUtils.bytesToFloat(fTy);
+ if (ty < 0) {
+ ty += 360;
+ }
log.debug("淇话:" + ty);
- Map<String,Object>forceGuideMap=new HashMap<>();
- forceGuideMap.put("p",tx);
- forceGuideMap.put("t",ty);
- forceGuideMap.put("z",1);
- forceGuideMap.put("radarId",radarId);
+ Map<String, Object> forceGuideMap = new HashMap<>();
+ forceGuideMap.put("distance", distance);
+ forceGuideMap.put("p", tx);
+ forceGuideMap.put("t", ty);
+ forceGuideMap.put("radarId", radarId);
+ log.debug("寮哄埗寮曞淇℃伅" + forceGuideMap);
//endregion
MqttProducer.publish(2, false, "radarForceGuide", JSON.toJSONString(forceGuideMap));
}
@@ -475,5 +480,4 @@
log.error("闆疯揪鎶ユ枃瑙f瀽寮傚父:" + ex.getMessage());
}
}
-
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3