From 3adcbff31fdece77269744c8741f237e7a57348e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 22 三月 2026 17:17:58 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 51 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
index db09977..951c437 100644
--- a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
@@ -14,6 +14,7 @@
import com.zy.asrs.service.BasDualCrnpService;
import com.zy.asrs.service.BasStationService;
import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkAnalysisService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.NotifyUtils;
import com.zy.asrs.utils.Utils;
@@ -66,6 +67,10 @@
private NotifyUtils notifyUtils;
@Autowired
private StationOperateProcessUtils stationOperateProcessUtils;
+ @Autowired
+ private WrkAnalysisService wrkAnalysisService;
+
+ private static final String CRN_OUT_REQUIRE_STATION_OUT_ENABLE_CONFIG = "crnOutRequireStationOutEnable";
//鍏ュ嚭搴� ===>> 鍙屽伐浣嶅爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�
public synchronized void dualCrnIoExecute() {
@@ -352,7 +357,7 @@
.in("wrk_no", taskList)
);
for (WrkMast wrkMast : wrkMasts) {
- if(wrkMast.getWrkSts() != WrkStsType.INBOUND_DEVICE_RUN.sts){
+ if(wrkMast.getWrkSts() != WrkStsType.INBOUND_STATION_RUN_COMPLETE.sts){
continue;
}
list.add(wrkMast);
@@ -410,7 +415,7 @@
Integer crnNo = basDualCrnp.getCrnNo();
- if (wrkMast.getWrkSts() != WrkStsType.INBOUND_DEVICE_RUN.sts) {
+ if (wrkMast.getWrkSts() != WrkStsType.INBOUND_STATION_RUN_COMPLETE.sts) {
return null;
}
@@ -507,11 +512,14 @@
commandList.add(pickCommand);
commandList.add(putCommand);
+ Date now = new Date();
wrkMast.setWrkSts(WrkStsType.INBOUND_RUN.sts);
wrkMast.setDualCrnNo(crnNo);
wrkMast.setSystemMsg("");
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
+ wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
+ wrkAnalysisService.markCraneStart(wrkMast, now);
SendDualCrnCommandParam sendDualCrnCommandParam = new SendDualCrnCommandParam();
sendDualCrnCommandParam.setCrnNo(crnNo);
sendDualCrnCommandParam.setStation(station);
@@ -587,8 +595,8 @@
continue;
}
- if (!stationProtocol.isOutEnable()) {
- News.info("鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
+ if (isRequireOutboundStationOutEnable() && !stationProtocol.isOutEnable()) {
+ News.taskInfo(wrkMast.getWrkNo(), "鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
continue;
}
@@ -619,11 +627,14 @@
commandList.add(pickCommand);
commandList.add(putCommand);
+ Date now = new Date();
wrkMast.setWrkSts(WrkStsType.OUTBOUND_RUN.sts);
wrkMast.setDualCrnNo(crnNo);
wrkMast.setSystemMsg("");
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
+ wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
+ wrkAnalysisService.markCraneStart(wrkMast, now);
redisUtil.set(RedisKeyType.DUAL_CRN_OUT_TASK_STATION_INFO.key + wrkMast.getWrkNo(), JSON.toJSONString(stationObjModel, SerializerFeature.DisableCircularReferenceDetect), 60 * 60 * 24);
SendDualCrnCommandParam sendDualCrnCommandParam = new SendDualCrnCommandParam();
@@ -704,11 +715,14 @@
commandList.add(pickCommand);
commandList.add(putCommand);
+ Date now = new Date();
wrkMast.setWrkSts(WrkStsType.LOC_MOVE_RUN.sts);
wrkMast.setDualCrnNo(crnNo);
wrkMast.setSystemMsg("");
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
+ wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
+ wrkAnalysisService.markCraneStart(wrkMast, now);
SendDualCrnCommandParam sendDualCrnCommandParam = new SendDualCrnCommandParam();
sendDualCrnCommandParam.setCrnNo(crnNo);
sendDualCrnCommandParam.setStation(station);
@@ -776,6 +790,7 @@
if (idx >= 2) {
Long updateWrkSts = null;
+ Date now = new Date();
if (wrkMast.getWrkSts() == WrkStsType.INBOUND_RUN.sts) {
updateWrkSts = WrkStsType.COMPLETE_INBOUND.sts;
notifyUtils.notify(String.valueOf(SlaveType.DualCrn), basDualCrnp.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.DUAL_CRN_IN_TASK_COMPLETE, null);
@@ -825,8 +840,10 @@
wrkMast.setWrkSts(updateWrkSts);
wrkMast.setSystemMsg("");
- wrkMast.setIoTime(new Date());
+ wrkMast.setIoTime(now);
+ wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
+ wrkAnalysisService.markCraneComplete(wrkMast, now, updateWrkSts);
News.info("鍙屽伐浣嶅爢鍨涙満浠诲姟鐘舵�佹洿鏂版垚鍔燂紝鍫嗗灈鏈哄彿={}锛屽伐浣滃彿={}", basDualCrnp.getCrnNo(), taskNo);
}
redisUtil.set(RedisKeyType.DUAL_CRN_IO_EXECUTE_FINISH_LIMIT.key + basDualCrnp.getCrnNo() + "_" + taskNo, "lock", 10);
@@ -901,6 +918,32 @@
return false;
}
+ private boolean isRequireOutboundStationOutEnable() {
+ return getSystemConfigBoolean(CRN_OUT_REQUIRE_STATION_OUT_ENABLE_CONFIG, true);
+ }
+
+ private boolean getSystemConfigBoolean(String code, boolean defaultValue) {
+ Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+ if (!(systemConfigMapObj instanceof Map)) {
+ return defaultValue;
+ }
+ try {
+ Object value = ((Map<?, ?>) systemConfigMapObj).get(code);
+ if (value == null) {
+ return defaultValue;
+ }
+ String text = String.valueOf(value).trim();
+ if ("Y".equalsIgnoreCase(text) || "true".equalsIgnoreCase(text) || "1".equals(text)) {
+ return true;
+ }
+ if ("N".equalsIgnoreCase(text) || "false".equalsIgnoreCase(text) || "0".equals(text)) {
+ return false;
+ }
+ } catch (Exception ignore) {
+ }
+ return defaultValue;
+ }
+
private boolean reassignTaskLocNo(WrkMast wrkMast, StationObjModel stationObjModel) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
if (stationThread == null) {
--
Gitblit v1.9.1