From ef776e9fd5e4f64e4ad09a3faa12fb7bb646c79c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 08:15:36 +0800
Subject: [PATCH] Merge branch 'stationChange'

---
 src/main/java/com/zy/core/cache/MessageQueue.java |   88 +++++++++++++++++++++++++++-----------------
 1 files changed, 54 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java
index 48d96cd..668e31e 100644
--- a/src/main/java/com/zy/core/cache/MessageQueue.java
+++ b/src/main/java/com/zy/core/cache/MessageQueue.java
@@ -4,6 +4,7 @@
 import com.zy.core.model.Task;
 
 import java.util.Map;
+import java.util.Queue;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -65,21 +66,19 @@
      * 濡傛灉鍙戠幇闃熷垪宸叉弧鏃犳硶娣诲姞鐨勮瘽锛屼細鐩存帴杩斿洖false銆�
      */
     public static boolean offer(SlaveType type, Integer id, Task task) {
+        Queue<Task> queue = resolveQueue(type, id);
+        if (queue == null) {
+            return false;
+        }
         switch (type) {
             case Crn:
-                return CRN_EXCHANGE.get(id).offer(task);
             case DualCrn:
-                return DUAL_CRN_EXCHANGE.get(id).offer(task);
             case Rgv:
-                return RGV_EXCHANGE.get(id).offer(task);
             case Devp:
-                return DEVP_EXCHANGE.get(id).offer(task);
             case Barcode:
-                return BARCODE_EXCHANGE.get(id).offer(task);
             case Led:
-                return LED_EXCHANGE.get(id).offer(task);
             case Scale:
-                return SCALE_EXCHANGE.get(id).offer(task);
+                return queue.offer(task);
             default:
                 return false;
         }
@@ -90,21 +89,19 @@
      * 鑻ラ槦鍒椾负绌猴紝杩斿洖null銆�
      */
     public static Task poll(SlaveType type, Integer id) {
+        Queue<Task> queue = resolveQueue(type, id);
+        if (queue == null) {
+            return null;
+        }
         switch (type) {
             case Crn:
-                return CRN_EXCHANGE.get(id).poll();
             case DualCrn:
-                return DUAL_CRN_EXCHANGE.get(id).poll();
             case Rgv:
-                return RGV_EXCHANGE.get(id).poll();
             case Devp:
-                return DEVP_EXCHANGE.get(id).poll();
             case Barcode:
-                return BARCODE_EXCHANGE.get(id).poll();
             case Led:
-                return LED_EXCHANGE.get(id).poll();
             case Scale:
-                return SCALE_EXCHANGE.get(id).poll();
+                return queue.poll();
             default:
                 return null;
         }
@@ -114,52 +111,75 @@
      * 鍙栧嚭鍏冪礌锛屽苟涓嶅垹闄�.
      */
     public static Task peek(SlaveType type, Integer id) {
+        Queue<Task> queue = resolveQueue(type, id);
+        if (queue == null) {
+            return null;
+        }
         switch (type) {
             case Crn:
-                return CRN_EXCHANGE.get(id).peek();
             case DualCrn:
-                return DUAL_CRN_EXCHANGE.get(id).peek();
             case Rgv:
-                return RGV_EXCHANGE.get(id).peek();
             case Devp:
-                return DEVP_EXCHANGE.get(id).peek();
             case Barcode:
-                return BARCODE_EXCHANGE.get(id).peek();
             case Led:
-                return LED_EXCHANGE.get(id).peek();
             case Scale:
-                return SCALE_EXCHANGE.get(id).peek();
+                return queue.peek();
             default:
                 return null;
         }
     }
 
     public static void clear(SlaveType type, Integer id){
+        Queue<Task> queue = resolveQueue(type, id);
+        if (queue == null) {
+            return;
+        }
         switch (type) {
             case Crn:
-                CRN_EXCHANGE.get(id).clear();
-                break;
             case DualCrn:
-                DUAL_CRN_EXCHANGE.get(id).clear();
-                break;
             case Rgv:
-                RGV_EXCHANGE.get(id).clear();
-                break;
             case Devp:
-                DEVP_EXCHANGE.get(id).clear();
-                break;
             case Barcode:
-                BARCODE_EXCHANGE.get(id).clear();
-                break;
             case Led:
-                LED_EXCHANGE.get(id).clear();
-                break;
             case Scale:
-                SCALE_EXCHANGE.get(id).clear();
+                queue.clear();
                 break;
             default:
                 break;
         }
     }
 
+    public static boolean hasExchange(SlaveType type, Integer id) {
+        return resolveQueue(type, id) != null;
+    }
+
+    public static int size(SlaveType type, Integer id) {
+        Queue<Task> queue = resolveQueue(type, id);
+        return queue == null ? 0 : queue.size();
+    }
+
+    private static Queue<Task> resolveQueue(SlaveType type, Integer id) {
+        if (type == null || id == null) {
+            return null;
+        }
+        switch (type) {
+            case Crn:
+                return CRN_EXCHANGE.get(id);
+            case DualCrn:
+                return DUAL_CRN_EXCHANGE.get(id);
+            case Rgv:
+                return RGV_EXCHANGE.get(id);
+            case Devp:
+                return DEVP_EXCHANGE.get(id);
+            case Barcode:
+                return BARCODE_EXCHANGE.get(id);
+            case Led:
+                return LED_EXCHANGE.get(id);
+            case Scale:
+                return SCALE_EXCHANGE.get(id);
+            default:
+                return null;
+        }
+    }
+
 }

--
Gitblit v1.9.1