From f7629d0de2d3dd8cd7f96a1f130bbc05b644c7c1 Mon Sep 17 00:00:00 2001
From: Administrator <XS@163.COM>
Date: 星期六, 25 四月 2026 22:58:57 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index b2441e2..ca02361 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -218,6 +218,12 @@
 
             if (!stationProtocol.isInEnable()) {
                 News.taskInfo(stationProtocol.getTaskNo(), "鍙栬揣绔欑偣:{} 娌℃湁鍙叆淇″彿", stationObjModel.getStationId());
+                logTraceLimited("crn_in_wait_signal_" + crnNo + "_" + stationObjModel.getStationId(), 3,
+                        "[WCS Trace][鍫嗗灈鏈哄叆搴揮 鍙栬揣绔欑偣涓嶅彲鍏ャ�俢rnNo={}锛宻tationId={}锛宻tationTaskNo={}锛宎utoing={}锛宭oading={}锛宨nEnable={}锛宱utEnable={}锛宺unBlock={}锛宐arcode={}锛宼argetStaNo={}锛宑rnStatus={}锛宑rnTaskNo={}锛宑rnAlarm={}",
+                        crnNo, stationObjModel.getStationId(), stationProtocol.getTaskNo(),
+                        stationProtocol.isAutoing(), stationProtocol.isLoading(), stationProtocol.isInEnable(),
+                        stationProtocol.isOutEnable(), stationProtocol.isRunBlock(), stationProtocol.getBarcode(),
+                        stationProtocol.getTargetStaNo(), crnProtocol.getStatus(), crnProtocol.getTaskNo(), crnProtocol.getAlarm());
                 continue;
             }
 
@@ -254,6 +260,10 @@
             String sourceLocNo = Utils.getLocNo(stationObjModel.getDeviceRow(), stationObjModel.getDeviceBay(), stationObjModel.getDeviceLev());
 
             CrnCommand command = crnThread.getPickAndPutCommand(sourceLocNo, wrkMast.getLocNo(), wrkMast.getWrkNo(), crnNo);
+            logTraceLimited("crn_in_dispatch_" + wrkMast.getWrkNo(), 3,
+                    "[WCS Trace][鍫嗗灈鏈哄叆搴揮 鍑嗗涓嬪彂鍫嗗灈鏈哄叆搴撳懡浠ゃ�俢rnNo={}锛寃rkNo={}锛宻ourceStationId={}锛宻ourceLocNo={}锛宼argetLocNo={}锛宻tationTaskNo={}锛宑rnStatus={}锛宑rnTaskNo={}锛宑rnAlarm={}",
+                    crnNo, wrkMast.getWrkNo(), stationObjModel.getStationId(), sourceLocNo, wrkMast.getLocNo(),
+                    stationProtocol.getTaskNo(), crnProtocol.getStatus(), crnProtocol.getTaskNo(), crnProtocol.getAlarm());
 
             wrkMast.setWrkSts(WrkStsType.INBOUND_RUN.sts);
             wrkMast.setCrnNo(crnNo);
