From f305e5244e059c5e43566412f69b180e2e790026 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 05 三月 2026 19:11:43 +0800
Subject: [PATCH] #双工位堆垛机任务下发控制优化
---
src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java | 38 ++++++++++++++++++++++++++++++++------
1 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
index 6e9f636..ff01d85 100644
--- a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
@@ -465,6 +465,10 @@
Integer station = inStationObjModel.getDualCrnExecuteStation();
if (station == 1) {
+ if (dualCrnProtocol.getTaskNo() > 0) {
+ News.taskInfo(wrkMast.getWrkNo(), "宸ヤ綅1绯荤粺鍐呴儴璁板綍鏈変换鍔�");
+ return null;
+ }
List<Integer> basList = basDualCrnp.getDisableStationOneBays$();
if (basList.contains(Utils.getBay(wrkMast.getLocNo()))) {
//绂佹鏀捐揣鍒楋紝鐢宠閲嶆柊鍒嗛厤
@@ -472,6 +476,10 @@
return null;
}
}else {
+ if (dualCrnProtocol.getTaskNoTwo() > 0) {
+ News.taskInfo(wrkMast.getWrkNo(), "宸ヤ綅2绯荤粺鍐呴儴璁板綍鏈変换鍔�");
+ return null;
+ }
List<Integer> basList = basDualCrnp.getDisableStationTwoBays$();
if (basList.contains(Utils.getBay(wrkMast.getLocNo()))) {
//绂佹鏀捐揣鍒楋紝鐢宠閲嶆柊鍒嗛厤
@@ -520,6 +528,18 @@
if (outStationList.isEmpty()) {
News.info("鍙屽伐浣嶅爢鍨涙満:{} 鍑哄簱绔欑偣鏈缃�", basDualCrnp.getCrnNo());
return null;
+ }
+
+ if (station == 1) {
+ if (dualCrnProtocol.getTaskNo() > 0) {
+ News.taskInfo(wrkMast.getWrkNo(), "宸ヤ綅1绯荤粺鍐呴儴璁板綍鏈変换鍔�");
+ return null;
+ }
+ }else {
+ if (dualCrnProtocol.getTaskNoTwo() > 0) {
+ News.taskInfo(wrkMast.getWrkNo(), "宸ヤ綅2绯荤粺鍐呴儴璁板綍鏈変换鍔�");
+ return null;
+ }
}
Integer crnNo = basDualCrnp.getCrnNo();
@@ -688,12 +708,12 @@
continue;
}
- if(dualCrnProtocol.getTaskNo() > 0 && dualCrnProtocol.getTaskSend() == 0 && dualCrnProtocol.getStatus() == DualCrnStatusType.WAITING.id) {
+ if((dualCrnProtocol.getTaskNo() > 0 && dualCrnProtocol.getDeviceTaskNo() > 0) && dualCrnProtocol.getTaskSend() == 0 && dualCrnProtocol.getStatus().equals(DualCrnStatusType.WAITING.id)) {
executeFinish(basDualCrnp, dualCrnThread, dualCrnProtocol, dualCrnProtocol.getTaskNo(), 1);
continue;
}
- if(dualCrnProtocol.getTaskNoTwo() > 0 && dualCrnProtocol.getTaskSendTwo() == 0 && dualCrnProtocol.getStatusTwo() == DualCrnStatusType.WAITING.id) {
+ if((dualCrnProtocol.getTaskNoTwo() > 0 && dualCrnProtocol.getDeviceTaskNoTwo() > 0) && dualCrnProtocol.getTaskSendTwo() == 0 && dualCrnProtocol.getStatusTwo().equals(DualCrnStatusType.WAITING.id)) {
executeFinish(basDualCrnp, dualCrnThread, dualCrnProtocol, dualCrnProtocol.getTaskNoTwo(), 2);
continue;
}
@@ -759,9 +779,15 @@
return;
}
- DualCrnCommand resetCommand = dualCrnThread.getResetCommand(dualCrnProtocol.getCrnNo(), station);
+ DualCrnCommand resetCommand = dualCrnThread.getResetCommand(taskNo, dualCrnProtocol.getCrnNo(), station);
boolean offer = MessageQueue.offer(SlaveType.DualCrn, dualCrnProtocol.getCrnNo(), new Task(3, resetCommand));
if (offer) {
+ if (station == 1) {
+ redisUtil.set(RedisKeyType.DUAL_CRN_STATION1_FLAG.key + basDualCrnp.getCrnNo(), 0, 60 * 60 * 24);
+ }else {
+ redisUtil.set(RedisKeyType.DUAL_CRN_STATION2_FLAG.key + basDualCrnp.getCrnNo(), 0, 60 * 60 * 24);
+ }
+
wrkMast.setWrkSts(updateWrkSts);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
@@ -771,9 +797,10 @@
redisUtil.set(RedisKeyType.DUAL_CRN_IO_EXECUTE_FINISH_LIMIT.key + basDualCrnp.getCrnNo() + "_" + taskNo, "lock", 10);
}
}else {
- DualCrnCommand resetCommand = dualCrnThread.getResetCommand(dualCrnProtocol.getCrnNo(), station);
+ DualCrnCommand resetCommand = dualCrnThread.getResetCommand(taskNo, dualCrnProtocol.getCrnNo(), station);
MessageQueue.offer(SlaveType.DualCrn, dualCrnProtocol.getCrnNo(), new Task(3, resetCommand));
News.info("鍙屽伐浣嶅爢鍨涙満鍛戒护瀹屾垚纭鎴愬姛锛屽爢鍨涙満鍙�={}锛屽伐浣滃彿={}", basDualCrnp.getCrnNo(), taskNo);
+ redisUtil.set(RedisKeyType.DUAL_CRN_IO_EXECUTE_FINISH_LIMIT.key + basDualCrnp.getCrnNo() + "_" + taskNo, "lock", 10);
}
}
@@ -804,8 +831,7 @@
String shallowLocNo = Utils.getLocNo(shallowRow, Utils.getBay(locNo), Utils.getLev(locNo));
LocMast shallowLocMast = locMastService.queryByLoc(shallowLocNo);
if (shallowLocMast == null) {
- News.taskInfo(taskNo, "娴呭簱浣�:{} 鏁版嵁涓嶅瓨鍦�", shallowLocNo);
- return false;
+ return true;
}
if (shallowLocMast.getLocSts().equals("O")) {
--
Gitblit v1.9.1