From 30b0f1f97665f07145e3580dab577fae75ee0fa7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 四月 2026 10:23:23 +0800
Subject: [PATCH] fix: persist station flow capacity audit fields
---
src/main/java/com/zy/core/plugin/FakeProcess.java | 58 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 45 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/zy/core/plugin/FakeProcess.java b/src/main/java/com/zy/core/plugin/FakeProcess.java
index adbe6f4..e9c1996 100644
--- a/src/main/java/com/zy/core/plugin/FakeProcess.java
+++ b/src/main/java/com/zy/core/plugin/FakeProcess.java
@@ -1,6 +1,5 @@
package com.zy.core.plugin;
-import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
@@ -8,6 +7,7 @@
import com.zy.core.News;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
+import com.zy.core.dispatch.StationCommandDispatchResult;
import com.zy.core.dispatch.StationCommandDispatcher;
import com.zy.core.enums.*;
import com.zy.core.model.StationObjModel;
@@ -21,7 +21,6 @@
import com.zy.core.plugin.station.FakeStationMonitor;
import com.zy.core.plugin.station.FakeTaskGenerator;
import com.zy.core.plugin.store.StoreInTaskContext;
-import com.zy.core.plugin.store.StoreInTaskGenerationService;
import com.zy.core.plugin.store.StoreInTaskPolicy;
import com.zy.core.task.MainProcessLane;
import com.zy.core.task.MainProcessTaskSubmitter;
@@ -59,50 +58,83 @@
private static volatile String fakeGenerateInTask = "Y";
private static volatile String fakeGenerateOutTask = "Y";
- private static final Map<String, Long> OUT_STATION_STAY_MARKER = new HashMap<String, Long>();
+ private static final Map<Integer, Long> OUT_STATION_STAY_MARKER = new HashMap<Integer, Long>();
private final Object outStationStayLock = new Object();
- private boolean shouldDispatchOutStationWriteInfo(String taskNo) {
+ private boolean shouldDispatchOutStationWriteInfo(Integer wrkNo) {
long now = System.currentTimeMillis();
long timeoutMs = getOutStationStayTimeoutMs();
synchronized (outStationStayLock) {
- Long lastTime = OUT_STATION_STAY_MARKER.get(taskNo);
+ Long lastTime = OUT_STATION_STAY_MARKER.get(wrkNo);
if (lastTime == null || now - lastTime >= timeoutMs) {
- OUT_STATION_STAY_MARKER.put(taskNo, now);
+ OUT_STATION_STAY_MARKER.put(wrkNo, now);
return true;
}
return false;
}
}
- private void clearOutStationStayMarker(String taskNo) {
+ private void clearOutStationStayMarker(Integer wrkNo) {
synchronized (outStationStayLock) {
- OUT_STATION_STAY_MARKER.remove(taskNo);
+ OUT_STATION_STAY_MARKER.remove(wrkNo);
}
}
private void dispatchOutStationWriteInfoIfReady(WrkMast wrkMast, BasCrnp basCrnp) {
- String taskNo = wrkMast == null ? null : wrkMast.getWmsWrkNo();
- if (taskNo == null || !shouldDispatchOutStationWriteInfo(taskNo)) {
+ Integer wrkNo = wrkMast == null ? null : wrkMast.getWrkNo();
+ if (wrkNo == null) {
+ News.error("浠跨湡鍑哄簱绔欑偣鍐欏叆璺宠繃锛學CS浠诲姟鍙蜂负绌恒�俿ourceStaNo={}锛宑rnNo={}",
+ wrkMast == null ? null : wrkMast.getSourceStaNo(),
+ basCrnp == null ? null : basCrnp.getCrnNo());
return;
}
+ if (!shouldDispatchOutStationWriteInfo(wrkNo)) {
+ News.error("浠跨湡鍑哄簱绔欑偣鍐欏叆璺宠繃锛屽懡涓妭娴侀檺鍒躲�倃rkNo={}锛宻ourceStaNo={}锛宑rnNo={}",
+ wrkNo,
+ wrkMast == null ? null : wrkMast.getSourceStaNo(),
+ basCrnp == null ? null : basCrnp.getCrnNo());
+ return;
+ }
+ String taskNo = String.valueOf(wrkNo);
List<StationObjModel> outStationList = basCrnp.getOutStationList$();
if (outStationList.isEmpty()) {
- News.info("鍫嗗灈鏈�:{} 鍑哄簱绔欑偣鏈缃�", basCrnp.getCrnNo());
+ News.error("浠跨湡鍑哄簱绔欑偣鍐欏叆澶辫触锛屽爢鍨涙満鏈厤缃嚭搴撶珯鐐广�俢rnNo={}锛寃rkNo={}锛宼askNo={}",
+ basCrnp.getCrnNo(), wrkMast == null ? null : wrkMast.getWrkNo(), taskNo);
return;
}
+ boolean matched = false;
for (StationObjModel stationObjModel : outStationList) {
if (!stationObjModel.getStationId().equals(wrkMast.getSourceStaNo())) {
continue;
}
+ matched = true;
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
if (stationThread == null) {
+ News.error("浠跨湡鍑哄簱绔欑偣鍐欏叆澶辫触锛岀珯鐐圭嚎绋嬩笉瀛樺湪銆倀askNo={}锛寃rkNo={}锛宻tationId={}锛宒eviceNo={}",
+ taskNo, wrkMast.getWrkNo(), stationObjModel.getStationId(), stationObjModel.getDeviceNo());
continue;
}
StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO, 9998,
wrkMast.getSourceStaNo(), 0, 0);
- stationCommandDispatcher.dispatch(stationObjModel.getDeviceNo(), command, "fake-process", "crn-out-complete-write-info");
+ StationCommandDispatchResult dispatchResult = stationCommandDispatcher.dispatch(
+ stationObjModel.getDeviceNo(), command, "fake-process", "crn-out-complete-write-info");
+ News.info("浠跨湡鍑哄簱绔欑偣鍐欏叆鍛戒护鍒嗗彂缁撴灉銆倀askNo={}锛寃rkNo={}锛宑rnNo={}锛宻tationId={}锛宒eviceNo={}锛宎ccepted={}锛宺eason={}锛宷ueueDepth={}",
+ taskNo,
+ wrkMast.getWrkNo(),
+ basCrnp.getCrnNo(),
+ stationObjModel.getStationId(),
+ stationObjModel.getDeviceNo(),
+ dispatchResult != null && dispatchResult.isAccepted(),
+ dispatchResult == null ? null : dispatchResult.getReason(),
+ dispatchResult == null ? null : dispatchResult.getQueueDepth());
+ }
+ if (!matched) {
+ News.error("浠跨湡鍑哄簱绔欑偣鍐欏叆澶辫触锛屾湭鍖归厤鍒皊ourceStaNo瀵瑰簲鍑哄簱绔欑偣銆倀askNo={}锛寃rkNo={}锛宻ourceStaNo={}锛宑rnNo={}",
+ taskNo,
+ wrkMast == null ? null : wrkMast.getWrkNo(),
+ wrkMast == null ? null : wrkMast.getSourceStaNo(),
+ basCrnp == null ? null : basCrnp.getCrnNo());
}
}
@@ -295,7 +327,7 @@
wrkMast.setIoTime(now);
wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
- clearOutStationStayMarker(wrkMast.getWmsWrkNo());
+ clearOutStationStayMarker(wrkMast.getWrkNo());
wrkAnalysisService.markCraneComplete(wrkMast, now, updateWrkSts);
CrnCommand resetCommand = crnThread.getResetCommand(crnProtocol.getTaskNo(), crnProtocol.getCrnNo());
MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, resetCommand));
--
Gitblit v1.9.1