@@ -336,6 +346,12 @@
 
                 if (!stationProtocol.isOutEnable()) {
                     News.info("鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
+                    logTraceLimited("crn_out_wait_signal_" + crnNo + "_" + stationObjModel.getStationId(), 3,
+                            "[WCS Trace][鍫嗗灈鏈哄嚭搴揮 鏀捐揣绔欑偣涓嶅彲鍑恒�俢rnNo={}锛宻tationId={}锛寃rkNo={}锛宎utoing={}锛宭oading={}锛宨nEnable={}锛宱utEnable={}锛宺unBlock={}锛宻tationTaskNo={}锛宼argetStaNo={}锛宑rnStatus={}锛宑rnTaskNo={}锛宑rnAlarm={}",
+                            crnNo, stationObjModel.getStationId(), wrkMast.getWrkNo(),
+                            stationProtocol.isAutoing(), stationProtocol.isLoading(), stationProtocol.isInEnable(),
+                            stationProtocol.isOutEnable(), stationProtocol.isRunBlock(), stationProtocol.getTaskNo(),
+                            stationProtocol.getTargetStaNo(), crnProtocol.getStatus(), crnProtocol.getTaskNo(), crnProtocol.getAlarm());
                     continue;
                 }
 
@@ -361,6 +377,11 @@
                 String targetLocNo = Utils.getLocNo(stationObjModel.getDeviceRow(), stationObjModel.getDeviceBay(), stationObjModel.getDeviceLev());
 
                 CrnCommand command = crnThread.getPickAndPutCommand(wrkMast.getSourceLocNo(), targetLocNo, wrkMast.getWrkNo(), crnNo);
+                logTraceLimited("crn_out_dispatch_" + wrkMast.getWrkNo(), 3,
+                        "[WCS Trace][鍫嗗灈鏈哄嚭搴揮 鍑嗗涓嬪彂鍫嗗灈鏈哄嚭搴撳懡浠ゃ�俢rnNo={}锛寃rkNo={}锛宼argetStationId={}锛宻ourceLocNo={}锛宼argetLocNo={}锛宑rnStatus={}锛宑rnTaskNo={}锛宑rnAlarm={}",
+                        crnNo, wrkMast.getWrkNo(), stationObjModel.getStationId(),
+                        wrkMast.getSourceLocNo(), targetLocNo, crnProtocol.getStatus(),
+                        crnProtocol.getTaskNo(), crnProtocol.getAlarm());
 
                 wrkMast.setWrkSts(WrkStsType.OUTBOUND_RUN.sts);
                 wrkMast.setCrnNo(crnNo);
@@ -852,6 +873,15 @@
     }
 
     public void submitCrnIoTasks(MainProcessLane lane, long minIntervalMs) {
+        mainProcessTaskSubmitter.submitSerialTask(
+                MainProcessLane.CRN_SCAN,
+                "submitCrnIoTasks",
+                minIntervalMs,
+                () -> submitCrnIoTasksInternal(lane, minIntervalMs)
+        );
+    }
+
+    private void submitCrnIoTasksInternal(MainProcessLane lane, long minIntervalMs) {
         List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
         for (BasCrnp basCrnp : basCrnps) {
             if (basCrnp == null || basCrnp.getCrnNo() == null) {
@@ -873,6 +903,15 @@
     }
 
     public void submitCrnIoExecuteFinishTasks(MainProcessLane lane, long minIntervalMs) {
+        mainProcessTaskSubmitter.submitSerialTask(
+                MainProcessLane.CRN_SCAN,
+                "submitCrnIoExecuteFinishTasks",
+                minIntervalMs,
+                () -> submitCrnIoExecuteFinishTasksInternal(lane, minIntervalMs)
+        );
+    }
+
+    private void submitCrnIoExecuteFinishTasksInternal(MainProcessLane lane, long minIntervalMs) {
         List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
         for (BasCrnp basCrnp : basCrnps) {
             if (basCrnp == null || basCrnp.getCrnNo() == null) {
@@ -889,6 +928,20 @@
         }
     }
 
+    private void logTraceLimited(String lockKey, int seconds, String format, Object... arguments) {
+        String redisKey = RedisKeyType.LOG_LIMIT.key + "wcs_trace_" + lockKey;
+        try {
+            Object lock = redisUtil.get(redisKey);
+            if (lock != null) {
+                return;
+            }
+            redisUtil.set(redisKey, "lock", seconds);
+        } catch (Exception e) {
+            // 璇婃柇鏃ュ織涓嶈兘褰卞搷涓绘祦绋嬨��
+        }
+        News.info(format, arguments);
+    }
+
     //妫�娴嬫祬搴撲綅鐘舵��
     public boolean checkShallowLocStatus(String locNo, Integer taskNo) {
         String checkDeepLocOutTaskBlockReport = "Y";

--
Gitblit v1.9.1