From 70210b0eb0c58e1779fd89cbcf0909154d7d4936 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 01 七月 2023 11:45:18 +0800
Subject: [PATCH] 基本完成优先级排队报警逻辑

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java |  119 +++++++++++++----------------------------------------------
 1 files changed, 27 insertions(+), 92 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 39d07e9..3a4971f 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
@@ -1,13 +1,8 @@
 package com.ruoyi.device.hiksdk.service.impl;
 
 import com.ruoyi.common.annotation.SdkOperate;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.constant.CamPriority;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
 import com.ruoyi.device.hiksdk.common.GlobalVariable;
@@ -18,7 +13,6 @@
 import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack;
 import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
-import com.ruoyi.system.mapper.SysUserMapper;
 import com.sun.jna.Native;
 import com.sun.jna.Platform;
 import com.sun.jna.Pointer;
@@ -30,6 +24,7 @@
 import javax.annotation.Resource;
 import java.io.*;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.nio.ByteBuffer;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
@@ -50,9 +45,6 @@
 
     @Resource
     ArdCamerasMapper ardCamerasMapper;
-
-    @Resource
-    SysUserMapper sysUserMapper;
 
     private static HCNetSDK hCNetSDK;
 
@@ -132,11 +124,8 @@
             hCNetSDK.NET_DVR_Cleanup();
             camera.setLoginId(-1);
         }
-        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-            GlobalVariable.loginMap.remove(camera.getId());
-        }
+        GlobalVariable.loginMap.remove(camera.getId());
         GlobalVariable.loginMap.put(camera.getId(), lUserID);
-
         camera.setLoginId(lUserID);
         camera.setChannel((int) m_strDeviceInfo.byStartChan);
         return camera;
@@ -242,7 +231,7 @@
     /**
      * 鏄惁鍦ㄧ嚎
      *
-     * @param cmd
+     * @param cmd 鐩告満鍛戒护
      */
     @Override
     public boolean isOnLine(CameraCmd cmd) {
@@ -251,8 +240,7 @@
             return false;
         }
         Integer userId = GlobalVariable.loginMap.get(cameraId);
-        boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
-        return isOnLine;
+        return hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
     }
 
     /**
@@ -277,13 +265,13 @@
             return false;
         }
         Integer userId = GlobalVariable.loginMap.get(cameraId);
-        Integer dwStop;
+        int dwStop;
         if (enable) {
             dwStop = 0;//寮�鍚�
         } else {
             dwStop = 1;//鍏抽棴
         }
-        Integer dwPTZCommand = -1;
+        int dwPTZCommand = -1;
         switch (code) {
             /*鏂瑰悜*/
             case 1:
@@ -350,7 +338,7 @@
     /**
      * 璁剧疆鑱氱劍鍊�
      *
-     * @param cmd
+     * @param cmd 鐩告満鍛戒护
      */
     @Override
     @SdkOperate
