From 1482b5b13c171a54c3db59da37c82848bb89f54e Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 28 Oct 2025 14:30:34 +0800
Subject: [PATCH] 优化

---
 ard-device/src/main/java/com/ard/device/component/sdk/factory/CameraSDKFactory.java      |   15 +++--
 ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java |   21 ++----
 ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDK.java             |    6 +-
 ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDKService.java      |   27 ++++----
 ard-device/src/main/java/com/ard/device/component/sdk/common/FactoryType.java            |   25 ++++++++
 ard-device/src/main/java/com/ard/device/component/sdk/dh/service/impl/DaHuaSDK.java      |   27 +-------
 ard-device/src/main/java/com/ard/device/component/sdk/common/GlobalVariable.java         |    6 -
 7 files changed, 64 insertions(+), 63 deletions(-)

diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/common/FactoryType.java b/ard-device/src/main/java/com/ard/device/component/sdk/common/FactoryType.java
new file mode 100644
index 0000000..245af98
--- /dev/null
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/common/FactoryType.java
@@ -0,0 +1,25 @@
+package com.ard.device.component.sdk.common;
+
+public enum FactoryType {
+    HIKVISION("1"),
+    DAHUA("2");
+
+    private final String factoryCode;
+
+    FactoryType(String factoryCode) {
+        this.factoryCode = factoryCode;
+    }
+
+    public String getFactoryCode() {
+        return factoryCode;
+    }
+
+    public static FactoryType fromCode(String code) {
+        for (FactoryType type : FactoryType.values()) {
+            if (type.getFactoryCode().equals(code)) {
+                return type;
+            }
+        }
+        throw new IllegalArgumentException("Unsupported factory code: " + code);
+    }
+}
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/common/GlobalVariable.java b/ard-device/src/main/java/com/ard/device/component/sdk/common/GlobalVariable.java
index 97c4ead..f76ae07 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/common/GlobalVariable.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/common/GlobalVariable.java
@@ -2,6 +2,7 @@
 
 import com.ard.device.camera.domain.ArdCamera;
 import lombok.Data;
+
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -19,9 +20,4 @@
     public static Map<String, Object> loginMap = new ConcurrentHashMap<>();
     //保存相机登录信息(loginId:Camera)
     public static Map<Integer, ArdCamera> hikLoginMap = new ConcurrentHashMap<>();
-
-    //相机预览字典
-    public static Map<String, Object> previewMap = new ConcurrentHashMap<>();
-    //线程字典
-    public static Map<String, String> threadMap = new ConcurrentHashMap<>();
 }
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/dh/service/impl/DaHuaSDK.java b/ard-device/src/main/java/com/ard/device/component/sdk/dh/service/impl/DaHuaSDK.java
index 71d324f..54fa4d5 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/dh/service/impl/DaHuaSDK.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/dh/service/impl/DaHuaSDK.java
@@ -1,13 +1,10 @@
 package com.ard.device.component.sdk.dh.service.impl;
 
-import com.ard.common.core.domain.AjaxResult;
 import com.ard.common.utils.StringUtils;
 import com.ard.device.camera.domain.ArdCamera;
 import com.ard.device.camera.domain.CameraCmd;
-import com.ard.device.camera.service.IArdCameraService;
 import com.ard.device.channel.domain.ArdChannel;
 import com.ard.device.channel.domain.VideoCompressionCfg;
-import com.ard.device.channel.service.IArdChannelService;
 import com.ard.device.component.sdk.common.GlobalVariable;
 import com.ard.device.component.sdk.common.osSelect;
 import com.ard.device.component.sdk.dh.module.ConfigModule;
@@ -41,12 +38,7 @@
 public class DaHuaSDK implements CameraSDK {
 
     @Resource
-    private IArdCameraService ardCameraService;
-    @Resource
-    private IArdChannelService ardChannelService;
-    @Resource
     private ApplicationEventPublisher eventPublisher;
-
 
     public static NetSDKLib netsdk = null;
     public static NetSDKLib configsdk = null;
@@ -107,7 +99,7 @@
      * 登录
      */
     @Override
-    public AjaxResult login(ArdCamera camera) {
+    public void login(ArdCamera camera) {
         try {
             NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
             NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo);
@@ -118,7 +110,6 @@
                 LoginEvent loginEvent = new LoginEvent(camera);
                 eventPublisher.publishEvent(loginEvent);
                 log.warn("设备[{}:{}]登录失败:{}", camera.getIp(), camera.getPort(), getErrorCodePrint());
-                return AjaxResult.warn(getErrorCodePrint());
             }
             log.debug("设备[{}:{}]登录成功:{}", camera.getIp(), camera.getPort(), loginId);
             camera.setState("1");
@@ -133,12 +124,8 @@
             }
             LoginEvent loginEvent = new LoginEvent(camera);
             eventPublisher.publishEvent(loginEvent);
-            //创建引导队列
-            //createGuideQueue(camera);
-            return AjaxResult.success("登录成功");
         } catch (Exception ex) {
             log.error("登录异常:{}", ex.getMessage());
-            return AjaxResult.error("登录异常:" + ex.getMessage());
         }
     }
 
