From c6eb731b0a70946e5ba265d9e5d427b8bb4537a6 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 25 五月 2023 16:36:50 +0800
Subject: [PATCH] 修改云台可控优先级策略

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java |  102 +++++++++++++++++++++++----------------------------
 1 files changed, 46 insertions(+), 56 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 f1121bb..92e8124 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
@@ -5,6 +5,7 @@
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.constant.sdkPriority;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
 import com.ruoyi.device.hiksdk.common.global.globalVariable;
@@ -233,7 +234,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-   // @SdkOperate
+    @SdkOperate
     public boolean PTZControlWithSpeed(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
@@ -630,77 +631,66 @@
      */
     @Override
     public boolean controlLock(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer expired = cmd.getExpired();
+        String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満
         ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId);
         if (StringUtils.isNull(ardCameras)) {
             return false;//鎵句笉鍒扮浉鏈烘嫆缁濇搷鎺�
         }
-        String operatorId = ardCameras.getOperatorId();
-        if (StringUtils.isEmpty(operatorId)) {
-            //濡傛灉璇ョ浉鏈烘棤浜洪攣瀹氾紝鐩存帴閿佸畾
-            LoginUser loginUser = SecurityUtils.getLoginUser();
-            if (StringUtils.isNull(loginUser)) {
-                return false;//褰撳墠鐧诲綍鐢ㄦ埛涓虹┖涓嶅彲浠ユ帶鍒�
-            }
-            SysUser user = loginUser.getUser();
-            if (StringUtils.isNull(user.getCameraPriority())) {
-                return false;//鏈厤缃紭鍏堢骇鐨勭敤鎴蜂笉鍙互鎺у埗
-            }
+        Integer expired = cmd.getExpired();//鐢宠鎺у埗鏃堕暱
+        String operator=cmd.getOperator();//鐢宠鑰�
+        String currentOperator = ardCameras.getOperatorId();//鐩告満褰撳墠鎺у埗鑰�
+        Date currentExpired = ardCameras.getOperatorExpired();//鐩告満褰撳墠杩囨湡鏃堕棿
+        if(currentExpired==null)
+        {
             //璁剧疆褰撳墠鎿嶄綔鐢ㄦ埛ID
-            ardCameras.setOperatorId(user.getUserId());
+            ardCameras.setOperatorId(operator);
             //璁剧疆褰撳墠杩囨湡鏃堕棿
             Date now = new Date();
-            now.setTime(now.getTime() + expired * 1000);
+            now.setTime(now.getTime() + expired * 1000*60);
             ardCameras.setOperatorExpired(now);
             ardCamerasMapper.updateArdCameras(ardCameras);
-        } else {
-            //濡傛灉璇ョ浉鏈烘湁浜洪攣瀹氾紝鍒ゆ柇浼樺厛绾�
-            SysUser operatorUser = sysUserMapper.selectUserById(operatorId);
-            if (StringUtils.isNull(operatorUser)) {
-                return false;
-            }
-            if (StringUtils.isEmpty(operatorUser.getCameraPriority())) {
-                return false;
-            }
-            Integer operatorPriority = Integer.parseInt(operatorUser.getCameraPriority());//鐩告満宸叉搷浣滅敤鎴蜂紭鍏堢骇
-
-            LoginUser loginUser = SecurityUtils.getLoginUser();
-            if (StringUtils.isNull(loginUser)) {
-                return false;//褰撳墠鐧诲綍鐢ㄦ埛涓虹┖涓嶅彲浠ユ帶鍒�
-            }
-            SysUser user = loginUser.getUser();
-            if (StringUtils.isEmpty(user.getCameraPriority())) {
-                return false;//鏈厤缃紭鍏堢骇鐨勭敤鎴蜂笉鍙互鎺у埗
-            }
-            Integer loginUserCameraPriority = Integer.parseInt(user.getCameraPriority());//褰撳墠鐧诲綍鐢ㄦ埛浼樺厛绾�
-            if (user.getUserId().equals(operatorUser.getUserId())) {
-                //濡傛灉褰撳墠鐢ㄦ埛宸茬粡鎿嶆帶锛岀洿鎺ユ洿鏂拌繃鏈熸椂闂�
+        }
+         else {
+            //濡傛灉杩囨湡鏃堕棿鏈夊��
+            //濡傛灉鏄湰浜虹洿鎺ヤ慨鏀�
+            if(currentOperator.equals(operator))
+            {
+                //璁剧疆褰撳墠杩囨湡鏃堕棿
                 Date now = new Date();
-                now.setTime(now.getTime() + expired * 60 * 1000);
-                ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿
+                now.setTime(now.getTime() + expired * 1000*60);
+                ardCameras.setOperatorExpired(now);
                 ardCamerasMapper.updateArdCameras(ardCameras);
-            } else {
-                if (loginUserCameraPriority > operatorPriority) {
-                    //濡傛灉鐧诲綍鐢ㄦ埛浼樺厛绾ч珮浜庡凡鎿嶄綔鐢ㄦ埛锛岃鐩栨洿鏂�
-                    ardCameras.setOperatorId(user.getUserId());//璁剧疆褰撳墠鎿嶄綔鐢ㄦ埛ID
+            }
+            else {
+                //濡傛灉闈炴湰浜烘瘮杈冧紭鍏堢骇
+                Integer currentLevel = 0;//褰撳墠鎿嶄綔鑰呯殑浼樺厛绾�
+                if (sdkPriority.priorityMap.containsKey(currentOperator)) {
+                    /*褰撳墠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/
+                    currentLevel = (Integer) sdkPriority.priorityMap.get(currentOperator);
+                } else {
+                    /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/
+                    SysUser sysUser = sysUserMapper.selectUserById(currentOperator);
+                    currentLevel = sysUser.getCameraPriority();
+                }
+                Integer operatorLevel = 0;//鑾峰彇鐢宠鑰呯殑浼樺厛绾�
+                if (sdkPriority.priorityMap.containsKey(operator)) {
+                    /*鍖呭惈璇存槑褰撳墠鐢宠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/
+                    operatorLevel = (Integer) sdkPriority.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 * 1000);
                     ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿
+                    ardCameras.setOperatorId(operator);//璁剧疆褰撳墠鐢ㄦ埛
                     ardCamerasMapper.updateArdCameras(ardCameras);
                 } else {
-                    //濡傛灉鐧诲綍鐢ㄦ埛浼樺厛绾т綆浜庣瓑浜庡凡鎿嶄綔鐢ㄦ埛锛屽垽鏂槸鍚﹁繃鏈�
-                    Date now = new Date();
-                    Date operatorExpired = ardCameras.getOperatorExpired();
-                    if (now.after(operatorExpired)) {
-                        //宸茶繃鏈�
-                        ardCameras.setOperatorId(user.getUserId());//璁剧疆褰撳墠鎿嶄綔鐢ㄦ埛ID
-                        now.setTime(now.getTime() + expired * 60 * 1000);
-                        ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿
-                        ardCamerasMapper.updateArdCameras(ardCameras);
-                    } else {
-                        return false;//鏈繃鏈熶笉鍙帶
-                    }
+                    return false;//浼樺厛绾т綆鏃犳硶涓婇攣
                 }
             }
         }

--
Gitblit v1.9.3