From f53a21bd8bf2dec64175ea833d05bc8b49b9a8e6 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 17 四月 2025 15:33:42 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 134 ++++++++++++++++++++++++--------------------
1 files changed, 72 insertions(+), 62 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 2713265..6699984 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -120,6 +120,7 @@
));
for (WrkMast wrkMast : wrkMasts) {
boolean step1 = this.shuttleInExecuteStep1(wrkMast);//灏忚溅鎼叆搴撲腑
+ Thread.sleep(100);
if (!step1) {
continue;
}
@@ -134,7 +135,7 @@
* 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
* ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
*/
- public boolean shuttleInExecuteStep1(WrkMast wrkMast) {
+ public synchronized boolean shuttleInExecuteStep1(WrkMast wrkMast) {
if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts) {
//鑾峰彇鐩爣绔�
ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
@@ -233,6 +234,7 @@
));
for (WrkMast wrkMast : wrkMasts) {
boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑
+ Thread.sleep(100);
if (!step1) {
continue;
}
@@ -247,7 +249,7 @@
* 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
* ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
*/
- public boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
+ public synchronized boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
//101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓�
if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) {
Integer liftNo = wrkMast.getLiftNo();
@@ -271,7 +273,6 @@
wrkMast.setLiftNo(liftNo);
wrkMast.setModiTime(new Date());
wrkMastService.updateById(wrkMast);
- return false;
}
ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
@@ -593,59 +594,6 @@
}
for (WrkMast wrkMast : wrkMasts) {
- Integer liftNo = wrkMast.getLiftNo();
- if (liftNo == null) {
- //鏈垎閰嶆彁鍗囨満
- Integer staNo = wrkMast.getIoType() == WrkIoType.IN.id ? wrkMast.getSourceStaNo() : wrkMast.getStaNo();
- liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
- if(liftNo == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
- continue;
- }
-
- ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
- if (forkLiftThread == null) {
- continue;
- }
- ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
- if (forkLiftProtocol == null) {
- continue;
- }
-
- if (!forkLiftThread.isIdle()) {
- News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
- continue;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- continue;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- wrkMast.setLiftNo(liftNo);
- wrkMast.setModiTime(new Date());
- wrkMastService.updateById(wrkMast);
- continue;
- }
-
- ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
- if (forkLiftThread == null) {
- continue;
- }
- ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
- if (forkLiftProtocol == null) {
- continue;
- }
-
- if (!forkLiftThread.isIdle()) {
- News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
- continue;
- }
-
boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
if (!stepIn) {
continue;
@@ -688,7 +636,18 @@
return false;
}
- ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
+ Integer liftNo = wrkMast.getLiftNo();
+ if (liftNo == null) {
+ //鏈垎閰嶆彁鍗囨満
+ Integer staNo = wrkMast.getSourceStaNo();
+ liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
+ if(liftNo == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
+ return false;
+ }
+ }
+
+ ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
if (forkLiftThread == null) {
return false;
}
@@ -739,6 +698,13 @@
return false;
}
+ //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿叆搴�
+ boolean inMission = ForkLiftUtils.queryInMission(wrkMast.getSourceStaNo(), liftSta.getLiftNo(), wrkMast.getWmsWrkNo());
+ if (!inMission) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍏ュ簱", wrkMast.getWrkNo());
+ return false;
+ }
+
//鑾峰彇鎻愬崌鏈哄懡浠�
List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev());
ArrayList<ForkLiftCommand> commands = new ArrayList<>();
@@ -747,11 +713,12 @@
//鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
LiftAssignCommand assignCommand = new LiftAssignCommand();
assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setLiftNo(liftNo.shortValue());
assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
+ wrkMast.setLiftNo(liftNo);
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
wrkMast.setModiTime(now);
if (wrkMastService.updateById(wrkMast)) {
@@ -814,7 +781,18 @@
return false;
}
- ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
+ Integer liftNo = wrkMast.getLiftNo();
+ if (liftNo == null) {
+ //鏈垎閰嶆彁鍗囨満
+ Integer staNo = wrkMast.getStaNo();
+ liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
+ if(liftNo == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
+ return false;
+ }
+ }
+
+ ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
if (forkLiftThread == null) {
return false;
}
@@ -857,11 +835,12 @@
//鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
LiftAssignCommand assignCommand = new LiftAssignCommand();
assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setLiftNo(liftNo.shortValue());
assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
+ wrkMast.setLiftNo(liftNo);
wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
wrkMast.setModiTime(new Date());
@@ -904,12 +883,12 @@
wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
forkLiftThread.setSyncTaskNo(0);
+ redisUtil.set(RedisKeyType.FORK_LIFT_PUT_COMPLETE.key + forkLiftProtocol.getLiftNo(), wrkMast.getWmsWrkNo(), 60 * 3);
} else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) {
//306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴�
wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);
forkLiftThread.setSyncTaskNo(0);
}
-
wrkMast.setModiTime(new Date());
if (wrkMastService.updateById(wrkMast)) {
forkLiftThread.reset();
@@ -1476,6 +1455,32 @@
return false;//鎵句笉鍒扮珯鐐�
}
+ if (liftSta.getHasTray()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄦ墭鐩�", wrkMast.getWrkNo());
+ return false;
+ }
+
+ if (liftSta.getHasCar()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo());
+ return false;
+ }
+
+ //鑾峰彇鐩爣杈撻�佺珯
+ ForkLiftStaProtocol liftStaTarget = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+ if (liftStaTarget == null) {
+ return false;//鎵句笉鍒扮珯鐐�
+ }
+
+ if (liftStaTarget.getHasTray()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
+ return false;
+ }
+
+ if (liftStaTarget.getHasCar()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
+ return false;
+ }
+
if (wrkMast.getLiftNo() == null) {
//鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo());
@@ -1767,9 +1772,14 @@
continue;
}
+ List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo);
+ if (liftAllStaNo.isEmpty()) {
+ continue;
+ }
+
//鑾峰彇鍏ュ簱浠诲姟
List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
- .eq("lift_no", liftNo)
+ .in("sta_no", liftAllStaNo)
.in("wrk_sts"
, WrkStsType.NEW_INBOUND.sts
, WrkStsType.INBOUND_DEVICE_RUN.sts
--
Gitblit v1.9.1