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 |  170 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 108 insertions(+), 62 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 594b3c1..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
@@ -4,7 +4,7 @@
 import com.ard.alarm.camera.domain.CameraCmd;
 import com.ard.alarm.external.domain.ArdEquipExternal;
 import com.ard.config.MinioClientSingleton;
-import com.ard.utils.ByteUtils;
+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;
@@ -14,8 +14,6 @@
 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;
@@ -123,11 +121,8 @@
 
     /**
      * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
-     * @鍙傛暟 [dvrLogin]
-     * @杩斿洖鍊� java.lang.Integer
      * @鍒涘缓浜� 鍒樿嫃涔�
      * @鍒涘缓鏃堕棿 2023/1/17 16:12
-     * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     public static void login(DeviceInfo deviceInfo) {
         // 鍒濆鍖�
@@ -175,12 +170,34 @@
     }
 
     /**
+     * @鎻忚堪 鐢ㄦ埛娉ㄩ攢
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 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 loginAllCamera(List<ArdCameras> ardCameras) {
         try {
@@ -193,8 +210,32 @@
                 info.setUsername(camera.getUsername());
                 info.setPassword(camera.getPassword());
                 login(info);
-                String ip = camera.getIp();
-                GlobalVariable.cameraMap.put(ip, camera);
+                String key = camera.getIp() + ":" + camera.getPort();
+                GlobalVariable.cameraMap.put(key, camera);
+            }
+        } catch (Exception ex) {
+            log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+        }
+    }
+
+    /**
+     * @鎻忚堪 鐧诲嚭鎵�鏈夌浉鏈�
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/3 10:10
+     */
+    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());
@@ -203,11 +244,8 @@
 
     /**
      * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
-     * @鍙傛暟 []
-     * @杩斿洖鍊� void
      * @鍒涘缓浜� 鍒樿嫃涔�
      * @鍒涘缓鏃堕棿 2023/2/3 10:10
-     * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
         try {
@@ -220,20 +258,42 @@
                 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());
         }
     }
+
     /**
-     * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈�
-     * @鍙傛暟 []
-     * @杩斿洖鍊� void
+     * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
      * @鍒涘缓浜� 鍒樿嫃涔�
      * @鍒涘缓鏃堕棿 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 {
@@ -246,49 +306,39 @@
                 info.setUsername(accessControlHost.getUsername());
                 info.setPassword(accessControlHost.getPassword());
                 login(info);
-                String ip = accessControlHost.getIp();
-                GlobalVariable.alarmHostMap.put(ip, accessControlHost);
+//
+//                String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
+//                GlobalVariable.accessHostMap.put(key, accessControlHost);
             }
         } catch (Exception ex) {
             log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
         }
     }
+
     /**
-     * @鎻忚堪 娉ㄩ攢鐧诲綍
-     * @鍙傛暟 [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 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());
         }
-        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;
-    }
 
     /**
      * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
@@ -299,7 +349,7 @@
     public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
         // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾
         if (lUserID == -1) {
-            log.info("璇峰厛娉ㄥ唽");
+            log.error("璇峰厛娉ㄥ唽");
             return lUserID;
         }
         if (lAlarmHandle < 0) {
@@ -307,7 +357,7 @@
             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());
                 }
             }
             // 杩欓噷闇�瑕佸璁惧杩涜鐩稿簲鐨勫弬鏁拌缃紝涓嶈缃垨璁剧疆閿欒閮戒細瀵艰嚧璁惧娉ㄥ唽澶辫触
@@ -324,12 +374,8 @@
             lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
             if (lAlarmHandle == -1) {
                 log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
-                // 娉ㄩ攢 閲婃斁sdk璧勬簮
-                logout(lUserID);
-                return lAlarmHandle;
             } else {
-                log.info("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
-                return lAlarmHandle;
+                log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
             }
         }
         return lAlarmHandle;
@@ -376,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
 

--
Gitblit v1.9.3