From 1ba343ab3a7cd5cbabfef6a27a5344051f526793 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 25 十一月 2025 16:49:50 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java |  102 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 80 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
index b1281e2..1ec6b2d 100644
--- a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
@@ -6,6 +6,7 @@
 import com.zy.asrs.entity.DeviceConfig;
 import com.zy.common.model.NavigateNode;
 import com.zy.common.utils.NavigateUtils;
+import com.zy.core.News;
 import com.zy.core.model.CommandResponse;
 import com.zy.core.model.command.StationCommand;
 import com.zy.core.network.api.ZyStationConnectApi;
@@ -26,7 +27,7 @@
     private final DeviceConfig deviceConfig;
     // 鍏佽骞惰鎵ц澶氫釜鍛戒护浠诲姟锛堝浐瀹氱嚎绋嬫睜锛夈�傚闇�鏇撮珮骞跺彂鍙皟鏁村ぇ灏忋��
     private final ExecutorService executor = Executors
-            .newFixedThreadPool(Math.max(2, Runtime.getRuntime().availableProcessors()));
+            .newFixedThreadPool(9999);
 
     public ZyStationFakeConnect(DeviceConfig deviceConfig) {
         this.deviceConfig = deviceConfig;
@@ -77,8 +78,28 @@
     }
 
     private void handleCommand(StationCommand command) {
+        News.info("[WCS Debug] 绔欑偣浠跨湡妯℃嫙宸插惎鍔紝鍛戒护鏁版嵁={}", JSON.toJSONString(command));
+        Integer taskNo = command.getTaskNo();
         Integer stationId = command.getStationId();
         Integer targetStationId = command.getTargetStaNo();
+
+        if(taskNo == 0 && targetStationId == 0){
+            //娓呯┖绔欑偣
+            resetStation(stationId);
+            return;
+        }
+
+        if (taskNo == 9999 && targetStationId == 0) {
+            //鐢熸垚浠跨湡鏁版嵁
+            generateFakeData(stationId, taskNo);
+            return;
+        }
+
+        if (taskNo == 9998 && targetStationId == 0) {
+            //鐢熸垚鍑哄簱绔欑偣浠跨湡鏁版嵁
+            generateFakeOutStationData(stationId);
+            return;
+        }
 
         String startLev = String.valueOf(stationId).substring(0, 1);
         String endLev = String.valueOf(targetStationId).substring(0, 1);
@@ -88,6 +109,40 @@
         }else {
             diffLevCommand(command);
         }
+    }
+
+    private void generateFakeData(Integer stationId, Integer taskNo) {
+        ZyStationStatusEntity status = statusList.stream()
+                .filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
+        if (status == null) {
+            return;
+        }
+
+        status.setTaskNo(taskNo);
+        status.setLoading(true);
+        status.setBarcode(String.valueOf(System.currentTimeMillis()));
+    }
+
+    private void generateFakeOutStationData(Integer stationId) {
+        ZyStationStatusEntity status = statusList.stream()
+                .filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
+        if (status == null) {
+            return;
+        }
+
+        status.setLoading(true);
+    }
+
+    private void resetStation(Integer stationId) {
+        ZyStationStatusEntity status = statusList.stream()
+                .filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
+        if (status == null) {
+            return;
+        }
+
+        status.setTaskNo(0);
+        status.setLoading(false);
+        status.setBarcode("");
     }
 
     private void currentLevCommand(StationCommand command) {
@@ -114,7 +169,7 @@
             return;
         }
 
-        stationMove(navigateNodes, taskNo, targetStationId);
+        stationMove(navigateNodes, taskNo, targetStationId, false);
     }
 
     private void diffLevCommand(StationCommand command) {
@@ -189,11 +244,11 @@
             return;
         }
 
-        stationMove(navigateNodes, taskNo, stationId);
-        stationMove(targetNavigateNodes, taskNo, targetStationId);
+        stationMove(navigateNodes, taskNo, stationId, true);
+        stationMove(targetNavigateNodes, taskNo, targetStationId, false);
     }
 
-    private void stationMove(List<NavigateNode> navigateNodes, Integer taskNo, Integer targetStationId) {
+    private void stationMove(List<NavigateNode> navigateNodes, Integer taskNo, Integer targetStationId, boolean clearData) {
         Integer lastStationId = null;
         for (int i = 0; i < navigateNodes.size(); i++) {
             NavigateNode navigateNode = navigateNodes.get(i);
@@ -213,7 +268,7 @@
                         continue;
                     }
 
-                    if (nextStatus.getTaskNo() == 0) {
+                    if (nextStatus.getTaskNo() == 0 || nextStatus.getTaskNo() == 9999) {
                         break;
                     }
 
@@ -221,12 +276,6 @@
                 }
             } catch (Exception e) {
                 continue;
-            }
-
-            synchronized (status) {
-                status.setTaskNo(taskNo);
-                status.setTargetStaNo(targetStationId);
-                status.setLoading(true);
             }
 
             if (lastStationId != null) {
@@ -241,20 +290,29 @@
                     }
                 }
             }
+
+            synchronized (status) {
+                status.setTaskNo(taskNo);
+                status.setTargetStaNo(targetStationId);
+                status.setLoading(true);
+            }
+
             lastStationId = currentStationId;
             sleep(1000);
         }
 
-        sleep(10000);
-        if (lastStationId != null) {
-            Integer finalLastStationId = lastStationId;
-            ZyStationStatusEntity lastStatus = statusList.stream()
-                    .filter(item -> item.getStationId().equals(finalLastStationId)).findFirst().orElse(null);
-            if (lastStatus != null) {
-                synchronized (lastStatus) {
-                    lastStatus.setTaskNo(0);
-                    lastStatus.setTargetStaNo(0);
-                    lastStatus.setLoading(false);
+        if (clearData) {
+            sleep(10000);
+            if (lastStationId != null) {
+                Integer finalLastStationId = lastStationId;
+                ZyStationStatusEntity lastStatus = statusList.stream()
+                        .filter(item -> item.getStationId().equals(finalLastStationId)).findFirst().orElse(null);
+                if (lastStatus != null) {
+                    synchronized (lastStatus) {
+                        lastStatus.setTaskNo(0);
+                        lastStatus.setTargetStaNo(0);
+                        lastStatus.setLoading(false);
+                    }
                 }
             }
         }

--
Gitblit v1.9.1