From b5b9378fcc0013a8b95d654f3aa09905c224182c Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期一, 03 七月 2023 09:18:38 +0800
Subject: [PATCH] 增加雷达报警1003和1004查看报警 修改查看报警点数量只获取未读数量

---
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java |   47 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
index 0703126..edff059 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
@@ -2,6 +2,8 @@
 
 import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue;
 import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.tomcat.util.threads.TaskThread;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -11,21 +13,25 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.PriorityBlockingQueue;
 
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
+
 /**
  * @ClassName QueueManager
- * @Description:
+ * @Description: 闃熷垪绠$悊
  * @Author 鍒樿嫃涔�
  * @Date 2023/6/29 21:09
  * @Version 1.0
  */
 
 @Component
+@Slf4j(topic = "guideQueue")
 public class QueueManager {
 
     @Autowired
     private QueueTaskExecutor taskExecutor;
     private Map<String, TaskThread> threadMap = new ConcurrentHashMap<>();
 
+    /*鍐呴儴闈欐�佺被*/
     private static class TaskThread {
         private Thread thread;
         private GuideTask currentTask;
@@ -48,36 +54,55 @@
         }
     }
 
-    public void addTaskToQueue(String queueName, GuideTask task) {
-        PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(queueName);
+    /**
+     * 寮曞浠诲姟鍏ラ槦
+     * 鍒樿嫃涔�
+     * 2023/6/30 8:57
+     */
+    public void addTaskToQueue(String cameraId, GuideTask task) {
+        /*閫氳繃鐩告満ID鑾峰彇寮曞闃熷垪锛屽苟灏嗗紩瀵间换鍔″姞鍏ラ槦鍒�*/
+        PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId);
+        if(StringUtils.isNull(guideTaskQueue))
+        {
+            log.info("鐩告満鏈櫥褰曪紝娌℃湁闃熷垪");
+        }
+        log.debug("鏂颁换鍔″叆闃�:"+task.getAlarmId());
         guideTaskQueue.add(task);
-        TaskThread currentTaskThread = threadMap.get(queueName);
+        /*鑾峰彇璇ョ浉鏈虹殑褰撳墠鎵ц绾跨▼*/
+        TaskThread currentTaskThread = threadMap.get(cameraId);
+        //濡傛灉闃熷垪褰撳墠绾跨▼姝e湪杩愯锛岃嫢鍏ラ槦浠诲姟浼樺厛绾уぇ浜庡綋鍓嶄换鍔′紭鍏堢骇锛屽垯缁堟褰撳墠绾跨▼
         if (currentTaskThread != null && task.getPriority() > currentTaskThread.getCurrentTask().getPriority()) {
             currentTaskThread.getThread().interrupt();
         }
-
-        // Start a new thread if no thread is currently running for the queue
+        //濡傛灉闃熷垪褰撳墠娌℃湁绾跨▼姝e湪杩愯锛屽垯鍚姩鏂扮嚎绋�
         if (currentTaskThread == null || !currentTaskThread.getThread().isAlive()) {
-            Thread newThread = createThread(queueName, guideTaskQueue);
-            threadMap.put(queueName, new TaskThread(newThread, task));
+            Thread newThread = createThread(cameraId, guideTaskQueue);
+            threadMap.put(cameraId, new TaskThread(newThread, task));
             newThread.start();
         }
     }
 
+    /**
+     * 鍒涘缓绾跨▼
+     * 鍒樿嫃涔�
+     * 2023/6/30 9:04
+     */
     private Thread createThread(String queueName, PriorityBlockingQueue<GuideTask> queue) {
+
         return new Thread(() -> {
             while (!Thread.currentThread().isInterrupted()) {
                 try {
                     GuideTask task = queue.take();
+                    log.debug("鍙栧嚭闃熷垪鏁版嵁:"+task.getAlarmId());
                     taskExecutor.processTask(task);
-                    GuidePriorityQueue.printPriorityQueue();
-                    // Update the current task for the thread
+                    // 鏇存柊绾跨▼鐨勫綋鍓嶄换鍔�
                     TaskThread currentTaskThread = threadMap.get(queueName);
                     if (currentTaskThread != null) {
                         currentTaskThread.setCurrentTask(task);
                     }
                 } catch (InterruptedException e) {
-                    // Thread interrupted, exit the loop
+                    log.info("涓柇褰撳墠绾跨▼");
+                    //绾跨▼涓柇锛岄��鍑哄惊鐜�
                     Thread.currentThread().interrupt();
                 }
             }

--
Gitblit v1.9.3