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