@@ -378,7 +366,7 @@
     /**
      * 鑾峰彇鑱氱劍鍊�
      *
-     * @param cmd
+     * @param cmd 鐩告満鍛戒护
      */
     @Override
     public Map<String, Object> getFocusPos(CameraCmd cmd) {
@@ -411,7 +399,7 @@
     /**
      * 璁剧疆棰勭疆鐐�
      *
-     * @param cmd
+     * @param cmd 鐩告満鍛戒护
      */
     @Override
     @SdkOperate
@@ -434,7 +422,7 @@
     /**
      * 杞埌棰勭疆鐐�
      *
-     * @param cmd
+     * @param cmd 鐩告満鍛戒护
      */
     @Override
     @SdkOperate
@@ -481,8 +469,8 @@
             if (bool) {
                 resolution.read();
                 //瑙嗛杈撳嚭鍙e垎杈ㄧ巼锛�0- 1024x768锛�1- 1280x720锛�2-1280x1024锛�3- 1680x1050锛�4- 1920x1080锛�5- 3840*2160
-                byte byStreamType = resolution.struNormHighRecordPara.byStreamType;
-                int dwVideoBitrate = resolution.struNormHighRecordPara.dwVideoBitrate;
+//                byte byStreamType = resolution.struNormHighRecordPara.byStreamType;
+//                int dwVideoBitrate = resolution.struNormHighRecordPara.dwVideoBitrate;
                 int byResolution = resolution.struNormHighRecordPara.byResolution;
                 switch (byResolution) {
                     case 0:
@@ -560,7 +548,6 @@
     }
 
     /**
-     * @return
      * @鎻忚堪 鑾峰彇ptz淇℃伅
      * @鍙傛暟 [userId, channelNum]
      * @杩斿洖鍊� boolean
@@ -584,7 +571,7 @@
         boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_PTZPOS, channelNum, pioint, m_ptzPosCurrent.size(), ibrBytesReturned);
         if (bool) {
             m_ptzPosCurrent.read();
-            DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟
+            // DecimalFormat df = new DecimalFormat("0.0");//璁剧疆淇濈暀浣嶆暟
             //16杩涘埗杞琁nteger鍚庨櫎10锛屼繚鐣欏皬鏁扮偣1浣�
             //瀹為檯鏄剧ず鐨凱TZ鍊兼槸鑾峰彇鍒扮殑鍗佸叚杩涘埗鍊肩殑鍗佸垎涔嬩竴锛�
             //濡傝幏鍙栫殑姘村钩鍙傛暟P鐨勫�兼槸0x1750锛屽疄闄呮樉绀虹殑P鍊间负175搴︼紱
@@ -596,7 +583,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);
@@ -696,68 +683,17 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 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();//鐢宠鎺у埗鏃堕暱
-        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;//浼樺厛绾т綆鏃犳硶涓婇攣
-                }
-            }
-        }
+        Date now = new Date();
+        now.setTime(now.getTime() + cmd.getExpired() * 1000);
+        ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿
+        ardCamerasMapper.updateArdCameras(ardCameras);
         return true;
     }
+
     /**
      * @鎻忚堪 鎿嶆帶瑙i攣
      * @鍙傛暟 [userId, channelNum]
@@ -771,14 +707,12 @@
         String cameraId = cmd.getCameraId();//鐢宠瑙i攣鐨勭浉鏈�
         String operator = cmd.getOperator();//鐢宠鑰�
         ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId);
-        if(ardCameras.getOperatorId().equals(operator))
-        {
+        if (ardCameras.getOperatorId().equals(operator)) {
             //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂�
             ardCameras.setOperatorExpired(null);
             int i = ardCamerasMapper.updateArdCameras(ardCameras);
-            if(i>0)
-            {
-                log.debug(cameraId+"--瑙i攣鎴愬姛");
+            if (i > 0) {
+                log.debug(cameraId + "--瑙i攣鎴愬姛");
             }
         }
         return true;
@@ -1039,8 +973,7 @@
         return bool;
     }
 
-    public String getFocusMode(CameraCmd cmd)
-    {
+    public String getFocusMode(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChannelNum();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -1058,6 +991,7 @@
         log.info("褰撳墠鑱氱劍妯″紡锛�" + struFocusMode.byFocusMode);
         return String.valueOf(struFocusMode.byFocusMode);
     }
+
     /**
      * @鎻忚堪 浜戝彴鍔犵儹寮�鍏�
      * @鍙傛暟 [userId, channelNum, enable]
@@ -1413,7 +1347,7 @@
                 FileInputStream stream = new FileInputStream(path);
                 String simpleUUID = IdUtils.simpleUUID();
                 String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
-                String recordName = cameraId + "/" + time + "/" + ObjectName +"_"+ simpleUUID + ".mp4";
+                String recordName = cameraId + "/" + time + "/" + ObjectName + "_" + simpleUUID + ".mp4";
                 boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType);
                 if (b) {
                     String url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName;
@@ -1427,4 +1361,5 @@
             return "";
         }
     }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3