From 4b085b357d5e3137a79b4618a15dcba1fc5adf7b Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 14 三月 2024 08:53:43 +0800
Subject: [PATCH] 优化

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java |   87 +++++++++++++++++++++++++++++++++----------
 1 files changed, 67 insertions(+), 20 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index a2e632f..31bd49f 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -2,8 +2,12 @@
 
 import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
 import com.ruoyi.alarm.global.domain.GuideTask;
+import com.ruoyi.alarm.global.service.impl.QueueHandler;
+import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.device.camera.factory.CameraSDK;
 import com.ruoyi.device.camera.domain.ArdCameras;
@@ -16,6 +20,7 @@
 import com.ruoyi.utils.gis.GisUtil;
 import com.ruoyi.utils.minio.MinioUtil;
 import com.ruoyi.utils.sdk.common.GlobalVariable;
+import com.ruoyi.utils.sdk.dhsdk.common.ErrorCode;
 import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib;
 import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.EM_NEW_CONFIG;
 import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
@@ -62,7 +67,8 @@
     private IVtduService vtduService;
     @Value("${minio.endpoint}")
     private String minioEndPoint;
-
+    @Resource
+    private QueueHandler queueHandler;
 
     // 璁惧鏂嚎閫氱煡鍥炶皟
     private static DisConnect disConnect = new DisConnect();
@@ -74,6 +80,7 @@
      * 鐧诲綍
      * 鍒樿嫃涔�
      * 2023/10/17 8:28:13
+     *
      * @return
      */
     @Override
@@ -152,17 +159,22 @@
         }
 
         //鍒涘缓寮曞闃熷垪
-        if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
-            Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
-            PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
-            GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+        //鍒涘缓寮曞闃熷垪
+        if (camera.getCamAlarmGuideEnable() == 1) {
+            if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+            }
+            //鍚姩闃熷垪澶勭悊鍣�
+            queueHandler.process(camera.getId());
         }
         return true;
     }
 
     @Override
     @Async("loginExecutor")
-    public void asyncLogin(ArdCameras camera){
+    public void asyncLogin(ArdCameras camera) {
         LoginModule.init(disConnect, haveReConnect);
         NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
         NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo);
@@ -208,7 +220,14 @@
             ardChannelService.insertArdChannel(channel);
         }
         //閰嶇疆鍒版祦濯掍綋
-        for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+        addVtdu(camera);
+        //鍒涘缓寮曞闃熷垪
+        createGuideQueue(camera);
+    }
+
+    //娣诲姞鍒版祦濯掍綋
+    private void addVtdu(ArdCameras camera) {
+        for (int i = 1; i < camera.getChanNum() + 1; i++) {
             String name = camera.getId() + "_" + i;
             String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0";
             Vtdu vtdu = vtduService.selectVtduByName(name);
@@ -234,12 +253,20 @@
             vtdu.setCameraId(camera.getId());
             vtduService.insertVtdu(vtdu);
         }
+    }
 
-        //鍒涘缓寮曞闃熷垪
-        if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
-            Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
-            PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
-            GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+    //鍒涘缓寮曞闃熷垪
+    private void createGuideQueue(ArdCameras camera) {
+        if (camera.getCamAlarmGuideEnable() != null) {
+            if (camera.getCamAlarmGuideEnable() == 1) {
+                if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+                    Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+                    PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+                    GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+                    //鍚姩闃熷垪澶勭悊鍣�
+                    queueHandler.process(camera.getId());
+                }
+            }
         }
     }
 
@@ -247,6 +274,7 @@
      * 娉ㄩ攢
      * 鍒樿嫃涔�
      * 2023/10/17 8:28:13
+     *
      * @return
      */
     @Override
@@ -290,14 +318,15 @@
      * 2023/10/17 8:28:13
      */
     @Override
-    public boolean pTZControl(CameraCmd cmd) {
+    @SdkOperate
+    public AjaxResult pTZControl(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
         Integer chanNo = cmd.getChanNo();
         Integer speed = cmd.getSpeed();
         Integer code = cmd.getCode();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
+            return AjaxResult.error("璁惧鏈櫥褰�");
         }
         NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId);
         int dwStop;
@@ -364,8 +393,9 @@
         boolean bool = PtzControlModule.ptzControl(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop);
         if (!bool) {
             log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint());
+            return AjaxResult.error(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()));
         }
-        return bool;
+        return AjaxResult.success();
     }
 
     /**
@@ -401,6 +431,11 @@
         return null;
     }
 
+    @Override
+    public AjaxResult setPtz1(CameraCmd cmd) {
+        return setPtz(cmd) ;
+    }
+
     /**
      * @鎻忚堪 璁剧疆ptz淇℃伅
      * @鍙傛暟 [userId, channelNum]
@@ -410,15 +445,20 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
-    public boolean setPtz(CameraCmd cmd) {
+    @SdkOperate
+    public AjaxResult setPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer chanNo = cmd.getChanNo();
         Map<String, Double> ptz = cmd.getPtzMap();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
+            return AjaxResult.error("璁惧鏈櫥褰�");
         }
         LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
         try {
+            if(ptz.get("p")==null||ptz.get("t")==null||ptz.get("z")==null)
+            {
+                return AjaxResult.error("ptz鍙傛暟涓嶈兘涓虹┖");
+            }
             int p = (int) (ptz.get("p") * 10);
             int t = (int) (ptz.get("t") * 10);
             t = t > 900 ? 3600 - t : t * -1;
@@ -427,11 +467,12 @@
             boolean bool = netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0);
             if (!bool) {
                 log.error("鎺у埗澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint());
+                return AjaxResult.error(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()));
             }
-            return bool;
+            return AjaxResult.success();
         } catch (Exception ex) {
             log.error(ex.getMessage());
-            return false;
+            return AjaxResult.error(ex.getMessage());
         }
     }
 
@@ -444,6 +485,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
+    @SdkOperate
     public boolean setZeroPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer chanNo = cmd.getChanNo();
@@ -485,6 +527,11 @@
         }
         return picUrl;
 
+    }
+
+    @Override
+    public Map<String, Object> getPtz1(CameraCmd cmd) {
+        return getPtz(cmd);
     }
 
     /**
@@ -1058,4 +1105,4 @@
         }
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3