From 6a26b1d539576a556d0f8682af7ae4317de78c7a Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 02 四月 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 {
// 浠巃rdCamerasService涓幏鍙朅rdCameras鍒楄〃
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();//鐢宠瑙i攣鐨勭浉鏈�
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);
// 璁剧疆鏇村缃戠粶鍙傛暟锛孨ET_PARAM鐨刵Waittime锛宯ConnectTryNum鎴愬憳涓嶤LIENT_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鍜宖alse
- 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;
- }
-
- /**
- * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_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());
+ }
+ }
+
+ /**
+ * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_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鍜宖alse
+ 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