From 2988d2670cf03ef1ab074b0c6cd54301570c8ba4 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 24 八月 2023 12:01:26 +0800
Subject: [PATCH] 修复引导过程中修改相机导致引导队列中止出队的问题 增加一键派警描述字段

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java |   50 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 35 insertions(+), 15 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
index 4ea42ef..d879397 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java
@@ -1,18 +1,20 @@
 package com.ruoyi.device.hiksdk.util.hikSdkUtil;
 
-import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue;
-import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
+import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
+import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
+import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.channel.domain.ArdChannel;
+import com.ruoyi.device.channel.service.IArdChannelService;
 import com.ruoyi.device.hiksdk.common.GlobalVariable;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.sun.jna.Pointer;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
 import java.util.Comparator;
-import java.util.PriorityQueue;
+import java.util.List;
 import java.util.concurrent.PriorityBlockingQueue;
 
 /**
@@ -33,25 +35,43 @@
 
     @Override
     public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) {
+        IArdChannelService ardChannelService = SpringUtils.getBean(IArdChannelService.class);
+        IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class);
+        IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class);
         if (GlobalVariable.loginMap.containsKey(camera.getId())) {
             GlobalVariable.loginMap.remove(camera.getId());
         }
         if (dwResult == 1) {
             GlobalVariable.loginMap.put(camera.getId(), lUserID);
-            log.info(camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛");
+            log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍鎴愬姛");
             camera.setLoginId(lUserID);
-            camera.setChannel((int) lpDeviceinfo.byChanNum);
+            camera.setChanNum((int) lpDeviceinfo.byChanNum);
+            camera.setStartDChan((int)lpDeviceinfo.byStartDChan);
+
+            //鑾峰彇鏈�鏂伴�氶亾
+            List<ArdChannel> cameraChannelList = hikClientService.getCameraChannelList(camera);
+            if(cameraChannelList.size()>0) {
+                //鍒犻櫎绠$悊閫氶亾
+                ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+                for (ArdChannel channel : cameraChannelList) {
+                    channel.setId(IdUtils.simpleUUID());
+                    ardChannelService.insertArdChannel(channel);
+                }
+            }
             //鍒涘缓寮曞闃熷垪
-            Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
-            PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000,comparator);
-            GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+            if(!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId()))
+            {
+                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+            }
+
         } else {
-            log.info(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触");
-            camera.setChannel(0);
+            log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触");
+            camera.setChanNum(0);
             camera.setLoginId(-1);
         }
-        ArdCamerasMapper ardCamerasMapper = SpringUtils.getBean(ArdCamerasMapper.class);
-        ardCamerasMapper.updateArdCameras(camera);
+        ardCamerasService.updateArdCameras(camera);
         return 1;
     }
 }

--
Gitblit v1.9.3