From e8d53b7555595df35bd2fe03a5c5cf449c38859c Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 14 十二月 2023 13:30:49 +0800
Subject: [PATCH] 增加PTZ引导优先; 井管理增加可见光和热红外ptz设置; 雷达报警引导只需要引导雷达塔上的光电,通道根据日夜切换自动选择; 引导优先按井配置的ptz进行引导,当未配置时按经纬度进行引导; 相机优先级队列排序取消报警次数num比对,仅由优先级和接收时间作为比较器条件;

---
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index d822c17..8bf60c2 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -57,6 +57,7 @@
     @Resource
     private QueueHandler queueHandler;
 
+    public Object _lock=new Object();
     public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
     private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟
 
@@ -180,7 +181,6 @@
     @Async("loginExecutor")
     public void asyncLogin(ArdCameras camera) {
         try {
-            Thread.sleep(100);
             // 鍒濆鍖�
             if (!hCNetSDK.NET_DVR_Init()) {
                 log.error("SDK鍒濆鍖栧け璐�");
@@ -230,17 +230,18 @@
             }
 
             log.debug("Login Success 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�");
-            if (fExceptionCallBack == null) {
-                fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
-                //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
-                if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
-                    log.debug("Set fExceptionCallBack function fail");
-                    return;
-                } else {
-                    log.debug("Set fExceptionCallBack function successfully!");
+            synchronized (_lock) {
+                if (fExceptionCallBack == null) {
+                    fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
+                    //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
+                    if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+                        log.debug("Set fExceptionCallBack function fail");
+                        return;
+                    } else {
+                        log.debug("Set fExceptionCallBack function successfully!");
+                    }
                 }
             }
-
             if (GlobalVariable.loginMap.containsKey(camera.getId())) {
                 GlobalVariable.loginMap.remove(camera.getId());
             }
@@ -269,6 +270,15 @@
             //娣诲姞鍒版祦濯掍綋
             addVtdu(camera);
             //鍒涘缓寮曞闃熷垪
+            createGuideQueue(camera);
+        } catch (Exception ex) {
+            log.error("娉ㄥ唽璁惧寮傚父", ex);
+        }
+    }
+
+    //鍒涘缓寮曞闃熷垪
+    private void createGuideQueue(ArdCameras camera) {
+        if(camera.getCamAlarmGuideEnable()!=null) {
             if (camera.getCamAlarmGuideEnable() == 1) {
                 if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
                     Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
@@ -278,11 +288,8 @@
                     queueHandler.process(camera.getId());
                 }
             }
-        } catch (Exception ex) {
-            log.error("娉ㄥ唽璁惧寮傚父", ex);
         }
     }
-
     //娣诲姞鍒版祦濯掍綋
     private void addVtdu(ArdCameras camera) {
         try {

--
Gitblit v1.9.3