From b95df429267d2d4932c4b604e9acdfc0617d06d4 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期五, 06 十月 2023 15:58:03 +0800
Subject: [PATCH] 雷达设备
---
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 274 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 207 insertions(+), 67 deletions(-)
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 7ace4c1..143ccdc 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,19 +2,22 @@
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.minio.MinioUtil;
+import com.ard.utils.other.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.ard.utils.spring.SpringUtils;
import com.sun.jna.Native;
import com.sun.jna.Platform;
+import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
-
-import static com.ard.utils.hiksdk.common.GlobalVariable.cameraMap;
/**
@@ -118,14 +121,10 @@
/**
* @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
- * @鍙傛暟 [dvrLogin]
- * @杩斿洖鍊� java.lang.Integer
* @鍒涘缓浜� 鍒樿嫃涔�
* @鍒涘缓鏃堕棿 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鍒濆鍖栧け璐�");
@@ -137,10 +136,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);
@@ -161,7 +160,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) {
@@ -171,22 +170,48 @@
}
/**
+ * @鎻忚堪 鐢ㄦ埛娉ㄩ攢
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/1/17 16:12
+ */
+ public static void logout(DeviceInfo deviceInfo) {
+ String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort();
+ //鎾ら槻
+ if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) {
+ Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId());
+ boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle);
+ if (b) {
+ log.debug("璁惧銆�" + deviceIpPort + "銆戞挙闃叉垚鍔�");
+ }
+ }
+ //鐧诲嚭
+ if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) {
+ Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId());
+ boolean b = hCNetSDK.NET_DVR_Logout(lUserID);
+ if (b) {
+ log.debug("璁惧銆�" + deviceIpPort + "銆戞敞閿�鎴愬姛");
+ }
+ }
+ }
+
+ /**
* @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈�
- * @鍙傛暟 []
- * @杩斿洖鍊� void
* @鍒涘缓浜� 鍒樿嫃涔�
* @鍒涘缓鏃堕棿 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);
- String ip = camera.getIp();
- cameraMap.put(ip,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 key = camera.getIp() + ":" + camera.getPort();
+ GlobalVariable.cameraMap.put(key, camera);
}
} catch (Exception ex) {
log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
@@ -194,41 +219,126 @@
}
/**
- * @鎻忚堪 娉ㄩ攢鐧诲綍
- * @鍙傛暟 [dvrLogin]
- * @杩斿洖鍊� java.lang.Integer
+ * @鎻忚堪 鐧诲嚭鎵�鏈夌浉鏈�
* @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/1/17 16:12
- * @淇敼浜哄拰鍏跺畠淇℃伅
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
*/
-
- public static boolean loginOut(String cameraId) {
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return false;
+ public static void logoutAllCamera(List<ArdCameras> ardCameras) {
+ try {
+ for (ArdCameras camera : ardCameras) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(camera.getId());
+ info.setIp(camera.getIp());
+ info.setPort(camera.getPort());
+ info.setUsername(camera.getUsername());
+ info.setPassword(camera.getPassword());
+ logout(info);
+ String key = camera.getIp() + ":" + camera.getPort();
+ GlobalVariable.cameraMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
}
- Integer userId = GlobalVariable.loginMap.get(cameraId);
- boolean b = hCNetSDK.NET_DVR_Logout(userId);
- if (b) {
- GlobalVariable.loginMap.remove(cameraId);
- }
- return b;
}
/**
- * 鏄惁鍦ㄧ嚎
- *
- * @param cmd
+ * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
*/
-
- public static boolean isOnLine(CameraCmd cmd) {
- String cameraId = cmd.getCameraId();
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return false;
+ 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 key=alarmHost.getIp()+":"+alarmHost.getPort();
+// GlobalVariable.alarmHostMap.put(key, alarmHost);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
}
- Integer userId = GlobalVariable.loginMap.get(cameraId);
- boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
- return isOnLine;
}
+
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllAlarmHost(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());
+ logout(info);
+// String key=alarmHost.getIp()+":"+alarmHost.getPort();
+// GlobalVariable.alarmHostMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal accessControlHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(accessControlHost.getId());
+ info.setIp(accessControlHost.getIp());
+ info.setPort(accessControlHost.getPort());
+ info.setUsername(accessControlHost.getUsername());
+ info.setPassword(accessControlHost.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 logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal accessControlHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(accessControlHost.getId());
+ info.setIp(accessControlHost.getIp());
+ info.setPort(accessControlHost.getPort());
+ info.setUsername(accessControlHost.getUsername());
+ info.setPassword(accessControlHost.getPassword());
+ logout(info);
+// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
+// GlobalVariable.accessHostMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
/**
* 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
@@ -236,10 +346,10 @@
* @param lUserID 鍞竴鏍囪瘑绗�
* @param lAlarmHandle 鎶ヨ澶勭悊鍣�
*/
- public static int setupAlarmChan(int lUserID, int lAlarmHandle) {
+ public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
// 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾
if (lUserID == -1) {
- log.info("璇峰厛娉ㄥ唽");
+ log.error("璇峰厛娉ㄥ唽");
return lUserID;
}
if (lAlarmHandle < 0) {
@@ -247,14 +357,14 @@
if (fMSFCallBack_V31 == null) {
fMSFCallBack_V31 = new FMSGCallBack();
if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
- log.info("璁剧疆鍥炶皟鍑芥暟澶辫触!閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
+ log.error("璁剧疆鍥炶皟鍑芥暟澶辫触!閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
}
}
// 杩欓噷闇�瑕佸璁惧杩涜鐩稿簲鐨勫弬鏁拌缃紝涓嶈缃垨璁剧疆閿欒閮戒細瀵艰嚧璁惧娉ㄥ唽澶辫触
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 = 1;
+ m_strAlarmInfo.byLevel = 2;
// 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT)
m_strAlarmInfo.byAlarmInfoType = 1;
// 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�)
@@ -263,14 +373,9 @@
// 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙�
lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
if (lAlarmHandle == -1) {
- log.error("璁惧甯冮槻澶辫触锛岄敊璇爜==========銆�" + hCNetSDK.NET_DVR_GetLastError());
- log.error("璁惧甯冮槻澶辫触锛岄敊璇爜==========銆�" + hCNetSDK.NET_DVR_GetLastError());
- // 娉ㄩ攢 閲婃斁sdk璧勬簮
- logout(lUserID);
- return lAlarmHandle;
+ log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
} else {
- log.info("鐩告満甯冮槻鎴愬姛");
- return lAlarmHandle;
+ log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
}
}
return lAlarmHandle;
@@ -287,6 +392,7 @@
// 閲婃斁sdk璧勬簮
hCNetSDK.NET_DVR_Cleanup();
}
+
/**
* 鎶撳浘
*
@@ -316,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);
+ //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
@@ -328,13 +434,12 @@
InputStream input = new ByteArrayInputStream(array);
String url = "";
try {
- boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
+ boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input,input.available(), ContentType);
if (b) {
- url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
- url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url;
- log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
+ url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
+ // log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
}
- } catch (IOException ex) {
+ } catch (Exception ex) {
log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage());
}
return url;
@@ -344,4 +449,39 @@
return "";
}
}
+
+ /**
+ * 鑾峰彇闃插尯鍚嶇О
+ * 閫氶亾鍙�==闃插尯鍙� 浠�0寮�濮�
+ * 鍒樿嫃涔�
+ * 2023/7/6 10:48
+ */
+ public static String getDefenseZoneName(CameraCmd cmd) {
+ String name = "";
+ try {
+ String cameraId = cmd.getCameraId();
+ Integer channelNum = cmd.getWZoneIndex();//閫氶亾鍙�==闃插尯鍙�
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+ return name;
+ }
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
+
+ HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM();
+ Pointer point = netDvrAlarminParam.getPointer();
+ IntByReference ibrBytesReturned = new IntByReference();
+ netDvrAlarminParam.write();
+ boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned);
+ if (b) {
+ netDvrAlarminParam.read();
+ name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName);
+ } else {
+ int error = hCNetSDK.NET_DVR_GetLastError();
+ log.info("鑾峰彇闃插尯鍚嶇О澶辫触:" + error);
+ }
+ } catch (Exception ex) {
+ log.error("鑾峰彇闃插尯鍚嶇О寮傚父:" + ex.getMessage());
+ }
+ return name;
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3