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/utils/hiksdk/service/impl/HikClientUtil.java |   62 ++++++++++++++++++++++++-------
 1 files changed, 48 insertions(+), 14 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 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

--
Gitblit v1.9.3