From 745d5b90be7d8cdb8873b18d18b286fdc4b6913b Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 05 十二月 2023 10:13:57 +0800
Subject: [PATCH] 配置文件全部更改为配置类 优化包路径

---
 src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java | 1060 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 529 insertions(+), 531 deletions(-)

diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
similarity index 98%
rename from src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
rename to src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
index c992f8e..d9ef675 100644
--- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
+++ b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
@@ -1,532 +1,530 @@
-package com.ard.utils.hiksdk.service.impl;
-
-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.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.*;
-
-
-/**
- * @ClassName: hikClientServiceImpl
- * @Description: 娴峰悍鎿嶄綔瀹㈡埛绔疄鐜扮被
- * @Author: Administrator
- * @Date: 2023骞�01鏈�17鏃� 11:25
- * @Version: 1.2
- **/
-@Slf4j(topic = "hikSdk")
-public class HikClientUtil {
-    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
-    // 鎶ヨ鍥炶皟鍑芥暟瀹炵幇
-    public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
-
-    /**
-     * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔
-     * @鍙傛暟 [dvrLogin]
-     * @杩斿洖鍊� java.lang.Integer
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 2023/1/17 16:12
-     * @淇敼浜哄拰鍏跺畠淇℃伅
-     */
-    public ArdCameras login1(ArdCameras camera) {
-        // 鍒濆鍖�
-        if (!hCNetSDK.NET_DVR_Init()) {
-            log.error("SDK鍒濆鍖栧け璐�");
-        }
-        //鎵撳嵃娴峰悍sdk鏃ュ織
-        if (Platform.isWindows()) {
-            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
-            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
-        } 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();
-        //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
-        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
-        hCNetSDK.NET_DVR_SetReconnect(100000, true);
-        //璁惧淇℃伅, 杈撳嚭鍙傛暟
-        HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
-        int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
-        if (lUserID < 0) {
-            //閲婃斁SDK璧勬簮
-            hCNetSDK.NET_DVR_Cleanup();
-            camera.setLoginId(-1);
-        }
-        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-            GlobalVariable.loginMap.remove(camera.getId());
-        }
-        GlobalVariable.loginMap.put(camera.getId(), lUserID);
-
-        camera.setLoginId(lUserID);
-        camera.setChannel((int) m_strDeviceInfo.byStartChan);
-        return camera;
-    }
-
-    /**
-     * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 2023/1/17 16:12
-     */
-    public static void login(DeviceInfo deviceInfo) {
-        // 鍒濆鍖�
-        if (!hCNetSDK.NET_DVR_Init()) {
-            log.error("SDK鍒濆鍖栧け璐�");
-        }
-        //鎵撳嵃娴峰悍sdk鏃ュ織
-        if (Platform.isWindows()) {
-            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
-            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
-        } else {
-            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
-        }
-        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);
-        //璁惧淇℃伅, 杈撳嚭鍙傛暟
-        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
-        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
-
-        // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
-        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
-        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
-        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
-        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
-        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
-        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
-        m_strLoginInfo.wPort = m_sPort;
-        m_strLoginInfo.byVerifyMode = 0;
-        m_strLoginInfo.byLoginMode = 0;
-        //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄�  windowsSDK閲屾槸true鍜宖alse
-        m_strLoginInfo.bUseAsynLogin = true;
-        //寮傛鐧诲綍鍥炶皟
-        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
-        m_strLoginInfo.write();
-        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
-        if (i < 0) {
-            int errorCode = hCNetSDK.NET_DVR_GetLastError();
-            log.error("鐧诲綍寮傚父锛�" + errorCode);
-        }
-    }
-
-    /**
-     * @鎻忚堪 鐢ㄦ埛娉ㄩ攢
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 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 + "銆戞敞閿�鎴愬姛");
-            }
-        }
-    }
-
-    /**
-     * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈�
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 2023/2/3 10:10
-     */
-    public static void loginAllCamera(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());
-                login(info);
-                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());
-        }
-    }
-
-    /**
-     * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 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 key=alarmHost.getIp()+":"+alarmHost.getPort();
-//                GlobalVariable.alarmHostMap.put(key, alarmHost);
-            }
-        } catch (Exception ex) {
-            log.error("鐧诲綍鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
-        }
-    }
-
-    /**
-     * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 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);
-            }
-        } 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);
-            }
-        } catch (Exception ex) {
-            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);
-            }
-        } 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());
-        }
-    }
-    /**
-     * @鎻忚堪 鐧诲綍鎵�鏈夊鑱旇澶�
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 2023/2/3 10:10
-     */
-    public static void loginAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
-        try {
-            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
-                Thread.sleep(100);
-                DeviceInfo info = new DeviceInfo();
-                info.setDeviceId(ardEquipExternal.getId());
-                info.setIp(ardEquipExternal.getIp());
-                info.setPort(ardEquipExternal.getPort());
-                info.setUsername(ardEquipExternal.getUsername());
-                info.setPassword(ardEquipExternal.getPassword());
-                login(info);
-            }
-        } catch (Exception ex) {
-            log.error("鐧诲綍鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage());
-        }
-    }
-    /**
-     * @鎻忚堪 鐧诲嚭鎵�鏈夊鑱旇澶�
-     * @鍒涘缓浜� 鍒樿嫃涔�
-     * @鍒涘缓鏃堕棿 2023/2/3 10:10
-     */
-    public static void logoutAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
-        try {
-            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
-                Thread.sleep(100);
-                DeviceInfo info = new DeviceInfo();
-                info.setDeviceId(ardEquipExternal.getId());
-                info.setIp(ardEquipExternal.getIp());
-                info.setPort(ardEquipExternal.getPort());
-                info.setUsername(ardEquipExternal.getUsername());
-                info.setPassword(ardEquipExternal.getPassword());
-                logout(info);
-            }
-        } catch (Exception ex) {
-            log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
-        }
-    }
-
-
-
-    /**
-     * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
-     *
-     * @param lUserID      鍞竴鏍囪瘑绗�
-     * @param lAlarmHandle 鎶ヨ澶勭悊鍣�
-     */
-    public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
-        // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾
-        if (lUserID == -1) {
-            log.error("璇峰厛娉ㄥ唽");
-            return lUserID;
-        }
-        if (lAlarmHandle < 0) {
-            // 璁惧灏氭湭甯冮槻,闇�瑕佸厛杩涜甯冮槻
-            if (fMSFCallBack_V31 == null) {
-                fMSFCallBack_V31 = new FMSGCallBack();
-                if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
-                    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 = 0;
-            // 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT)
-            m_strAlarmInfo.byAlarmInfoType = 1;
-            // 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�)
-            m_strAlarmInfo.byDeployType = 1;
-            //浜鸿劯鎶ヨ淇℃伅绫诲瀷锛�1- 浜鸿劯渚︽祴鎶ヨ 0- 浜鸿劯鎶撴媿鎶ヨ
-            m_strAlarmInfo.byFaceAlarmDetection = 0;
-            m_strAlarmInfo.write();
-            // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙�
-            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
-            if (lAlarmHandle == -1) {
-                log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
-            } else {
-                log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
-            }
-        }
-        return lAlarmHandle;
-    }
-
-    /**
-     * 娉ㄩ攢
-     *
-     * @param lUserID 璁惧娉ㄥ唽鎴愬姛鍞竴鏍囪瘑绗�
-     */
-    public static void logout(int lUserID) {
-        // 娉ㄩ攢
-        hCNetSDK.NET_DVR_Logout(lUserID);
-        // 閲婃斁sdk璧勬簮
-        hCNetSDK.NET_DVR_Cleanup();
-    }
-
-    /**
-     * 鎶撳浘
-     *
-     * @param cmd 鎶撳浘鍛戒护
-     */
-    public static String picCutCate(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChannelNum();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return "";
-        }
-        Integer userId = GlobalVariable.loginMap.get(cameraId);
-        //鍥剧墖淇℃伅
-        HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA();
-        //璁剧疆鍥剧墖鍒嗚鲸鐜�
-        //鍥剧墖灏哄锛�0-CIF(352*288/352*240)锛�1-QCIF(176*144/176*120)锛�2-4CIF(704*576/704*480)鎴朌1(720*576/720*486)锛�3-UXGA(1600*1200)锛�
-        // 4-SVGA(800*600)锛�5-HD720P(1280*720)锛�6-VGA(640*480)锛�7-XVGA(1280*960)锛�8-HD900P(1600*900)锛�9-HD1080P(1920*1080)锛�10-2560*1920锛�
-        // 11-1600*304锛�12-2048*1536锛�13-2448*2048锛�14-2448*1200锛�15-2448*800锛�16-XGA(1024*768)锛�17-SXGA(1280*1024)锛�18-WD1(960*576/960*480),
-        // 19-1080I(1920*1080)锛�20-576*576锛�21-1536*1536锛�22-1920*1920锛�23-320*240锛�24-720*720锛�25-1024*768锛�26-1280*1280锛�27-1600*600锛�
-        // 28-2048*768锛�29-160*120锛�75-336*256锛�78-384*256锛�79-384*216锛�80-320*256锛�82-320*192锛�83-512*384锛�127-480*272锛�128-512*272锛� 161-288*320锛�
-        // 162-144*176锛�163-480*640锛�164-240*320锛�165-120*160锛�166-576*720锛�167-720*1280锛�168-576*960锛�180-180*240, 181-360*480, 182-540*720,
-        // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(浣跨敤褰撳墠鐮佹祦鍒嗚鲸鐜�)
-        jpeg.wPicSize = 0;
-        //璁剧疆鍥剧墖璐ㄩ噺锛�0-鏈�濂斤紝1-杈冨ソ锛�2-涓�鑸�
-        jpeg.wPicQuality = 0;
-        IntByReference a = new IntByReference();
-        //璁剧疆鍥剧墖澶у皬
-        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
-        // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓�
-        // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------");
-        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
-        //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is);
-        if (is) {
-            //  log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError());
-            byte[] array = jpegBuffer.array();
-            //瀛樺偍鍒癿inio
-
-            String ContentType = "image/JPEG";
-            InputStream input = new ByteArrayInputStream(array);
-            String url = "";
-            try {
-                boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
-                if (b) {
-                    url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
-                    // log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
-                }
-            } catch (Exception ex) {
-                log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage());
-            }
-            return url;
-        } else {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.debug("鎶撳浘澶辫触,璇风◢鍚庨噸璇�" + code);
-            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;
-    }
-
+package com.ard.utils.sdk.hiksdk.service.impl;
+
+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.util.ByteUtils;
+import com.ard.utils.sdk.hiksdk.common.GlobalVariable;
+import com.ard.utils.sdk.hiksdk.domain.DeviceInfo;
+import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK;
+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.*;
+
+
+/**
+ * @ClassName: hikClientServiceImpl
+ * @Description: 娴峰悍鎿嶄綔瀹㈡埛绔疄鐜扮被
+ * @Author: Administrator
+ * @Date: 2023骞�01鏈�17鏃� 11:25
+ * @Version: 1.2
+ **/
+@Slf4j(topic = "hikSdk")
+public class HikClientUtil {
+    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
+    // 鎶ヨ鍥炶皟鍑芥暟瀹炵幇
+    public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
+
+    /**
+     * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔
+     * @鍙傛暟 [dvrLogin]
+     * @杩斿洖鍊� java.lang.Integer
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/1/17 16:12
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public ArdCameras login1(ArdCameras camera) {
+        // 鍒濆鍖�
+        if (!hCNetSDK.NET_DVR_Init()) {
+            log.error("SDK鍒濆鍖栧け璐�");
+        }
+        //鎵撳嵃娴峰悍sdk鏃ュ織
+        if (Platform.isWindows()) {
+            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+        } 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();
+        //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
+        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+        hCNetSDK.NET_DVR_SetReconnect(100000, true);
+        //璁惧淇℃伅, 杈撳嚭鍙傛暟
+        HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
+        int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
+        if (lUserID < 0) {
+            //閲婃斁SDK璧勬簮
+            hCNetSDK.NET_DVR_Cleanup();
+            camera.setLoginId(-1);
+        }
+        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+            GlobalVariable.loginMap.remove(camera.getId());
+        }
+        GlobalVariable.loginMap.put(camera.getId(), lUserID);
+
+        camera.setLoginId(lUserID);
+        camera.setChannel((int) m_strDeviceInfo.byStartChan);
+        return camera;
+    }
+
+    /**
+     * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/1/17 16:12
+     */
+    public static void login(DeviceInfo deviceInfo) {
+        // 鍒濆鍖�
+        if (!hCNetSDK.NET_DVR_Init()) {
+            log.error("SDK鍒濆鍖栧け璐�");
+        }
+        //鎵撳嵃娴峰悍sdk鏃ュ織
+        if (Platform.isWindows()) {
+            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+        } else {
+            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+        }
+        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);
+        //璁惧淇℃伅, 杈撳嚭鍙傛暟
+        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+        // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
+        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
+        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
+        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
+        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
+        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
+        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
+        m_strLoginInfo.wPort = m_sPort;
+        m_strLoginInfo.byVerifyMode = 0;
+        m_strLoginInfo.byLoginMode = 0;
+        //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄�  windowsSDK閲屾槸true鍜宖alse
+        m_strLoginInfo.bUseAsynLogin = true;
+        //寮傛鐧诲綍鍥炶皟
+        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
+        m_strLoginInfo.write();
+        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+        if (i < 0) {
+            int errorCode = hCNetSDK.NET_DVR_GetLastError();
+            log.error("鐧诲綍寮傚父锛�" + errorCode);
+        }
+    }
+
+    /**
+     * @鎻忚堪 鐢ㄦ埛娉ㄩ攢
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 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 + "銆戞敞閿�鎴愬姛");
+            }
+        }
+    }
+
+    /**
+     * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈�
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/3 10:10
+     */
+    public static void loginAllCamera(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());
+                login(info);
+                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());
+        }
+    }
+
+    /**
+     * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 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 key=alarmHost.getIp()+":"+alarmHost.getPort();
+//                GlobalVariable.alarmHostMap.put(key, alarmHost);
+            }
+        } catch (Exception ex) {
+            log.error("鐧诲綍鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+        }
+    }
+
+    /**
+     * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 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);
+            }
+        } 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);
+            }
+        } catch (Exception ex) {
+            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);
+            }
+        } 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());
+        }
+    }
+    /**
+     * @鎻忚堪 鐧诲綍鎵�鏈夊鑱旇澶�
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/3 10:10
+     */
+    public static void loginAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
+        try {
+            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
+                Thread.sleep(100);
+                DeviceInfo info = new DeviceInfo();
+                info.setDeviceId(ardEquipExternal.getId());
+                info.setIp(ardEquipExternal.getIp());
+                info.setPort(ardEquipExternal.getPort());
+                info.setUsername(ardEquipExternal.getUsername());
+                info.setPassword(ardEquipExternal.getPassword());
+                login(info);
+            }
+        } catch (Exception ex) {
+            log.error("鐧诲綍鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage());
+        }
+    }
+    /**
+     * @鎻忚堪 鐧诲嚭鎵�鏈夊鑱旇澶�
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/3 10:10
+     */
+    public static void logoutAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
+        try {
+            for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
+                Thread.sleep(100);
+                DeviceInfo info = new DeviceInfo();
+                info.setDeviceId(ardEquipExternal.getId());
+                info.setIp(ardEquipExternal.getIp());
+                info.setPort(ardEquipExternal.getPort());
+                info.setUsername(ardEquipExternal.getUsername());
+                info.setPassword(ardEquipExternal.getPassword());
+                logout(info);
+            }
+        } catch (Exception ex) {
+            log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
+        }
+    }
+
+
+
+    /**
+     * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
+     *
+     * @param lUserID      鍞竴鏍囪瘑绗�
+     * @param lAlarmHandle 鎶ヨ澶勭悊鍣�
+     */
+    public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
+        // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾
+        if (lUserID == -1) {
+            log.error("璇峰厛娉ㄥ唽");
+            return lUserID;
+        }
+        if (lAlarmHandle < 0) {
+            // 璁惧灏氭湭甯冮槻,闇�瑕佸厛杩涜甯冮槻
+            if (fMSFCallBack_V31 == null) {
+                fMSFCallBack_V31 = new FMSGCallBack();
+                if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
+                    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 = 0;
+            // 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT)
+            m_strAlarmInfo.byAlarmInfoType = 1;
+            // 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�)
+            m_strAlarmInfo.byDeployType = 1;
+            //浜鸿劯鎶ヨ淇℃伅绫诲瀷锛�1- 浜鸿劯渚︽祴鎶ヨ 0- 浜鸿劯鎶撴媿鎶ヨ
+            m_strAlarmInfo.byFaceAlarmDetection = 0;
+            m_strAlarmInfo.write();
+            // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙�
+            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
+            if (lAlarmHandle == -1) {
+                log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
+            } else {
+                log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
+            }
+        }
+        return lAlarmHandle;
+    }
+
+    /**
+     * 娉ㄩ攢
+     *
+     * @param lUserID 璁惧娉ㄥ唽鎴愬姛鍞竴鏍囪瘑绗�
+     */
+    public static void logout(int lUserID) {
+        // 娉ㄩ攢
+        hCNetSDK.NET_DVR_Logout(lUserID);
+        // 閲婃斁sdk璧勬簮
+        hCNetSDK.NET_DVR_Cleanup();
+    }
+
+    /**
+     * 鎶撳浘
+     *
+     * @param cmd 鎶撳浘鍛戒护
+     */
+    public static String picCutCate(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChannelNum();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return "";
+        }
+        Integer userId = GlobalVariable.loginMap.get(cameraId);
+        //鍥剧墖淇℃伅
+        HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA();
+        //璁剧疆鍥剧墖鍒嗚鲸鐜�
+        //鍥剧墖灏哄锛�0-CIF(352*288/352*240)锛�1-QCIF(176*144/176*120)锛�2-4CIF(704*576/704*480)鎴朌1(720*576/720*486)锛�3-UXGA(1600*1200)锛�
+        // 4-SVGA(800*600)锛�5-HD720P(1280*720)锛�6-VGA(640*480)锛�7-XVGA(1280*960)锛�8-HD900P(1600*900)锛�9-HD1080P(1920*1080)锛�10-2560*1920锛�
+        // 11-1600*304锛�12-2048*1536锛�13-2448*2048锛�14-2448*1200锛�15-2448*800锛�16-XGA(1024*768)锛�17-SXGA(1280*1024)锛�18-WD1(960*576/960*480),
+        // 19-1080I(1920*1080)锛�20-576*576锛�21-1536*1536锛�22-1920*1920锛�23-320*240锛�24-720*720锛�25-1024*768锛�26-1280*1280锛�27-1600*600锛�
+        // 28-2048*768锛�29-160*120锛�75-336*256锛�78-384*256锛�79-384*216锛�80-320*256锛�82-320*192锛�83-512*384锛�127-480*272锛�128-512*272锛� 161-288*320锛�
+        // 162-144*176锛�163-480*640锛�164-240*320锛�165-120*160锛�166-576*720锛�167-720*1280锛�168-576*960锛�180-180*240, 181-360*480, 182-540*720,
+        // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(浣跨敤褰撳墠鐮佹祦鍒嗚鲸鐜�)
+        jpeg.wPicSize = 0;
+        //璁剧疆鍥剧墖璐ㄩ噺锛�0-鏈�濂斤紝1-杈冨ソ锛�2-涓�鑸�
+        jpeg.wPicQuality = 0;
+        IntByReference a = new IntByReference();
+        //璁剧疆鍥剧墖澶у皬
+        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
+        // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓�
+        // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------");
+        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
+        //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is);
+        if (is) {
+            //  log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError());
+            byte[] array = jpegBuffer.array();
+            //瀛樺偍鍒癿inio
+
+            String ContentType = "image/JPEG";
+            InputStream input = new ByteArrayInputStream(array);
+            String url = "";
+            try {
+                boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
+                if (b) {
+                    url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
+                    // log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
+                }
+            } catch (Exception ex) {
+                log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage());
+            }
+            return url;
+        } else {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.debug("鎶撳浘澶辫触,璇风◢鍚庨噸璇�" + code);
+            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