From 9608f4a428d522c04da21c6b6eea9fa76d01b136 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 16:05:16 +0800
Subject: [PATCH] #输送线异常信息采集

---
 src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java |   99 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 92 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
index 6e91763..ea6e8c9 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
@@ -39,6 +39,33 @@
     private static final int TASK_AREA_LENGTH = 48;
     private static final int TASK_AREA_SLOT_SIZE = 12;
     private static final int TASK_AREA_SLOT_COUNT = 3;
+    private static final String[] CONVEYOR_COMMON_ALARM_MESSAGES = {
+            "鎬ュ仠",
+            "浣庝綅鏂矾鍣ㄦ柇寮�",
+            "浣庝綅鍙橀鍣ㄦ晠闅�",
+            "杈撻�佽繍琛岃秴鏃�",
+            "椤跺崌杩愯瓒呮椂",
+            "鐢宠浠诲姟瓒呮椂",
+            "鎵樼洏绐佸嚭鎶ヨ",
+            "浠诲姟杩愯瓒呮椂",
+            "FWD鏃嬭浆闄愪綅鎶ヨ",
+            "REV鏃嬭浆闄愪綅鎶ヨ",
+            "鎵爜妫�楠屽紓甯�",
+            "瀹夊叏闂ㄦ墦寮�鎶ヨ",
+            "浠诲姟閲嶅鎶ヨ",
+            "鍏ョ珯杩囩▼涓墠缃潯浠跺紓甯�",
+            "鍏ョ珯鍓嶇疆鏉′欢绛夊緟瓒呮椂",
+            "鍑虹珯杩囩▼涓墠缃潯浠跺紓甯�",
+            "鍑虹珯鍓嶇疆鏉′欢绛夊緟瓒呮椂",
+            "楂樹綅鏂矾鍣ㄦ柇寮�",
+            "楂樹綅鍙橀鍣ㄦ晠闅�",
+            "椤跺崌闄愪綅淇″彿寮傚父",
+            "鍏ョ珯杩愯涓紝涓婄珯鍚屾杩愯璇锋眰娑堝け",
+            "鍑虹珯瀹屾垚鍚庯紝浠嶇劧妫�娴嬪埌鎵樼洏",
+            "鍏ョ珯瀹屾垚鍚庯紝娌℃湁妫�娴嬪埌鎵樼洏",
+            "涓嬬珯绔欏彿寮傚父",
+            "璺緞鏌ヨ寮傚父"
+    };
 
     private List<ZyStationStatusEntity> statusList;
     private List<StationObjModel> barcodeOriginList;
@@ -138,6 +165,7 @@
                 statusEntity.setPalletHeight(palletHeight);//楂樹綆淇″彿
 
                 statusEntity.setError(0);//榛樿鏃犳姤璀�
+                statusEntity.setErrorMsg("");
 
                 statusEntity.setTaskWriteIdx((int) siemensNet.getByteTransform().TransInt16(result.Content, i * 10 + 8));//浠诲姟鍙啓鍖�
                 fillTaskBufferStatus(taskBufferRaw, i, statusEntity);
@@ -171,7 +199,7 @@
             }
         }
 
-        // 鎶ヨ淇℃伅
+        // 鏉$爜绔欐姤璀︿俊鎭�
         OperateResultExOne<byte[]> result4 = siemensNet.Read("DB103.2", (short) (barcodeOriginList.size() * 2));
         if (result4.IsSuccess) {
             for (int i = 0; i < barcodeOriginList.size(); i++) {
@@ -209,12 +237,22 @@
                     sb.append("鎵爜寮傚父;");
                 }
 
-                if(sb.length() > 0) {
-                    barcodeEntity.setError(1);
-                }else {
-                    barcodeEntity.setError(0);
-                }
-                barcodeEntity.setErrorMsg(sb.toString());
+                applyAlarmMessage(barcodeEntity, sb.toString());
+            }
+        }
+
+        // 杈撻�佺珯鐐归�氱敤鎶ヨ淇℃伅
+        OperateResultExOne<byte[]> result5 = siemensNet.Read("DB25.0", (short) (statusList.size() * 4));
+        if (result5.IsSuccess) {
+            for (int i = 0; i < statusList.size(); i++) {
+                ZyStationStatusEntity statusEntity = statusList.get(i); // 绔欑偣缂栧彿
+                boolean[] status1 = siemensNet.getByteTransform().TransBool(result5.Content, i * 4, 1);
+                boolean[] status2 = siemensNet.getByteTransform().TransBool(result5.Content, i * 4 + 1, 1);
+                boolean[] status3 = siemensNet.getByteTransform().TransBool(result5.Content, i * 4 + 2, 1);
+                boolean[] status4 = siemensNet.getByteTransform().TransBool(result5.Content, i * 4 + 3, 1);
+
+                String alarmMsg = buildConveyorCommonAlarmMessage(status1, status2, status3, status4);
+                applyAlarmMessage(statusEntity, mergeAlarmMessages(statusEntity.getErrorMsg(), alarmMsg));
             }
         }
 
@@ -418,4 +456,51 @@
         return -1;
     }
 
+    static String buildConveyorCommonAlarmMessage(boolean[] status1, boolean[] status2, boolean[] status3, boolean[] status4) {
+        StringBuilder sb = new StringBuilder();
+        appendConveyorCommonAlarmMessages(sb, status1, 0);
+        appendConveyorCommonAlarmMessages(sb, status2, 8);
+        appendConveyorCommonAlarmMessages(sb, status3, 16);
+        appendConveyorCommonAlarmMessages(sb, status4, 24);
+        return sb.toString();
+    }
+
+    static String mergeAlarmMessages(String currentMsg, String appendMsg) {
+        String current = currentMsg == null ? "" : currentMsg;
+        String append = appendMsg == null ? "" : appendMsg;
+        if (append.isEmpty()) {
+            return current;
+        }
+        if (current.isEmpty()) {
+            return append;
+        }
+        if (!current.endsWith(";")) {
+            current += ";";
+        }
+        return current + append;
+    }
+
+    private static void appendConveyorCommonAlarmMessages(StringBuilder sb, boolean[] status, int startIdx) {
+        if (status == null) {
+            return;
+        }
+        int limit = Math.min(status.length, 8);
+        for (int i = 0; i < limit; i++) {
+            int alarmIdx = startIdx + i;
+            if (!status[i] || alarmIdx >= CONVEYOR_COMMON_ALARM_MESSAGES.length) {
+                continue;
+            }
+            sb.append(CONVEYOR_COMMON_ALARM_MESSAGES[alarmIdx]).append(";");
+        }
+    }
+
+    private static void applyAlarmMessage(ZyStationStatusEntity statusEntity, String alarmMsg) {
+        if (statusEntity == null) {
+            return;
+        }
+        String message = alarmMsg == null ? "" : alarmMsg;
+        statusEntity.setError(message.isEmpty() ? 0 : 1);
+        statusEntity.setErrorMsg(message);
+    }
+
 }

--
Gitblit v1.9.1