From 1c8455e647bfb059d52788afaa845c52e7d6213f Mon Sep 17 00:00:00 2001
From: Administrator <XS@163.COM>
Date: 星期三, 06 五月 2026 19:25:39 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java | 75 ++++++++++++++++++++++++++++++++-----
1 files changed, 64 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index 729790b..ca02361 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -61,7 +61,7 @@
@Autowired
private MainProcessTaskSubmitter mainProcessTaskSubmitter;
- public synchronized void crnIoExecute() {
+ public void crnIoExecute() {
Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
if (systemConfigMapObj != null) {
HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
@@ -91,7 +91,7 @@
}
//鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
- public synchronized void crnIoExecuteNormal() {
+ public void crnIoExecuteNormal() {
List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
for (BasCrnp basCrnp : basCrnps) {
crnIoExecuteNormal(basCrnp);
@@ -173,7 +173,7 @@
}
}
- private synchronized boolean crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
+ private boolean crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
return false;
@@ -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);
@@ -269,7 +279,7 @@
return false;
}
- private synchronized boolean crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) {
+ private boolean crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
return false;
@@ -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);
@@ -377,7 +398,7 @@
return false;
}
- private synchronized boolean crnExecuteInPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
+ private boolean crnExecuteInPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
CrnProtocol crnProtocol = crnThread.getStatus();
if (crnProtocol == null) {
return false;
@@ -470,7 +491,7 @@
return false;
}
- private synchronized boolean crnExecuteOutPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
+ private boolean crnExecuteOutPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
CrnProtocol crnProtocol = crnThread.getStatus();
if (crnProtocol == null) {
return false;
@@ -555,7 +576,7 @@
return false;
}
- private synchronized boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
+ private boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
return false;
@@ -610,7 +631,7 @@
}
//鍫嗗灈鏈轰换鍔℃墽琛屽畬鎴�
- public synchronized void crnIoExecuteFinish() {
+ public void crnIoExecuteFinish() {
List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
for (BasCrnp basCrnp : basCrnps) {
crnIoExecuteFinish(basCrnp);
@@ -691,7 +712,7 @@
}
}
- public synchronized void plannerExecute() {
+ public void plannerExecute() {
List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
for (BasCrnp basCrnp : basCrnps) {
plannerExecute(basCrnp);
@@ -796,7 +817,7 @@
}
}
- private synchronized boolean crnExecuteMovePlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
+ private boolean crnExecuteMovePlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
CrnProtocol crnProtocol = crnThread.getStatus();
if (crnProtocol == null) {
return false;
@@ -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,8 +928,22 @@
}
}
+ 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 synchronized boolean checkShallowLocStatus(String locNo, Integer taskNo) {
+ public boolean checkShallowLocStatus(String locNo, Integer taskNo) {
String checkDeepLocOutTaskBlockReport = "Y";
Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
if (systemConfigMapObj != null) {
--
Gitblit v1.9.1