From 5628d007fc9b58fd22981d626e6f3557d8cdccb3 Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 星期三, 14 六月 2023 21:20:08 +0800
Subject: [PATCH] 优化线程间录像抢占问题
---
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java | 92 ++++++++++++++++++++++++++--------------------
1 files changed, 52 insertions(+), 40 deletions(-)
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
index 447bc7b..868981f 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
@@ -9,6 +9,7 @@
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.system.service.ISysUserService;
+import org.apache.ibatis.jdbc.Null;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@@ -63,64 +64,75 @@
}
Date currentExpired = ardCameras.getOperatorExpired();//褰撳墠鐩告満鐨勮繃鏈熸椂闂�
String currentOperator = ardCameras.getOperatorId();//褰撳墠鐩告満鐨勬搷浣滆��
-
- if (StringUtils.isEmpty(currentOperator)) {
- /*褰撳墠鐩告満鎺у埗鑰呬负绌烘椂锛岀洿鎺ユ洿鏂版帶鍒惰�咃紝骞跺厑璁�*/
+ /*鍏堝垽鏂攣瀹氭椂闂�*/
+ if (currentExpired == null) {
+ /*濡傛灉鏈厤缃攣瀹氭椂闂达紝浠讳綍浜哄彲鎺у埗*/
ardCameras.setOperatorId(operator);
ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
return true;
} else {
- if (operator.equals(currentOperator)) {
- /*鍒ゆ柇鐢宠鑰呭凡缁忓湪鎺э紝鐩存帴鍏佽*/
+ /*閿佸畾鏃堕棿閰嶇疆浜嗭紝鍒ゆ柇褰撳墠鎿嶄綔鑰�*/
+ if (StringUtils.isEmpty(currentOperator)) {
+ /*褰撳墠鐩告満鎺у埗鑰呬负绌烘椂锛屼换浣曚汉鍙帶*/
+ ardCameras.setOperatorId(operator);
+ ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
return true;
} else {
- Integer currentLevel = 0;//褰撳墠鐩告満鐨勬搷浣滆�呯殑浼樺厛绾�
- if (sdkPriority.priorityMap.containsKey(currentOperator)) {
- /*褰撳墠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/
- currentLevel = (Integer) sdkPriority.priorityMap.get(currentOperator);
- } else {
- /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/
- SysUser sysUser = sysUserService.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) {
- /*濡傛灉鐢宠鑰呬紭鍏堢骇楂橈紝鍏佽鎺у埗*/
- ardCameras.setOperatorId(operator);
- ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+ /*鍒ゆ柇鏄惁鏈汉缁х画鎺у埗*/
+ if (currentOperator.equals(operator)) {
return true;
} else {
- /*濡傛灉鐢宠鑰呬紭鍏堢骇浣庯紝鍒欏垽鏂繃鏈熸椂闂�*/
- Date now = new Date();
- if (currentExpired == null) {
- /*褰撳墠鐩告満鏈厤缃繃鏈熸椂闂达紝鍙帶*/
+ /*褰撳墠鐩告満鏈変汉鎺у埗骞朵笖閰嶇疆浜嗚繃鏈熸椂闂达紝鍏堝垽鏂紭鍏堢骇锛屼紭鍏堢骇楂樺厑璁告帶鍒�*/
+ Integer currentLevel = 0;//褰撳墠鐩告満鐨勬搷浣滆�呯殑浼樺厛绾�
+ if (sdkPriority.priorityMap.containsKey(currentOperator)) {
+ /*褰撳墠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/
+ currentLevel = (Integer) sdkPriority.priorityMap.get(currentOperator);
+ } else {
+ /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/
+ SysUser sysUser = sysUserService.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) {
+ /*濡傛灉鐢宠鑰呬紭鍏堢骇楂橈紝鍏佽鎺у埗*/
ardCameras.setOperatorId(operator);
+ ardCameras.setOperatorExpired(null);
ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
return true;
- }
- else {
- if (now.before(currentExpired)) {
- /*鏃堕棿鏈繃鏈燂紝涓嶅彲鎺�*/
- return false;
- } else {
- /*鏃堕棿杩囨湡锛屽彲浠ユ帶鍒讹紝鏇存柊鎺у埗鑰�*/
+ } else {
+ /*濡傛灉鐢宠鑰呬紭鍏堢骇浣庯紝鍒欏垽鏂繃鏈熸椂闂�*/
+ Date now = new Date();
+ if (currentExpired == null) {
+ /*褰撳墠鐩告満鏈厤缃繃鏈熸椂闂达紝鍙帶*/
ardCameras.setOperatorId(operator);
+ ardCameras.setOperatorExpired(null);
ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
return true;
+ } else {
+ if (now.before(currentExpired)) {
+ /*鏃堕棿鏈繃鏈燂紝涓嶅彲鎺�*/
+ return false;
+ } else {
+ /*鏃堕棿杩囨湡锛屽彲浠ユ帶鍒讹紝鏇存柊鎺у埗鑰�*/
+ ardCameras.setOperatorId(operator);
+ ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+ return true;
+ }
}
}
}
}
}
+
}
}
--
Gitblit v1.9.3