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