From 3089fbc788d1dbd638d1cfd9c2f9b7f2011d0af0 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期五, 30 六月 2023 16:21:48 +0800 Subject: [PATCH] 优化sdk控制 --- ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 165 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 108 insertions(+), 57 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java index c488645..b250206 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java @@ -210,7 +210,7 @@ log.debug("鍔犺浇lib瀹屾垚锛�"); List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasListNoDataScope(new ArdCameras()); for (ArdCameras camera : ardCameras) { - Thread.sleep(100); + Thread.sleep(500); login(camera); } } catch (Exception ex) { @@ -596,7 +596,7 @@ double p = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); double t = c.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); - log.debug("T鍨傜洿鍙傛暟涓�: " + p + "P姘村钩鍙傛暟涓�: " + t + "Z鍙樺�嶅弬鏁颁负: " + z); +// log.debug("T鍨傜洿鍙傛暟涓�: " + p + "P姘村钩鍙傛暟涓�: " + t + "Z鍙樺�嶅弬鏁颁负: " + z); Map<String, Object> ptzMap = new HashMap<>(); ptzMap.put("p", p); ptzMap.put("t", t); @@ -605,7 +605,7 @@ } else { int code = hCNetSDK.NET_DVR_GetLastError(); log.info("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + code); - return null; + return new HashMap<>(); } } @@ -696,64 +696,96 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾 */ @Override + @SdkOperate public boolean controlLock(CameraCmd cmd) { String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満 ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId); - if (StringUtils.isNull(ardCameras)) { - return false;//鎵句笉鍒扮浉鏈烘嫆缁濇搷鎺� - } - Integer expired = cmd.getExpired();//鐢宠鎺у埗鏃堕暱 + Date now = new Date(); + now.setTime(now.getTime() + cmd.getExpired() * 60); + ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 + ardCamerasMapper.updateArdCameras(ardCameras); +// String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満 +// ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId); +// if (StringUtils.isNull(ardCameras)) { +// return false;//鎵句笉鍒扮浉鏈烘嫆缁濇搷鎺� +// } +// Integer expired = cmd.getExpired();//鐢宠鎺у埗鏃堕暱 +// String operator = cmd.getOperator();//鐢宠鑰� +// String currentOperator = ardCameras.getOperatorId();//鐩告満褰撳墠鎺у埗鑰� +// Date currentExpired = ardCameras.getOperatorExpired();//鐩告満褰撳墠杩囨湡鏃堕棿 +// if (currentExpired == null) { +// //璁剧疆褰撳墠鎿嶄綔鐢ㄦ埛ID +// ardCameras.setOperatorId(operator); +// //璁剧疆褰撳墠杩囨湡鏃堕棿 +// Date now = new Date(); +// now.setTime(now.getTime() + expired * 1000); +// ardCameras.setOperatorExpired(now); +// ardCamerasMapper.updateArdCameras(ardCameras); +// } else { +// //濡傛灉杩囨湡鏃堕棿鏈夊�� +// //濡傛灉鏄湰浜虹洿鎺ヤ慨鏀� +// if (currentOperator.equals(operator)) { +// //璁剧疆褰撳墠杩囨湡鏃堕棿 +// Date now = new Date(); +// now.setTime(now.getTime() + expired * 1000); +// ardCameras.setOperatorExpired(now); +// ardCamerasMapper.updateArdCameras(ardCameras); +// } else { +// //濡傛灉闈炴湰浜烘瘮杈冧紭鍏堢骇 +// Integer currentLevel = 0;//褰撳墠鎿嶄綔鑰呯殑浼樺厛绾� +// if (CamPriority.priorityMap.containsKey(currentOperator)) { +// /*褰撳墠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/ +// currentLevel = (Integer) CamPriority.priorityMap.get(currentOperator); +// } else { +// /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/ +// SysUser sysUser = sysUserMapper.selectUserById(currentOperator); +// currentLevel = sysUser.getCameraPriority(); +// } +// Integer operatorLevel = 0;//鑾峰彇鐢宠鑰呯殑浼樺厛绾� +// if (CamPriority.priorityMap.containsKey(operator)) { +// /*鍖呭惈璇存槑褰撳墠鐢宠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/ +// operatorLevel = (Integer) CamPriority.priorityMap.get(operator); +// } else { +// /*鍚﹀垯鐢宠鎺у埗鑰呬负褰撳墠鐧诲綍鐢ㄦ埛*/ +// LoginUser loginUser = SecurityUtils.getLoginUser(); +// SysUser user = loginUser.getUser();//鑾峰彇鐧诲綍鐢ㄦ埛鐨勪俊鎭� +// operatorLevel = user.getCameraPriority(); +// } +// //鍒ゆ柇浼樺厛绾� +// if (operatorLevel > currentLevel) { +// Date now = new Date(); +// now.setTime(now.getTime() + expired * 60); +// ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 +// ardCameras.setOperatorId(operator);//璁剧疆褰撳墠鐢ㄦ埛 +// ardCamerasMapper.updateArdCameras(ardCameras); +// } else { +// return false;//浼樺厛绾т綆鏃犳硶涓婇攣 +// } +// } +// } + return true; + } + /** + * @鎻忚堪 鎿嶆帶瑙i攣 + * @鍙傛暟 [userId, channelNum] + * @杩斿洖鍊� boolean + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/6/30 15:36 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public boolean controlUnLock(CameraCmd cmd) { + String cameraId = cmd.getCameraId();//鐢宠瑙i攣鐨勭浉鏈� String operator = cmd.getOperator();//鐢宠鑰� - String currentOperator = ardCameras.getOperatorId();//鐩告満褰撳墠鎺у埗鑰� - Date currentExpired = ardCameras.getOperatorExpired();//鐩告満褰撳墠杩囨湡鏃堕棿 - if (currentExpired == null) { - //璁剧疆褰撳墠鎿嶄綔鐢ㄦ埛ID - ardCameras.setOperatorId(operator); - //璁剧疆褰撳墠杩囨湡鏃堕棿 - Date now = new Date(); - now.setTime(now.getTime() + expired * 1000); - ardCameras.setOperatorExpired(now); - ardCamerasMapper.updateArdCameras(ardCameras); - } else { - //濡傛灉杩囨湡鏃堕棿鏈夊�� - //濡傛灉鏄湰浜虹洿鎺ヤ慨鏀� - if (currentOperator.equals(operator)) { - //璁剧疆褰撳墠杩囨湡鏃堕棿 - Date now = new Date(); - now.setTime(now.getTime() + expired * 1000); - ardCameras.setOperatorExpired(now); - ardCamerasMapper.updateArdCameras(ardCameras); - } else { - //濡傛灉闈炴湰浜烘瘮杈冧紭鍏堢骇 - Integer currentLevel = 0;//褰撳墠鎿嶄綔鑰呯殑浼樺厛绾� - if (CamPriority.priorityMap.containsKey(currentOperator)) { - /*褰撳墠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/ - currentLevel = (Integer) CamPriority.priorityMap.get(currentOperator); - } else { - /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/ - SysUser sysUser = sysUserMapper.selectUserById(currentOperator); - currentLevel = sysUser.getCameraPriority(); - } - Integer operatorLevel = 0;//鑾峰彇鐢宠鑰呯殑浼樺厛绾� - if (CamPriority.priorityMap.containsKey(operator)) { - /*鍖呭惈璇存槑褰撳墠鐢宠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/ - operatorLevel = (Integer) CamPriority.priorityMap.get(operator); - } else { - /*鍚﹀垯鐢宠鎺у埗鑰呬负褰撳墠鐧诲綍鐢ㄦ埛*/ - LoginUser loginUser = SecurityUtils.getLoginUser(); - SysUser user = loginUser.getUser();//鑾峰彇鐧诲綍鐢ㄦ埛鐨勪俊鎭� - operatorLevel = user.getCameraPriority(); - } - //鍒ゆ柇浼樺厛绾� - if (operatorLevel > currentLevel) { - Date now = new Date(); - now.setTime(now.getTime() + expired * 60); - ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 - ardCameras.setOperatorId(operator);//璁剧疆褰撳墠鐢ㄦ埛 - ardCamerasMapper.updateArdCameras(ardCameras); - } else { - return false;//浼樺厛绾т綆鏃犳硶涓婇攣 - } + ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId); + if(ardCameras.getOperatorId().equals(operator)) + { + //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂� + ardCameras.setOperatorExpired(null); + int i = ardCamerasMapper.updateArdCameras(ardCameras); + if(i>0) + { + log.debug(cameraId+"--瑙i攣鎴愬姛"); } } return true; @@ -1014,6 +1046,25 @@ return bool; } + public String getFocusMode(CameraCmd cmd) + { + String cameraId = cmd.getCameraId(); + Integer channelNum = cmd.getChannelNum(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return ""; + } + Integer userId = GlobalVariable.loginMap.get(cameraId); + NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); + Pointer point = struFocusMode.getPointer(); + IntByReference ibrBytesReturned = new IntByReference(0); + boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned); + if (!b_GetCameraParam) { + System.out.println("鑾峰彇鍓嶇鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError()); + } + struFocusMode.read(); + log.info("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode); + return String.valueOf(struFocusMode.byFocusMode); + } /** * @鎻忚堪 浜戝彴鍔犵儹寮�鍏� * @鍙傛暟 [userId, channelNum, enable] -- Gitblit v1.9.3