@@ -146,16 +133,14 @@
      * 注销
      * 刘苏义
      * 2023/10/17 8:28:13
-     *
-     * @return
      */
     @Override
-    public boolean logout(String cameraId) {
+    public void logout(String cameraId) {
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
+            return;
         }
         NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId);
-        return LoginModule.logout(loginId);
+        LoginModule.logout(loginId);
     }
 
     /**
@@ -186,7 +171,7 @@
     /**
      * 获取通道
      */
-
+    @Override
     public List<ArdChannel> getChannels(ArdCamera camera) {
         if (camera.getLoginId() < 0) {
             return new ArrayList<>();
@@ -215,7 +200,6 @@
         }
         return ardChannelList;
     }
-
 
     @Override
     public VideoCompressionCfg getVideoCompressionCfg(CameraCmd cmd) {
@@ -282,7 +266,6 @@
             return null;
         }
     }
-
 
     /**
      * 动态库加载 - 大华 NetSDK + ConfigSDK
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/factory/CameraSDKFactory.java b/ard-device/src/main/java/com/ard/device/component/sdk/factory/CameraSDKFactory.java
index d50271f..4ff1580 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/factory/CameraSDKFactory.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/factory/CameraSDKFactory.java
@@ -1,5 +1,6 @@
 package com.ard.device.component.sdk.factory;
 
+import com.ard.device.component.sdk.common.FactoryType;
 import com.ard.device.component.sdk.dh.service.impl.DaHuaSDK;
 import com.ard.device.component.sdk.hik.service.impl.HikVisionSDK;
 import com.ard.device.component.sdk.service.CameraSDK;
@@ -29,12 +30,14 @@
      * @throws IllegalArgumentException 如果传入的工厂参数不支持
      */
     public CameraSDK createCameraSDK(String factory) {
-        if (factory.equals("1")) {
-            return hikvisionSDK;
-        } else if (factory.equals("2")) {
-            return dahuaSDK;
-        } else {
-            throw new IllegalArgumentException("Unsupported device: " + factory);
+        FactoryType factoryType = FactoryType.fromCode(factory);
+        switch (factoryType) {
+            case HIKVISION:
+                return hikvisionSDK;
+            case DAHUA:
+                return dahuaSDK;
+            default:
+                throw new IllegalArgumentException("Unsupported device: " + factory);
         }
     }
 }
\ No newline at end of file
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java b/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
index 01d6a25..4f000f6 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
@@ -1,13 +1,10 @@
 package com.ard.device.component.sdk.hik.service.impl;
 
-import com.ard.common.core.domain.AjaxResult;
 import com.ard.common.utils.StringUtils;
 import com.ard.device.camera.domain.ArdCamera;
-import com.ard.device.camera.service.IArdCameraService;
 import com.ard.device.channel.domain.ArdChannel;
 import com.ard.device.camera.domain.CameraCmd;
 import com.ard.device.channel.domain.VideoCompressionCfg;
-import com.ard.device.channel.service.IArdChannelService;
 import com.ard.device.component.sdk.common.GlobalVariable;
 import com.ard.device.component.sdk.common.ResolutionEnum;
 import com.ard.device.component.sdk.common.SdkErrorCodeEnum;
@@ -76,7 +73,7 @@
      * 登录
      */
     @Override
-    public AjaxResult login(ArdCamera camera) {
+    public void login(ArdCamera camera) {
         try {
             String m_sDeviceIP = camera.getIp();
             String m_sUsername = camera.getUsername();
@@ -109,7 +106,6 @@
                 eventPublisher.publishEvent(loginEvent);
                 log.warn("设备[{}:{}]登录失败: {}({})", camera.getIp(), camera.getPort(),
                         SdkErrorCodeEnum.getDescByCode(errorCode), errorCode);
-                return AjaxResult.warn("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")");
             }
             log.info("Login Success 【 {}:{} 】", camera.getIp(), camera.getPort());
 
@@ -119,7 +115,7 @@
             camera.setState("1");
             int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
             int startChan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
-            if (camera.getType().equals("2")) {
+            if ("2".equals(camera.getType())) {
                 chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum;
                 startChan = m_strDeviceInfo.struDeviceV30.byStartDChan;
             }
@@ -132,10 +128,8 @@
             }
             LoginEvent loginEvent = new LoginEvent(camera);
             eventPublisher.publishEvent(loginEvent);
-            return AjaxResult.success("设备登录成功");
         } catch (Exception ex) {
             log.error("注册设备异常", ex);
-            return AjaxResult.error("注册设备异常" + ex.getMessage());
         }
     }
 
@@ -143,16 +137,15 @@
      * 注销
      */
     @Override
