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