From 3b564661c82994ad96229b07a6fd5c9d1648aab2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 14 三月 2026 13:26:37 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java | 121 +++++++++++++++++++++++++++++++--------
1 files changed, 95 insertions(+), 26 deletions(-)
diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index 52ff58a..2bd254b 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -28,13 +28,11 @@
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.thread.CrnThread;
import com.zy.core.thread.StationThread;
+import lombok.Synchronized;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Component
public class CrnOperateProcessUtils {
@@ -82,7 +80,11 @@
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
.eq("crn_no", basCrnp.getCrnNo())
- .in("wrk_sts", WrkStsType.INBOUND_RUN.sts, WrkStsType.OUTBOUND_RUN.sts)
+ .in("wrk_sts",
+ WrkStsType.INBOUND_RUN.sts
+ , WrkStsType.OUTBOUND_RUN.sts
+ , WrkStsType.LOC_MOVE_RUN.sts
+ )
);
if(!wrkMasts.isEmpty()){
continue;
@@ -99,45 +101,61 @@
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
if (crnProtocol.getLastIo().equals("I")) {
if (basCrnp.getInEnable().equals("Y")) {
- this.crnExecuteIn(basCrnp, crnThread); // 鍏ュ簱
+ boolean result = this.crnExecuteIn(basCrnp, crnThread);// 鍏ュ簱
crnProtocol.setLastIo("O");
+ if (result) {
+ break;
+ }
} else if (basCrnp.getOutEnable().equals("Y")) {
- this.crnExecuteOut(basCrnp, crnThread); // 鍑哄簱
+ boolean result = this.crnExecuteOut(basCrnp, crnThread);// 鍑哄簱
crnProtocol.setLastIo("I");
+ if(result) {
+ break;
+ }
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (crnProtocol.getLastIo().equals("O")) {
if (basCrnp.getOutEnable().equals("Y")) {
- this.crnExecuteOut(basCrnp, crnThread); // 鍑哄簱
+ boolean result = this.crnExecuteOut(basCrnp, crnThread);// 鍑哄簱
crnProtocol.setLastIo("I");
+ if (result) {
+ break;
+ }
} else if (basCrnp.getInEnable().equals("Y")) {
- this.crnExecuteIn(basCrnp, crnThread); // 鍏ュ簱
+ boolean result = this.crnExecuteIn(basCrnp, crnThread);// 鍏ュ簱
crnProtocol.setLastIo("O");
+ if (result) {
+ break;
+ }
}
}
//搴撲綅绉昏浆
- this.crnExecuteLocTransfer(basCrnp, crnThread);
+ boolean result = this.crnExecuteLocTransfer(basCrnp, crnThread);
+ if(result) {
+ break;
+ }
}
}
}
- private synchronized void crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
+ @Synchronized
+ private boolean crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
- return;
+ return false;
}
if(!basCrnp.getInEnable().equals("Y")){
News.info("鍫嗗灈鏈�:{} 鍙叆淇″彿涓嶆弧瓒�", basCrnp.getCrnNo());
- return;
+ return false;
}
List<StationObjModel> inStationList = basCrnp.getInStationList$();
if(inStationList.isEmpty()){
News.info("鍫嗗灈鏈�:{} 鍏ュ簱绔欑偣鏈缃�", basCrnp.getCrnNo());
- return;
+ return false;
}
Integer crnNo = basCrnp.getCrnNo();
@@ -204,34 +222,43 @@
String sourceLocNo = Utils.getLocNo(stationObjModel.getDeviceRow(), stationObjModel.getDeviceBay(), stationObjModel.getDeviceLev());
CrnCommand command = crnThread.getPickAndPutCommand(sourceLocNo, wrkMast.getLocNo(), wrkMast.getWrkNo(), crnNo);
-
wrkMast.setWrkSts(WrkStsType.INBOUND_RUN.sts);
wrkMast.setCrnNo(crnNo);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
if (wrkMastService.updateById(wrkMast)) {
+ if (i>-1){
+ command.setLocNo(wrkMast.getLocNo());
+ command.setIndex(i);
+ command.setValue((short)1);
+ }
MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_IN_TASK_RUN, null);
News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
+ return true;
}
}
+ return false;
}
- private synchronized void crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) {
+ private synchronized boolean crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
- return;
+ return false;
}
if(!basCrnp.getOutEnable().equals("Y")){
News.info("鍫嗗灈鏈�:{} 鍙嚭淇″彿涓嶆弧瓒�", basCrnp.getCrnNo());
- return;
+ return false;
}
List<StationObjModel> outStationList = basCrnp.getOutStationList$();
if(outStationList.isEmpty()){
News.info("鍫嗗灈鏈�:{} 鍑哄簱绔欑偣鏈缃�", basCrnp.getCrnNo());
- return;
+ return false;
}
Integer crnNo = basCrnp.getCrnNo();
@@ -298,14 +325,23 @@
wrkMast.setCrnNo(crnNo);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
if (wrkMastService.updateById(wrkMast)) {
+ if (i>-1){
+ command.setLocNo(wrkMast.getSourceLocNo());
+ command.setIndex(i);
+ command.setValue((short)1);
+ }
MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_OUT_TASK_RUN, null);
News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
- return;
+ return true;
}
}
}
+ return false;
}
private synchronized boolean crnExecuteInPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) {
@@ -486,10 +522,10 @@
return false;
}
- private synchronized void crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
+ private synchronized boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
- return;
+ return false;
}
Integer crnNo = basCrnp.getCrnNo();
@@ -530,13 +566,27 @@
wrkMast.setCrnNo(crnNo);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
+ String locNo = wrkMast.getLocNo();
+ if (i == -1) {
+ i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
+ locNo = wrkMast.getSourceLocNo();
+ }
if (wrkMastService.updateById(wrkMast)) {
+ if (i>-1){
+ command.setLocNo(locNo);
+ command.setIndex(i);
+ command.setValue((short)1);
+ }
MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_TRANSFER_TASK_RUN, null);
News.info("鍫嗗灈鏈哄懡浠や笅鍙戞垚鍔燂紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(command));
- return;
+ return true;
}
}
+ return false;
}
//鍫嗗灈鏈轰换鍔℃墽琛屽畬鎴�
@@ -568,16 +618,29 @@
News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
continue;
}
-
+ //缁欏簱浣嶇櫧鑹叉寚绀虹伅浜伅
+ String[] split = basCrnp.getArr().split(",");
+ int i = -1;
+ String locNo = "";
Long updateWrkSts = null;
if(wrkMast.getWrkSts() == WrkStsType.INBOUND_RUN.sts){
updateWrkSts = WrkStsType.COMPLETE_INBOUND.sts;
+ i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
+ locNo = wrkMast.getLocNo();
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnProtocol.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_IN_TASK_COMPLETE, null);
}else if(wrkMast.getWrkSts() == WrkStsType.OUTBOUND_RUN.sts){
updateWrkSts = WrkStsType.OUTBOUND_RUN_COMPLETE.sts;
+ i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
+ locNo = wrkMast.getSourceLocNo();
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnProtocol.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_OUT_TASK_COMPLETE, null);
}else if(wrkMast.getWrkSts() == WrkStsType.LOC_MOVE_RUN.sts){
updateWrkSts = WrkStsType.COMPLETE_LOC_MOVE.sts;
+ i = Arrays.asList(split).indexOf(wrkMast.getLocNo());
+ locNo = wrkMast.getLocNo();
+ if(i==-1){
+ i = Arrays.asList(split).indexOf(wrkMast.getSourceLocNo());
+ locNo = wrkMast.getSourceLocNo();
+ }
notifyUtils.notify(String.valueOf(SlaveType.Crn), crnProtocol.getCrnNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_TRANSFER_TASK_COMPLETE, null);
}else{
News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗗伐浣滅姸鎬佸紓甯搞�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
@@ -587,9 +650,15 @@
wrkMast.setWrkSts(updateWrkSts);
wrkMast.setSystemMsg("");
wrkMast.setIoTime(new Date());
+ wrkMast.setWeight(crnProtocol.getWeight());
if (wrkMastService.updateById(wrkMast)) {
CrnCommand resetCommand = crnThread.getResetCommand(crnProtocol.getCrnNo());
- MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, resetCommand));
+ if (i>-1){
+ resetCommand.setLocNo(locNo);
+ resetCommand.setIndex(i);
+ resetCommand.setValue((short)0);
+ }
+ MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(3, resetCommand));
News.info("鍫嗗灈鏈轰换鍔$姸鎬佹洿鏂版垚鍔燂紝鍫嗗灈鏈哄彿={}锛屽伐浣滃彿={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
}
@@ -794,7 +863,7 @@
String moveLocNo = dto.getLocNo();
CreateLocMoveTaskParam moveTaskParam = new CreateLocMoveTaskParam();
- moveTaskParam.setTaskNo(dto.getTaskNo());
+ moveTaskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
moveTaskParam.setSourceLocNo(shallowLocNo);
moveTaskParam.setLocNo(moveLocNo);
try {
--
Gitblit v1.9.1