From 6a26b1d539576a556d0f8682af7ae4317de78c7a Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Tue, 02 Apr 2024 13:35:35 +0800
Subject: [PATCH] 修复相机密码脱敏导致的bug
---
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 45 ++-
ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java | 49 ++-
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 246 +++++++++++-----------
ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java | 23 ++
ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java | 7
ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/LoginModule.java | 16
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java | 7
ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java | 4
ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 251 +++++++++++----------
ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml | 4
10 files changed, 355 insertions(+), 297 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
index 4aa2d0c..b5727f2 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -2,6 +2,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
import com.ruoyi.common.constant.CameraConstants;
@@ -14,10 +15,12 @@
import com.ruoyi.device.camera.service.ICameraSdkService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.inspect.service.IArdVideoInspectTaskService;
+import com.ruoyi.utils.tools.ArdTool;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
@@ -64,6 +67,7 @@
List<ArdCameras> list = ardCamerasService.selectArdCamerasList(ardCamera);
return getDataTable(list);
}
+
/**
* 查询相机设备列表(不校验权限)
*/
@@ -74,6 +78,7 @@
List<ArdCameras> list = ardCamerasService.selectArdCamerasList(ardCamera);
return getDataTable(list);
}
+
/**
* 导出相机设备列表
*/
@@ -105,16 +110,17 @@
@Log(title = "相机设备", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ArdCameras camera) {
- if (CameraConstants.NOT_UNIQUE.equals(ardCamerasService.checkCameraIpAndPortUnique(camera)))
- {
- return error("新增相机'" + camera.getIp()+":"+camera.getPort() + "'失败,相机已存在");
+ if (CameraConstants.NOT_UNIQUE.equals(ardCamerasService.checkCameraIpAndPortUnique(camera))) {
+ return error("新增相机'" + camera.getIp() + ":" + camera.getPort() + "'失败,相机已存在");
}
+ camera.setState("0");
int i = ardCamerasService.insertArdCameras(camera);
if (i > 0) {
- cameraSdkService.logout(camera.getId());
- cameraSdkService.login(camera);
+ AjaxResult result = cameraSdkService.login(camera);
+ return success(result.get("msg"));
+ } else {
+ return error("新增相机设备失败");
}
- return toAjax(i);
}
/**
@@ -125,18 +131,20 @@
@Log(title = "相机设备", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody ArdCameras camera) {
- if (CameraConstants.NOT_UNIQUE.equals(ardCamerasService.checkCameraIpAndPortUnique(camera)))
- {
- return error("修改相机'" + camera.getIp()+":"+camera.getPort() + "'失败,相机已存在");
+ if (CameraConstants.NOT_UNIQUE.equals(ardCamerasService.checkCameraIpAndPortUnique(camera))) {
+ return error("修改相机'" + camera.getIp() + ":" + camera.getPort() + "'失败,相机已存在");
}
+ ArdCameras cameraOld = ardCamerasService.selectArdCamerasById(camera.getId());
+ ArdTool.fillNullFields(cameraOld, camera);
+
+ camera.setState("0");
int i = ardCamerasService.updateArdCameras(camera);
if (i > 0) {
- if(StringUtils.isNotNull(camera.getPassword())) {
- cameraSdkService.logout(camera.getId());
- cameraSdkService.login(camera);
- }
+ AjaxResult result = cameraSdkService.login(camera);
+ return success(result.get("msg"));
+ } else {
+ return error("修改相机设备失败");
}
- return toAjax(i);
}
/**
@@ -173,7 +181,6 @@
}
-
@GetMapping("/options")
@ApiOperation("选择相机数据")
public List options(ArdCameras ardCameras) {
@@ -198,12 +205,14 @@
Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(true);
return AjaxResult.success(deptAndCamera);
}
+
@GetMapping("/getDeptAndCameraByRole")
@ApiOperation("获取部门和相机按角色")
public AjaxResult getDeptAndCameraByRole() {
List<DeptAndCamerasDto> deptAndCamera = ardCamerasService.getChildDeptAndCamera();
return AjaxResult.success(deptAndCamera);
}
+
@GetMapping("/getDeptAndCameraWithCheckBox")
@ApiOperation("获取部门和相机(开启复选框)")
public AjaxResult getDeptAndCameraWithCheckBox() {
@@ -224,22 +233,22 @@
public AjaxResult getCamerasByDeptId() {
Long deptId = SecurityUtils.getDeptId();
String userId = SecurityUtils.getUserId();
- List<Map<String,Object>> camerasList = ardCamerasService.getCamerasByDeptId(deptId,userId);
+ List<Map<String, Object>> camerasList = ardCamerasService.getCamerasByDeptId(deptId, userId);
return AjaxResult.success(camerasList);
}
@PostMapping("/getCameraOperationByCameraId")
@ApiOperation("查看相机可否操控")
- public AjaxResult getCameraOperationByCameraId(@RequestBody Map<String,String> map) {
+ public AjaxResult getCameraOperationByCameraId(@RequestBody Map<String, String> map) {
String userId = SecurityUtils.getUserId();
- Boolean flag = ardCamerasService.getCameraOperationByCameraId(map.get("id"),userId);
+ Boolean flag = ardCamerasService.getCameraOperationByCameraId(map.get("id"), userId);
return AjaxResult.success(flag);
}
@PostMapping("/getChannelByCameraId")
@ApiOperation("获取相机通道")
- public AjaxResult getChannelByCameraId(@RequestBody Map<String,String> map) {
- Map<String,Object> result = ardCamerasService.getChannelByCameraId(map.get("id"));
+ public AjaxResult getChannelByCameraId(@RequestBody Map<String, String> map) {
+ Map<String, Object> result = ardCamerasService.getChannelByCameraId(map.get("id"));
return AjaxResult.success(result);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java b/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
index be01720..a978e5a 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
@@ -15,10 +15,10 @@
public interface CameraSDK {
//同步登录
- boolean login(ArdCameras cameras);
+ AjaxResult login(ArdCameras cameras);
//异步登录
- void asyncLogin(ArdCameras cameras);
+ AjaxResult asyncLogin(ArdCameras cameras);
//注销
boolean logout(String cameraId);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
index a5a2662..8909eec 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
@@ -9,8 +9,11 @@
public interface ICameraSdkService {
- //登录
- Boolean login(ArdCameras ardCamera);
+ //同步登录
+ AjaxResult login(ArdCameras ardCamera);
+
+ //异步登录
+ AjaxResult asyncLogin(ArdCameras ardCamera);
//注销
boolean logout(String cameraId);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
index 8f1a9b0..de2805a 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -59,12 +59,11 @@
*/
@Override
public void run(ApplicationArguments args) {
-
try {
// 从ardCamerasService中获取ArdCameras列表
List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
for (ArdCameras camera : ardCameras) {
- login(camera);
+ asyncLogin(camera);
}
} catch (Exception ex) {
// 初始化登录相机异常,记录错误日志
@@ -73,23 +72,35 @@
}
- //登录
+ //同步登录
@Override
- public Boolean login(ArdCameras ardCamera) {
- boolean result = false;
+ public AjaxResult login(ArdCameras ardCamera) {
try {
- if (ardCamera != null) {
- String factory = ardCamera.getFactory();
- CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
- //sdkStrategy.login(ardCamera);//同步登录
- cameraSDK.asyncLogin(ardCamera);//异步登录
- result = true;
+ if (ardCamera == null) {
+ return AjaxResult.error("登录相机失败,相机不存在");
}
+ String factory = ardCamera.getFactory();
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ return cameraSDK.login(ardCamera);//同步登录
} catch (Exception ex) {
log.error("登录异常:" + ex.getMessage());
- return false;
+ return AjaxResult.error("登录异常:" + ex.getMessage());
}
- return result;
+ }
+
+ @Override
+ public AjaxResult asyncLogin(ArdCameras ardCamera) {
+ try {
+ if (ardCamera == null) {
+ return AjaxResult.error("登录相机失败,相机不存在");
+ }
+ String factory = ardCamera.getFactory();
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
+ return cameraSDK.asyncLogin(ardCamera);//异步登录
+ } catch (Exception ex) {
+ log.error("登录异常:" + ex.getMessage());
+ return AjaxResult.error("登录异常:" + ex.getMessage());
+ }
}
//注销
@@ -463,7 +474,7 @@
} catch (Exception ex) {
log.error("设置ptz异常:" + ex.getMessage());
- return AjaxResult.error("设置ptz异常:" + ex.getMessage());
+ return AjaxResult.error("设置ptz异常:" + ex.getMessage());
}
}
@@ -689,8 +700,7 @@
public AjaxResult controlLock(CameraCmd cmd) {
String cameraId = cmd.getCameraId();//申请锁的相机
ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
- if(ardCameras==null)
- {
+ if (ardCameras == null) {
return AjaxResult.error("设备未登录");
}
Date now = new Date();
@@ -713,8 +723,7 @@
String cameraId = cmd.getCameraId();//申请解锁的相机
String operator = cmd.getOperator();//申请者
ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
- if(ardCameras==null)
- {
+ if (ardCameras == null) {
return AjaxResult.error("设备未登录");
}
if (ardCameras.getOperatorId().equals(operator)) {
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/LoginModule.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/LoginModule.java
index 8919e7a..ff36514 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/LoginModule.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/LoginModule.java
@@ -63,14 +63,14 @@
netsdk.CLIENT_SetAutoReconnect(haveReConnect, null);
//设置登录超时时间和尝试次数,可选
- int waitTime = 5000; //登录请求响应超时时间设置为5S
+ int waitTime = 2000; //登录请求响应超时时间设置为5S
int tryTimes = 1; //登录时尝试建立链接1次
netsdk.CLIENT_SetConnectTime(waitTime, tryTimes);
// 设置更多网络参数,NET_PARAM的nWaittime,nConnectTryNum成员与CLIENT_SetConnectTime
// 接口设置的登录设备超时时间和尝试次数意义相同,可选
NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
- netParam.nConnectTime = 10000; // 登录时尝试建立链接的超时时间
+ netParam.nConnectTime = 2000; // 登录时尝试建立链接的超时时间
netParam.nGetConnInfoTime = 3000; // 设置子连接的超时时间
netParam.nGetDevInfoTime = 3000;//获取设备信息超时时间,为0默认1000ms
netsdk.CLIENT_SetNetworkParam(netParam);
@@ -114,11 +114,11 @@
//NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
LLong m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, lpDeviceInfo, nError);
//m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
- if (m_hLoginHandle.longValue() == 0) {
- log.debug("Login Failed [" + m_strIp + ":" + m_nPort + "],错误码:" + getErrorCodePrint());
- } else {
- log.debug("Login Success [ " + m_strIp + ":" + m_nPort + " ]");
- }
+ //if (m_hLoginHandle.longValue() == 0) {
+ // log.debug("Login Failed [" + m_strIp + ":" + m_nPort + "],错误码:" + getErrorCodePrint());
+ //} else {
+ // log.debug("Login Success [ " + m_strIp + ":" + m_nPort + " ]");
+ //}
return m_hLoginHandle;
}
@@ -141,4 +141,4 @@
}
-}
\ No newline at end of file
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index 4ffb4d8..990676d 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -86,145 +86,156 @@
* @return
*/
@Override
-
- public boolean login(ArdCameras camera) {
- LoginModule.init(disConnect, haveReConnect);
- 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);
- if (loginId.longValue() <= 0) {
- camera.setChanNum(0);
- camera.setLoginId(-1);
- camera.setState("0");
- ardCamerasService.updateArdCameras(camera);
+ public AjaxResult login(ArdCameras camera) {
+ try {
+ LoginModule.init(disConnect, haveReConnect);
+ 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);
+ if (loginId.longValue() <= 0) {
+ camera.setChanNum(0);
+ camera.setLoginId(-1);
+ camera.setState("0");
+ ardCamerasService.updateArdCameras(camera);
+ //删除管理通道
+ ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+ log.error("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败:" + getErrorCodePrint());
+ return AjaxResult.error(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()));
+ }
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
//删除管理通道
ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- return false;
- }
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
- //删除管理通道
- ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- camera.setState("1");
- camera.setChanNum(m_stDeviceInfo.byChanNum);
- camera.setStartDChan(1);
- camera.setLoginId((int) loginId.longValue());
- ardCamerasService.updateArdCameras(camera);
- GlobalVariable.loginMap.put(camera.getId(), loginId);
+ camera.setState("1");
+ camera.setChanNum(m_stDeviceInfo.byChanNum);
+ camera.setStartDChan(1);
+ camera.setLoginId((int) loginId.longValue());
+ ardCamerasService.updateArdCameras(camera);
+ GlobalVariable.loginMap.put(camera.getId(), loginId);
- //获取最新通道
- for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
- ArdChannel channel = new ArdChannel();
- NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName();
- boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
- if (b) {
- String chanName = null;
- try {
- chanName = new String(av_cfg_channelName.szName, "GBK").trim();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- channel.setName(chanName);
- } else {
- channel.setName("通道" + i);
- }
- channel.setDeviceId(camera.getId());
- channel.setChanNo(i);
- ardChannelService.insertArdChannel(channel);
- }
- //配置到流媒体
- for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
- String name = camera.getId() + "_" + i;
- String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0";
- Vtdu vtdu = vtduService.selectVtduByName(name);
- if (vtdu != null) {
- vtduService.deleteVtduByName(name);
- }
- //添加到流媒体
- CameraCmd cmd = new CameraCmd(camera.getId(), i);
- Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
- vtdu = new Vtdu();
- if (videoCompressionCfg.get("videoEncType") != null) {
- if (videoCompressionCfg.get("videoEncType").equals("标准h264")) {
- vtdu.setIsCode("0");//默认不转码
+ //获取最新通道
+ for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+ ArdChannel channel = new ArdChannel();
+ NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName();
+ boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
+ if (b) {
+ String chanName = null;
+ try {
+ chanName = new String(av_cfg_channelName.szName, "GBK").trim();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ channel.setName(chanName);
} else {
- vtdu.setIsCode("1");//默认转码
+ channel.setName("通道" + i);
}
- } else {
- vtdu.setIsCode("0");//默认不转码
+ channel.setDeviceId(camera.getId());
+ channel.setChanNo(i);
+ ardChannelService.insertArdChannel(channel);
}
- vtdu.setRtspSource(rtspSource);
- vtdu.setName(camera.getId() + "_" + i);
- vtdu.setMode("1");//默认CPU软解码
- vtdu.setCameraId(camera.getId());
- vtduService.insertVtdu(vtdu);
- }
+ //配置到流媒体
+ for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+ String name = camera.getId() + "_" + i;
+ String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0";
+ Vtdu vtdu = vtduService.selectVtduByName(name);
+ if (vtdu != null) {
+ vtduService.deleteVtduByName(name);
+ }
+ //添加到流媒体
+ CameraCmd cmd = new CameraCmd(camera.getId(), i);
+ Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
+ vtdu = new Vtdu();
+ if (videoCompressionCfg.get("videoEncType") != null) {
+ if (videoCompressionCfg.get("videoEncType").equals("标准h264")) {
+ vtdu.setIsCode("0");//默认不转码
+ } else {
+ vtdu.setIsCode("1");//默认转码
+ }
+ } else {
+ vtdu.setIsCode("0");//默认不转码
+ }
+ vtdu.setRtspSource(rtspSource);
+ vtdu.setName(camera.getId() + "_" + i);
+ vtdu.setMode("1");//默认CPU软解码
+ vtdu.setCameraId(camera.getId());
+ vtduService.insertVtdu(vtdu);
+ }
- //创建引导队列
- //创建引导队列
- if (camera.getCamAlarmGuideEnable() == 1) {
- if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
- Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
- PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
- GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+ //创建引导队列
+ if (camera.getCamAlarmGuideEnable() != null && camera.getCamAlarmGuideEnable() == 1) {
+ if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+ Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+ PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+ GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+ }
+ //启动队列处理器
+ queueHandler.process(camera.getId());
}
- //启动队列处理器
- queueHandler.process(camera.getId());
+ return AjaxResult.success("登录成功");
+ } catch (Exception ex) {
+ log.error("登录异常:" + ex.getMessage());
+ return AjaxResult.error("登录异常:" + ex.getMessage());
}
- return true;
}
@Override
@Async("loginExecutor")
- public void asyncLogin(ArdCameras camera) {
- LoginModule.init(disConnect, haveReConnect);
- 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);
- if (loginId.longValue() <= 0) {
- camera.setChanNum(0);
- camera.setLoginId(-1);
- camera.setState("0");
- ardCamerasService.updateArdCameras(camera);
+ public AjaxResult asyncLogin(ArdCameras camera) {
+ try {
+ LoginModule.init(disConnect, haveReConnect);
+ 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);
+ if (loginId.longValue() <= 0) {
+ camera.setChanNum(0);
+ camera.setLoginId(-1);
+ camera.setState("0");
+ ardCamerasService.updateArdCameras(camera);
+ //删除管理通道
+ ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+ log.error("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败:" + getErrorCodePrint());
+ return AjaxResult.error(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()));
+ }
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
//删除管理通道
ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- return;
- }
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
- //删除管理通道
- ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- camera.setState("1");
- camera.setChanNum(m_stDeviceInfo.byChanNum);
- camera.setStartDChan(1);
- camera.setLoginId((int) loginId.longValue());
- ardCamerasService.updateArdCameras(camera);
- GlobalVariable.loginMap.put(camera.getId(), loginId);
+ camera.setState("1");
+ camera.setChanNum(m_stDeviceInfo.byChanNum);
+ camera.setStartDChan(1);
+ camera.setLoginId((int) loginId.longValue());
+ ardCamerasService.updateArdCameras(camera);
+ GlobalVariable.loginMap.put(camera.getId(), loginId);
- //获取最新通道
- for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
- ArdChannel channel = new ArdChannel();
- NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName();
- boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
- if (b) {
- String chanName = null;
- try {
- chanName = new String(av_cfg_channelName.szName, "GBK").trim();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
+ //获取最新通道
+ for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+ ArdChannel channel = new ArdChannel();
+ NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName();
+ boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
+ if (b) {
+ String chanName = null;
+ try {
+ chanName = new String(av_cfg_channelName.szName, "GBK").trim();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ channel.setName(chanName);
+ } else {
+ channel.setName("通道" + i);
}
- channel.setName(chanName);
- } else {
- channel.setName("通道" + i);
+ channel.setDeviceId(camera.getId());
+ channel.setChanNo(i);
+ ardChannelService.insertArdChannel(channel);
}
- channel.setDeviceId(camera.getId());
- channel.setChanNo(i);
- ardChannelService.insertArdChannel(channel);
+ //配置到流媒体
+ addVtdu(camera);
+ //创建引导队列
+ createGuideQueue(camera);
+ return AjaxResult.success("登录成功");
+ } catch (Exception ex) {
+ log.error("登录异常:" + ex.getMessage());
+ return AjaxResult.error("登录异常:" + ex.getMessage());
}
- //配置到流媒体
- addVtdu(camera);
- //创建引导队列
- createGuideQueue(camera);
}
//添加到流媒体
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index fc24937..1193b37 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -73,116 +73,7 @@
* @修改人和其它信息
*/
@Override
- public boolean login(ArdCameras camera) {
- try {
- // 初始化
- 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(5000, 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和false
- m_strLoginInfo.bUseAsynLogin = false;
- m_strLoginInfo.write();
- //同步登录
- int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
- if (lUserID < 0) {
- log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],错误码:" + hCNetSDK.NET_DVR_GetLastError());
- camera.setChanNum(0);
- camera.setLoginId(-1);
- camera.setState("0");
- //删除管理通道
- ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- ardCamerasService.updateArdCameras(camera);
- return false;
- }
-
- log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
- if (fExceptionCallBack == null) {
- fExceptionCallBack = new ExceptionCallBack();//异常回调
- //设置异常回调函数(可在回调函数中获取设备上下线状态等)
- if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
- log.debug("Set fExceptionCallBack function fail");
- return false;
- } else {
- log.debug("Set fExceptionCallBack function successfully!");
- }
- }
-
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
-
- //删除管理通道
- ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- GlobalVariable.loginMap.put(camera.getId(), lUserID);
- GlobalVariable.loginCameraMap.put(lUserID, camera);
-
- camera.setLoginId(lUserID);
- camera.setState("1");
- camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
- camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
- //获取最新通道
- List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
- if (cameraChannelList.size() > 0) {
- camera.setChannelList(cameraChannelList);
- for (ArdChannel channel : cameraChannelList) {
- channel.setId(IdUtils.simpleUUID());
- ardChannelService.insertArdChannel(channel);
- }
- //添加到流媒体
- addVtdu(camera);
- }
- //创建引导队列
- if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
- Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
- PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
- GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
- }
- ardCamerasService.updateArdCameras(camera);
- } catch (Exception ex) {
- log.error("注册设备异常", ex);
- }
- return true;
- }
-
- /**
- * @描述 注册登录 集成于NET_DVR_Login_V30,支持同步和异步登录
- * @参数 [dvrLogin]
- * @返回值 java.lang.Integer
- * @创建人 刘苏义
- * @创建时间 2023/1/17 16:12
- * @修改人和其它信息
- */
- @Override
- @Async("loginExecutor")
- public void asyncLogin(ArdCameras camera) {
+ public AjaxResult login(ArdCameras camera) {
try {
// 初始化
if (!hCNetSDK.NET_DVR_Init()) {
@@ -223,18 +114,126 @@
int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
if (lUserID < 0) {
int errorCode = hCNetSDK.NET_DVR_GetLastError();
- log.debug("Login Failed 【 " + camera.getIp() + ":" + camera.getPort() + " 】," +
- "Error Code:" + errorCode + " " +
- "Error Info:" + SdkErrorCodeEnum.getDescByCode(errorCode));
camera.setChanNum(0);
camera.setLoginId(-1);
camera.setState("0");
//删除管理通道
ardChannelService.deleteArdChannelByDeviceId(camera.getId());
ardCamerasService.updateArdCameras(camera);
- return;
+ log.error("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
+ return AjaxResult.error("登录失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
}
+ log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
+ if (fExceptionCallBack == null) {
+ fExceptionCallBack = new ExceptionCallBack();//异常回调
+ //设置异常回调函数(可在回调函数中获取设备上下线状态等)
+ if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+ log.debug("Set fExceptionCallBack function fail");
+ } else {
+ log.debug("Set fExceptionCallBack function successfully!");
+ }
+ }
+
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
+
+ //删除管理通道
+ ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+ GlobalVariable.loginMap.put(camera.getId(), lUserID);
+ GlobalVariable.loginCameraMap.put(lUserID, camera);
+
+ camera.setLoginId(lUserID);
+ camera.setState("1");
+ camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
+ camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+ //获取最新通道
+ List<ArdChannel> cameraChannelList = getIPChannelInfo(camera);
+ if (cameraChannelList.size() > 0) {
+ camera.setChannelList(cameraChannelList);
+ for (ArdChannel channel : cameraChannelList) {
+ channel.setId(IdUtils.simpleUUID());
+ ardChannelService.insertArdChannel(channel);
+ }
+ //添加到流媒体
+ addVtdu(camera);
+ }
+ //创建引导队列
+ if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+ Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+ PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+ GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+ }
+ ardCamerasService.updateArdCameras(camera);
+ return AjaxResult.success("设备登录成功");
+ } catch (Exception ex) {
+ log.error("注册设备异常", ex);
+ return AjaxResult.error("注册设备异常" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @描述 注册登录 集成于NET_DVR_Login_V30,支持同步和异步登录
+ * @参数 [dvrLogin]
+ * @返回值 java.lang.Integer
+ * @创建人 刘苏义
+ * @创建时间 2023/1/17 16:12
+ * @修改人和其它信息
+ */
+ @Override
+ @Async("loginExecutor")
+ public AjaxResult asyncLogin(ArdCameras camera) {
+ try {
+ // 初始化
+ if (!hCNetSDK.NET_DVR_Init()) {
+ log.error("SDK初始化失败");
+ return AjaxResult.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(5000, 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和false
+ m_strLoginInfo.bUseAsynLogin = false;
+ m_strLoginInfo.write();
+ //同步登录
+ int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+ if (lUserID < 0) {
+ int errorCode = hCNetSDK.NET_DVR_GetLastError();
+ camera.setChanNum(0);
+ camera.setLoginId(-1);
+ camera.setState("0");
+ //删除管理通道
+ ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+ ardCamerasService.updateArdCameras(camera);
+ log.error("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
+ return AjaxResult.error("设备登录失败: errorCode:" + errorCode + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(errorCode));
+ }
log.debug("Login Success 【 " + camera.getIp() + ":" + camera.getPort() + " 】");
synchronized (_lock) {
if (fExceptionCallBack == null) {
@@ -242,7 +241,6 @@
//设置异常回调函数(可在回调函数中获取设备上下线状态等)
if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
log.debug("Set fExceptionCallBack function fail");
- return;
} else {
log.debug("Set fExceptionCallBack function successfully!");
}
@@ -277,8 +275,10 @@
addVtdu(camera);
//创建引导队列
createGuideQueue(camera);
+ return AjaxResult.success("设备登录成功");
} catch (Exception ex) {
log.error("注册设备异常", ex);
+ return AjaxResult.error("注册设备异常" + ex.getMessage());
}
}
@@ -1917,14 +1917,14 @@
log.error("获取GIS信息数据失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code));
return AjaxResult.error("获取GIS信息数据失败: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code));
}
- struGisInfo.read();
- Map<String, Object> map = new HashMap<>();
- map.put("p", struGisInfo.struPtzPos.fPanPos);
- map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos);
- map.put("z", struGisInfo.struPtzPos.fZoomPos);
- map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 水平视场角
- map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 垂直视场角
- return AjaxResult.success(map);
+ struGisInfo.read();
+ Map<String, Object> map = new HashMap<>();
+ map.put("p", struGisInfo.struPtzPos.fPanPos);
+ map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos);
+ map.put("z", struGisInfo.struPtzPos.fZoomPos);
+ map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 水平视场角
+ map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 垂直视场角
+ return AjaxResult.success(map);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
index 13146fa..ff87625 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
@@ -186,4 +186,27 @@
}
}
+ /**
+ * 通过反射对象填充
+ * 刘苏义
+ * 2024/4/2 11:50:57
+ */
+ public static void fillNullFields(Object source, Object target) {
+ if (source == null || target == null) {
+ return;
+ }
+ Field[] fields = source.getClass().getDeclaredFields();
+ for (Field field : fields) {
+ field.setAccessible(true);
+ try {
+ Object sourceValue = field.get(source);
+ Object targetValue = field.get(target);
+ if (targetValue == null && sourceValue != null) {
+ field.set(target, sourceValue);
+ }
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
diff --git a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
index 38ff325..e7a7999 100644
--- a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
+++ b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -104,6 +104,7 @@
WHERE cast(#{deptId} as varchar) = any(string_to_array(ancestors,',')) ))
</if>
<if test="towerId != null ">and c.tower_id = #{towerId}</if>
+ <if test="state != null ">and c.state = #{state}</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</where>
@@ -140,6 +141,7 @@
<if test="camMaxVisibleDistance != null ">and c.cam_max_visible_distance = #{camMaxVisibleDistance}</if>
<if test="camAlarmGuideEnable != null ">and c.cam_alarm_guide_enable = #{camAlarmGuideEnable}</if>
<if test="loginId != null ">and c.login_id = #{loginId}</if>
+ <if test="state != null ">and c.state = #{state}</if>
</where>
</select>
<select id="selectArdCamerasById" parameterType="String" resultMap="ArdCamerasResult">
@@ -181,6 +183,7 @@
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
+ <if test="state != null">state,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
@@ -214,6 +217,7 @@
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
+ <if test="state != null">#{state},</if>
</trim>
</insert>
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
index ea6535c..d6ed2c3 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
@@ -8,6 +8,7 @@
import com.ruoyi.device.camera.factory.CameraSDK;
import com.ruoyi.device.camera.factory.CameraSDKFactory;
import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.camera.service.ICameraSdkService;
import com.ruoyi.media.domain.Vtdu;
import com.ruoyi.media.service.IMediaService;
import com.ruoyi.media.service.IVtduService;
@@ -41,7 +42,7 @@
@Resource
IMediaService mediaService;
@Resource
- private CameraSDKFactory cameraSDKFactory;
+ private ICameraSdkService cameraSdkService;
/**
* 同步相机在线状态
* 刘苏义
@@ -55,9 +56,7 @@
for (ArdCameras camera : ardCameras) {
CameraCmd cmd = new CameraCmd();
cmd.setCameraId(camera.getId());
- String factory = camera.getFactory();
- CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
- boolean onLineNew = cameraSDK.isOnLine(cmd);
+ boolean onLineNew = cameraSdkService.isOnLine(cmd);
boolean onLineOld = "1".equals(camera.getState());
if (onLineNew != onLineOld) {
if (onLineNew) {
--
Gitblit v1.9.3