From 720e0926fa1c94b952c26e111206c5d6e1ed5ba2 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 21 四月 2026 15:59:49 +0800
Subject: [PATCH] Merge branch 'master' of http://47.97.1.152:5880/r/zy-wcs-master

---
 src/main/java/com/zy/core/network/real/ZyStationV5RealConnect.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationV5RealConnect.java
similarity index 90%
rename from src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
rename to src/main/java/com/zy/core/network/real/ZyStationV5RealConnect.java
index 31ba8b4..b118520 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationV5RealConnect.java
@@ -30,13 +30,15 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 杈撻�佺珯鐪熷疄杩炴帴锛圥LC锛�
  */
 @Slf4j
-public class ZyStationV4RealConnect implements ZyStationConnectApi {
+public class ZyStationV5RealConnect implements ZyStationConnectApi {
 
     private static final int TASK_AREA_LENGTH = 48;
     private static final int TASK_AREA_SLOT_SIZE = 12;
@@ -72,11 +74,12 @@
     private List<ZyStationStatusEntity> statusList;
     private List<StationObjModel> barcodeOriginList;
     private List<StationObjModel> inStationOriginList;
+    private Map<Integer, Integer> inStationBarcodeStationMap;
     private SiemensS7Net siemensNet;
     private DeviceConfig deviceConfig;
     private RedisUtil redisUtil;
 
-    public ZyStationV4RealConnect(DeviceConfig deviceConfig, RedisUtil redisUtil) {
+    public ZyStationV5RealConnect(DeviceConfig deviceConfig, RedisUtil redisUtil) {
         this.deviceConfig = deviceConfig;
         this.redisUtil = redisUtil;
     }
@@ -130,6 +133,7 @@
             }
             barcodeOriginList = basDevp.getBarcodeStationList$();
             inStationOriginList = sortStationObjModelsByStationId(basDevp.getInStationList$());
+            inStationBarcodeStationMap = buildInStationBarcodeStationMap(inStationOriginList);
         }
 
         if (siemensNet == null) {
@@ -271,6 +275,7 @@
                 }
                 Integer ioMode = normalizeIoMode((int) siemensNet.getByteTransform().TransInt16(result6.Content, i * 2));
                 inStationEntity.setIoMode(ioMode);
+                syncBarcodeStationIoMode(inStationEntity.getStationId(), ioMode);
             }
         }
 
@@ -423,6 +428,30 @@
         return null;
     }
 
+    private void syncBarcodeStationIoMode(Integer inStationId, Integer ioMode) {
+        Integer barcodeStationId = findBarcodeStationIdByInStationId(inStationBarcodeStationMap, inStationId);
+        if (barcodeStationId == null) {
+            return;
+        }
+        ZyStationStatusEntity barcodeStationEntity = findStatusEntityByStationId(barcodeStationId);
+        if (barcodeStationEntity == null) {
+            return;
+        }
+        barcodeStationEntity.setIoMode(ioMode);
+    }
+
+    private ZyStationStatusEntity findStatusEntityByStationId(Integer stationId) {
+        if (stationId == null) {
+            return null;
+        }
+        for (ZyStationStatusEntity zyStationStatusEntity : statusList) {
+            if (zyStationStatusEntity.getStationId().equals(stationId)) {
+                return zyStationStatusEntity;
+            }
+        }
+        return null;
+    }
+
     private int getTaskWriteIdx(int stationIdx, Integer taskWriteIdx) {
         int useIdx = -1;
         if (stationIdx < 0 || taskWriteIdx == null || taskWriteIdx <= 0) {
@@ -535,6 +564,31 @@
         return stationObjModels;
     }
 
+    static Map<Integer, Integer> buildInStationBarcodeStationMap(List<StationObjModel> inStationOriginList) {
+        Map<Integer, Integer> map = new HashMap<>();
+        if (inStationOriginList == null) {
+            return map;
+        }
+        for (StationObjModel inStation : inStationOriginList) {
+            if (inStation == null || inStation.getStationId() == null) {
+                continue;
+            }
+            StationObjModel barcodeStation = inStation.getBarcodeStation();
+            if (barcodeStation == null || barcodeStation.getStationId() == null) {
+                continue;
+            }
+            map.put(inStation.getStationId(), barcodeStation.getStationId());
+        }
+        return map;
+    }
+
+    static Integer findBarcodeStationIdByInStationId(Map<Integer, Integer> inStationBarcodeStationMap, Integer inStationId) {
+        if (inStationBarcodeStationMap == null || inStationId == null) {
+            return null;
+        }
+        return inStationBarcodeStationMap.get(inStationId);
+    }
+
     private static void appendConveyorCommonAlarmMessages(StringBuilder sb, boolean[] status, int startIdx) {
         if (status == null) {
             return;

--
Gitblit v1.9.1