From 21842952d812db640235becb88de527c17335f58 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 18:04:30 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/plugin/GslProcess.java |   40 ++++++++++++++++++++++++++++++++--------
 1 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/zy/core/plugin/GslProcess.java b/src/main/java/com/zy/core/plugin/GslProcess.java
index 2f2f632..2e9202b 100644
--- a/src/main/java/com/zy/core/plugin/GslProcess.java
+++ b/src/main/java/com/zy/core/plugin/GslProcess.java
@@ -8,14 +8,13 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.News;
-import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
+import com.zy.core.dispatch.StationCommandDispatcher;
 import com.zy.core.enums.RedisKeyType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.enums.StationCommandType;
 import com.zy.core.enums.WrkIoType;
 import com.zy.core.model.StationObjModel;
-import com.zy.core.model.Task;
 import com.zy.core.model.command.StationCommand;
 import com.zy.core.model.protocol.StationProtocol;
 import com.zy.core.plugin.api.MainProcessPluginApi;
@@ -23,9 +22,11 @@
 import com.zy.core.plugin.store.StoreInTaskContext;
 import com.zy.core.plugin.store.StoreInTaskGenerationService;
 import com.zy.core.plugin.store.StoreInTaskPolicy;
+import com.zy.core.properties.SystemProperties;
 import com.zy.core.thread.StationThread;
 import com.zy.core.utils.CrnOperateProcessUtils;
 import com.zy.core.utils.StationOperateProcessUtils;
+import com.zy.system.entity.Config;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -49,18 +50,41 @@
     private RedisUtil redisUtil;
     @Autowired
     private StoreInTaskGenerationService storeInTaskGenerationService;
+    @Autowired
+    private StationCommandDispatcher stationCommandDispatcher;
+
+    private Thread crnRunThread = null;
 
     @Override
     public void run() {
+        if (crnRunThread == null) {
+            crnRunThread = new Thread(() -> {
+                while (!Thread.currentThread().isInterrupted()) {
+                    try {
+                        //鎵ц鍫嗗灈鏈轰换鍔�
+                        crnOperateUtils.crnIoExecute();
+                        //鍫嗗灈鏈轰换鍔℃墽琛屽畬鎴�
+                        crnOperateUtils.crnIoExecuteFinish();
+                        // 闂撮殧
+                        Thread.sleep(50);
+                    } catch (InterruptedException ie) {
+                        Thread.currentThread().interrupt();
+                        break;
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            });
+            crnRunThread.setName("crnRunProcess");
+            crnRunThread.setDaemon(true);
+            crnRunThread.start();
+        }
+
         //妫�娴嬪叆搴撶珯鏄惁鏈変换鍔$敓鎴愶紝骞跺惎鍔ㄥ叆搴�
         checkInStationHasTask();
         //璇锋眰鐢熸垚鍏ュ簱浠诲姟
         generateStoreWrkFile();
 
-        //鎵ц鍫嗗灈鏈轰换鍔�
-        crnOperateUtils.crnIoExecute();
-        //鍫嗗灈鏈轰换鍔℃墽琛屽畬鎴�-鍏峰浠跨湡鑳藉姏
-        crnOperateUtils.crnIoExecuteFinish();
         //鎵ц杈撻�佺珯鐐瑰叆搴撲换鍔�
         stationOperateProcessUtils.stationInExecute();
         //鎵ц杈撻�佺珯鐐瑰嚭搴撲换鍔�
@@ -115,7 +139,7 @@
             News.taskInfo(stationProtocol.getTaskNo(), "{}宸ヤ綔,鑾峰彇杈撻�佺嚎鍛戒护澶辫触", stationProtocol.getTaskNo());
             return false;
         }
-        MessageQueue.offer(SlaveType.Devp, context.getBasDevp().getDevpNo(), new Task(2, command));
+        stationCommandDispatcher.dispatch(context.getBasDevp().getDevpNo(), command, "gsl-process", "station-back");
         News.taskInfo(stationProtocol.getTaskNo(), "{}鎵爜寮傚父锛屽凡閫�鍥炶嚦{}", backStation.getStationId());
         redisUtil.set(RedisKeyType.GENERATE_STATION_BACK_LIMIT.key + stationProtocol.getStationId(), "lock", 10);
         return true;
@@ -163,7 +187,7 @@
                         && stationProtocol.isEnableIn()
                 ) {
                     StationCommand command = stationThread.getCommand(StationCommandType.MOVE, commonService.getWorkNo(WrkIoType.ENABLE_IN.id), stationId, entity.getBarcodeStation().getStationId(), 0);
-                    MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
+                    stationCommandDispatcher.dispatch(basDevp.getDevpNo(), command, "gsl-process", "enable-in");
                     redisUtil.set(RedisKeyType.GENERATE_ENABLE_IN_STATION_DATA_LIMIT.key + stationId, "lock", 15);
                     News.info("{}绔欑偣鍚姩鍏ュ簱鎴愬姛锛屾暟鎹寘:{}", stationId, JSON.toJSONString(command));
                 }

--
Gitblit v1.9.1