-    public boolean logout(String cameraId) {
+    public void logout(String cameraId) {
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
+            return;
         }
         Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
         boolean b = hCNetSDK.NET_DVR_Logout(userId);
         if (b) {
             GlobalVariable.loginMap.remove(cameraId);
         }
-        return b;
     }
 
     @Override
@@ -314,7 +307,7 @@
             }
             //分辨率
             String resolution =
-                    ResolutionEnum.fromCode(compressionCfg.struNormHighRecordPara.byResolution).getResolution();
+                    Objects.requireNonNull(ResolutionEnum.fromCode(compressionCfg.struNormHighRecordPara.byResolution)).getResolution();
             //帧率
             String nFrameRate;
             switch (compressionCfg.struNormHighRecordPara.dwVideoFrameRate) {
@@ -401,6 +394,7 @@
     /**
      * 获取通道
      */
+    @Override
     public List<ArdChannel> getChannels(ArdCamera camera) {
         //获取通道
         List<ArdChannel> channelList = new ArrayList<>();
@@ -443,7 +437,7 @@
                         channel.setVideoCode(videoCompressionCfg.getVideoEncType());
                     }
                     //NVR过滤离线通道
-                    if (camera.getType().equals("3") || camera.getType().equals("2")) {
+                    if ("3".equals(camera.getType()) || "2".equals(camera.getType())) {
                         if (ipParaCfg.struStreamMode[iChanNo].uGetStream.struChanInfo.byEnable != 1) {
                             continue;
                         }
@@ -493,7 +487,6 @@
                     System.out.println("✅ SDK 加载成功!");
                 } catch (Exception ex) {
                     System.err.println("❌ SDK 加载失败: " + strDllPath + "\n异常信息: " + ex.getMessage());
-                    ex.printStackTrace();
                     return false;
                 }
             }
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDK.java b/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDK.java
index 6dee4ed..5195736 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDK.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDK.java
@@ -17,10 +17,10 @@
 public interface CameraSDK {
 
     //登录
-    AjaxResult login(ArdCamera cameras);
+    void login(ArdCamera cameras);
 
     //注销
-    boolean logout(String cameraId);
+    void logout(String cameraId);
 
     //在线状态
     boolean isOnLine(CameraCmd cmd);
@@ -29,5 +29,5 @@
     VideoCompressionCfg getVideoCompressionCfg(CameraCmd cmd);
 
     //获取相机通道信息
-    public List<ArdChannel> getChannels(ArdCamera camera);
+    List<ArdChannel> getChannels(ArdCamera camera);
 }
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDKService.java b/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDKService.java
index f292137..4ca608e 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDKService.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/service/CameraSDKService.java
@@ -13,6 +13,7 @@
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Date;
@@ -27,7 +28,7 @@
  **/
 @Service
 @Slf4j
-public class CameraSDKService {
+public class CameraSDKService implements CameraSDK {
 
     @Resource
     private RedisCache redisService;
@@ -37,41 +38,39 @@
 
     //异步登录
     @Async
-    public AjaxResult login(ArdCamera ardCamera) {
+    @Override
+    public void login(ArdCamera ardCamera) {
         try {
             if (ardCamera == null) {
-                return AjaxResult.warn("设备不存在");
+                log.warn("设备不存在");
+                return;
             }
             String factory = ardCamera.getFactory();
             CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-            return cameraSDK.login(ardCamera);//异步登录
+            cameraSDK.login(ardCamera);//异步登录
         } catch (Exception ex) {
             log.error("登录异常:{}", ex.getMessage());
-            return AjaxResult.error("登录异常:" + ex.getMessage());
         }
     }
 
     //注销
-    public boolean logout(String cameraId) {
-        boolean result = false;
+    @Override
+    public void logout(String cameraId) {
         try {
             ArdCamera ardCamera = redisService.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
             if (ardCamera != null) {
                 String factory = ardCamera.getFactory();
                 CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
-                result = cameraSDK.logout(cameraId);
-                if (result) {
-                    GlobalVariable.loginMap.remove(cameraId);//移除相机登录id缓存
-                }
+                cameraSDK.logout(cameraId);
+                GlobalVariable.loginMap.remove(cameraId);//移除相机登录id缓存
             }
         } catch (Exception ex) {
             log.error("注销异常:{}", ex.getMessage());
-            return false;
         }
-        return result;
     }
 
     //在线检测
+    @Override
     public boolean isOnLine(CameraCmd cmd) {
         try {
             boolean onLine = false;
@@ -89,6 +88,7 @@
         }
     }
 
+    @Override
     //获取码流压缩参数
     public VideoCompressionCfg getVideoCompressionCfg(CameraCmd cmd) {
         try {
@@ -107,6 +107,7 @@
     }
 
     //获取通道列表
+    @Override
     public List<ArdChannel> getChannels(ArdCamera camera) {
         try {
             CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(camera.getFactory());

--
Gitblit v1.9.3