From ad205a9ee0b1ff18eabed3528407f13a52193dcf Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期五, 11 四月 2025 13:41:53 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/LiftThread.java | 2
src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java | 647 ++++++++
src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java | 710 +++++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 2510 ---------------------------------
src/main/java/com/zy/core/model/LiftSlave.java | 14
src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java | 562 +++++++
src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 7
src/main/resources/application.yml | 6
8 files changed, 1,946 insertions(+), 2,512 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 efe8350..10b7720 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,22 +10,18 @@
import com.zy.asrs.utils.NotifyUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
import com.zy.common.model.SearchLocParam;
import com.zy.common.model.StartupDto;
import com.zy.common.model.enums.NavigationMapType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.*;
import com.zy.core.News;
-import com.zy.core.action.LiftAction;
import com.zy.core.action.ShuttleAction;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.dispatcher.ShuttleDispatchUtils;
import com.zy.core.enums.*;
import com.zy.core.model.*;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftCommand;
import com.zy.core.model.command.ShuttleAssignCommand;
import com.zy.core.model.command.ShuttleCommand;
import com.zy.core.model.protocol.*;
@@ -73,11 +69,7 @@
@Autowired
private ConfigService configService;
@Autowired
- private NavigateMapUtils navigateMapUtils;
- @Autowired
private NavigateMapData navigateMapData;
- @Autowired
- private NavigateUtils navigateUtils;
@Autowired
private ShuttleOperaUtils shuttleOperaUtils;
@Autowired
@@ -87,10 +79,11 @@
@Autowired
private BasShuttleChargeService basShuttleChargeService;
@Autowired
- private BasLiftOptService basLiftOptService;
+ private TransportLiftInServiceImpl transportLiftInService;
@Autowired
- private LiftAction liftAction;
-
+ private TransportLiftOutServiceImpl transportLiftOutService;
+ @Autowired
+ private ShuttleMoveServiceImpl shuttleMoveService;
private boolean isInEnable(DevpThread devpThread, Integer staNo) {
if (staNo == null) {
@@ -961,439 +954,6 @@
return true;
}
-// /**
-// * 璐у弶鎻愬崌鏈轰换鍔�
-// */
-// public synchronized void forkLiftIoExecute() {
-// try {
-// //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-// List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-// .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts));
-// if (wrkMasts.isEmpty()) {
-// return;
-// }
-//
-// 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;
-// }
-//
-// boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
-// if (!stepOut) {
-// continue;
-// }
-// }
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-
-// /**
-// * 鎻愬崌鏈哄叆搴�
-// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-// */
-// private boolean liftIoExecuteStepIn(WrkMast wrkMast) {
-// //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------//
-// Date now = new Date();
-//
-// //1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-// if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
-// //鑾峰彇鐩爣杈撻�佺珯
-// ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-// if (liftSta == null) {
-// return false;//鎵句笉鍒扮珯鐐�
-// }
-//
-// if (liftSta.getHasTray()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
-// return false;
-// }
-//
-// if (liftSta.getHasCar()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
-// return false;
-// }
-//
-// ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
-// if (forkLiftThread == null) {
-// return false;
-// }
-// ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-// if (forkLiftProtocol == null) {
-// return false;
-// }
-// if (!forkLiftThread.isIdle()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡叆搴撴ā寮�
-// if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡叆搴撴ā寮忥紝绂佹鍏ュ簱", wrkMast.getWrkNo());
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-// WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-// if (liftWrkMast != null) {
-// if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-// }
-// }
-//
-// //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
-// boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev());
-// if (!checkLevHasShuttle) {
-// if (wrkMast.getShuttleNo() != null) {
-// return false;
-// }
-//
-// //鑾峰彇灏忚溅寰呮満浣�
-// String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-// if (standbyLocNo == null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-// return false;
-// }
-//
-// //璋冨害灏忚溅鍘诲緟鏈轰綅
-// boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo);
-// if (!dispatchShuttle) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
-// return false;
-// }
-// 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<>();
-// commands.addAll(liftCommands);
-//
-// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-// LiftAssignCommand assignCommand = new LiftAssignCommand();
-// assignCommand.setCommands(commands);
-// assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-// assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-//
-// wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-// wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-// wrkMast.setModiTime(now);
-// if (wrkMastService.updateById(wrkMast)) {
-// //涓嬪彂浠诲姟
-// forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-// }
-// return false;
-// }
-// return true;
-// }
-
-// /**
-// * 鎻愬崌鏈轰换鍔�
-// */
-// public synchronized void liftIoExecute() {
-// try {
-// //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-// List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-// .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts));
-// if (wrkMasts.isEmpty()) {
-// return;
-// }
-//
-// 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;
-// }
-//
-// boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
-// if (!stepOut) {
-// continue;
-// }
-// }
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-
-// /**
-// * 鎻愬崌鏈哄嚭搴�
-// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-// */
-// private boolean liftIoExecuteStepOut(WrkMast wrkMast) {
-// //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------//
-// //103.灏忚溅鎼繍瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑
-// if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) {
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-// if (shuttleThread == null) {
-// return false;
-// }
-// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-// if(shuttleProtocol == null) {
-// return false;
-// }
-//
-// //鑾峰彇婧愮珯
-// ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-// if (liftSta == null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-// return false;//鎵句笉鍒扮珯鐐�
-// }
-//
-// if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
-// //灏忚溅杩樺湪杈撻�佺珯鐐�
-// //鑾峰彇灏忚溅寰呮満浣�
-// String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-// if(standbyLocNo == null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-// return false;
-// }
-// //璋冨害灏忚溅鍘诲緟鏈轰綅
-// boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo, wrkMast.getShuttleNo());
-// if (!dispatchShuttle) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo());
-// return false;
-// }
-// }
-//
-// if (liftSta.getHasCar()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo());
-// return false;
-// }
-//
-// if (!liftSta.getHasTray()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏃犳墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo());
-// return false;
-// }
-//
-// ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
-// if (forkLiftThread == null) {
-// return false;
-// }
-// ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-// if (forkLiftProtocol == null) {
-// return false;
-// }
-// if (!forkLiftThread.isIdle()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-// if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-// WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-// if (liftWrkMast != null) {
-// if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-// }
-// }
-//
-// //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
-// boolean outMission = ForkLiftUtils.queryOutMission(wrkMast.getStaNo());
-// if (!outMission) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍑哄簱", wrkMast.getWrkNo());
-// return false;
-// }
-//
-// //鑾峰彇鎻愬崌鏈哄懡浠�
-// List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo());
-// ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-// commands.addAll(liftCommands);
-//
-// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-// LiftAssignCommand assignCommand = new LiftAssignCommand();
-// assignCommand.setCommands(commands);
-// assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-// assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-//
-// wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
-// wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
-// wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-// wrkMast.setModiTime(new Date());
-// if (wrkMastService.updateById(wrkMast)) {
-// //涓嬪彂浠诲姟
-// forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-// }
-// return false;
-// }
-// return true;
-// }
-
- /**
- * 璐у弶鎻愬崌鏈轰换鍔″畬鎴�
- */
- public synchronized void forkLiftFinished() {
- try {
- for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) {
- //鑾峰彇鎻愬崌鏈轰俊鎭�
- ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId());
- ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
- if (forkLiftProtocol == null) {
- continue;
- }
-
- //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂�
- if (forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.WAITING.id
- && forkLiftProtocol.getWrkNo() != 0
- ) {
- //灏嗕换鍔℃。鏍囪涓哄畬鎴�
- WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo());
- if (wrkMast != null) {
- if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) {
- //3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
- wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts);
- wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
- forkLiftThread.setSyncTaskNo(0);
- } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) {
- //104.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚
- wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
- wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
- forkLiftThread.setSyncTaskNo(0);
- } 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();
- News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo());
- } else {
- News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo());
- }
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
/**
* 鎻愬崌鏈轰换鍔″畬鎴�
*/
@@ -1941,38 +1501,11 @@
} else if ("TRANSPORT_DEVP".equals(wrkMast.getMk())) {
} else {
- this.shuttleMoveExecuteMove(wrkMast);
+ shuttleMoveService.shuttleMoveExecuteMove(wrkMast);
}
}
} catch (Exception e) {
e.printStackTrace();
- }
- }
-
- private void shuttleMoveExecuteMove(WrkMast wrkMast) {
- boolean stepMoveSta = this.shuttleMoveExecuteStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
- if (!stepMoveSta) {
- return;
- }
-
- boolean stepIntoLift = this.shuttleMoveExecuteStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
- if (!stepIntoLift) {
- return;
- }
-
- boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑
- if (!stepLiftMove) {
- return;
- }
-
- boolean updateShuttleLocation = this.shuttleMoveExecuteStepUpdateShuttleLocation(wrkMast);//鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
- if (!updateShuttleLocation) {
- return;
- }
-
- boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
- if (!stepMoveLoc) {
- return;
}
}
@@ -1985,2043 +1518,14 @@
String liftLocNo = liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo()));
if (Utils.getRow(liftLocNo) == Utils.getRow(wrkMast.getSourceLocNo()) && Utils.getBay(liftLocNo) == Utils.getBay(wrkMast.getSourceLocNo())) {
//鍙栬揣浣嶇疆鏄彁鍗囨満
- this.shuttleMoveExecuteTransportLiftTake(wrkMast);
+ transportLiftInService.shuttleMoveExecuteTransportLiftTake(wrkMast);
} else {
//鏀捐揣浣嶇疆鏄彁鍗囨満
- this.shuttleMoveExecuteTransportLiftPut(wrkMast);
+ transportLiftOutService.shuttleMoveExecuteTransportLiftPut(wrkMast);
}
}
- private void shuttleMoveExecuteTransportLiftTake(WrkMast wrkMast) {
- boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
- if (!stepMoveSta) {
- return;
- }
-
- boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
- if (!stepLiftToShuttleLev) {
- return;
- }
-
- boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
- if (!stepIntoLift) {
- return;
- }
-
- boolean stepLiftToTargetLev = this.shuttleMoveExecuteTransportLiftStepLiftToTargetLev(wrkMast);//鎻愬崌鏈哄埌鏀捐揣灞�
- if (!stepLiftToTargetLev) {
- return;
- }
-
- boolean stepOutLift = this.shuttleMoveExecuteTransportLiftStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
- if (!stepOutLift) {
- return;
- }
-
- boolean stepMoveLoc = this.shuttleMoveExecuteTransportLiftStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
- if (!stepMoveLoc) {
- return;
- }
- }
-
- /**
- * 灏忚溅杩佺Щ-鍛煎彨灏忚溅鑷冲彇璐х偣
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepCallShuttle(WrkMast wrkMast) {
- Date now = new Date();
- //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
- if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
- //灏忚溅鍦ㄥ彇璐х偣
- wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo(), null, true);
- if (!dispatchShuttle) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- }
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftOutStepMoveSta(WrkMast wrkMast) {
- //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
- Date now = new Date();
-
- //灏忚溅绉诲姩鑷崇珯鐐� 鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
- if (wrkMast.getWrkSts() == WrkStsType.CALL_SHUTTLE_TO_TAKE.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪鍙栬揣鐐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
- LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
- if (liftThread == null) {
- News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
- return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
- String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- List<ShuttleCommand> commands = new ArrayList<>();
- Integer mapType = NavigationMapType.DFX.id;
-
- //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
- List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
- if (moveCommands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//璺緞瑙i攣澶辫触
- }
- commands.addAll(moveCommands);
-
- List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
- if (liftCommand == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
- commands.addAll(0, liftCommand);
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- return false;
- }
- return false;
- }
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- LiftThread liftThread = null;
- LiftProtocol liftProtocol = null;
- if (wrkMast.getLiftNo() == null) {
- //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
- liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
- if (liftThread == null) {
- News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
- return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
- }
-
- liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
- if (liftWrkMast != null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
-
- wrkMast.setModiTime(now);
- wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- } else {
- liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
- if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
- //鎻愬崌鏈哄湪灏忚溅妤煎眰
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
- wrkMast.setModiTime(now);
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- //璋冨害鎻愬崌鏈�
- //鑾峰彇鎻愬崌鏈哄懡浠�
- List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
- LiftCommand liftCommand = liftCommands.get(0);
-
- int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
- liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
- ArrayList<LiftCommand> commands = new ArrayList<>();
- commands.add(liftCommand);
-
- //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
- LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
- assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
- wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftOutStepIntoLift(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
- return false;
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
- if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
- //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
- }
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
- if (commands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
- List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
- if (liftCommand == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
- commands.addAll(liftCommand);
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftOutStepOutLift(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (!liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (!liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
- String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
- //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
- if (commands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- private void shuttleMoveExecuteTransportLiftPut(WrkMast wrkMast) {
- boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepCallShuttle(wrkMast);//鍛煎彨灏忚溅鑷冲彇璐х偣
- if (!stepMoveSta) {
- return;
- }
-
- boolean stepTransportLiftOutStepMoveSta = this.shuttleMoveExecuteTransportLiftOutStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
- if (!stepTransportLiftOutStepMoveSta) {
- return;
- }
-
- boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
- if (!stepLiftToShuttleLev) {
- return;
- }
-
- boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftOutStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
- if (!stepIntoLift) {
- return;
- }
-
- boolean stepOutLift = this.shuttleMoveExecuteTransportLiftOutStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
- if (!stepOutLift) {
- return;
- }
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepMoveSta(WrkMast wrkMast) {
- //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
- Date now = new Date();
-
- //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
- if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
- LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
- if (liftThread == null) {
- News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
- return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
- String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- List<ShuttleCommand> commands = new ArrayList<>();
- Integer mapType = NavigationMapType.NORMAL.id;
-
- if (shuttleProtocol.getCurrentLocNo().equals(liftStandByLocNo)) {
- //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
- wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts);// 灏忚溅绉诲姩鑷崇珯鐐� ==> 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
- //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
- List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
- if (moveCommands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//璺緞瑙i攣澶辫触
- }
- commands.addAll(moveCommands);
- }
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 322.灏忚溅绉诲姩鑷崇珯鐐�
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
- return false;
- }
- return false;
- }
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- LiftThread liftThread = null;
- LiftProtocol liftProtocol = null;
- if (wrkMast.getLiftNo() == null) {
- //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
- liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
- if (liftThread == null) {
- News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
- return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
- }
-
- liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
- if (liftWrkMast != null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
-
- wrkMast.setModiTime(now);
- wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- } else {
- liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (!liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
- if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
- //鎻愬崌鏈哄湪灏忚溅妤煎眰
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
- wrkMast.setModiTime(now);
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- //璋冨害鎻愬崌鏈�
- //鑾峰彇鎻愬崌鏈哄懡浠�
- List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
- LiftCommand liftCommand = liftCommands.get(0);
-
- int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
- liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
- ArrayList<LiftCommand> commands = new ArrayList<>();
- commands.add(liftCommand);
-
- //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
- LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
- assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
- wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepIntoLift(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
- return false;
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (!liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
- if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
- //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
- }
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
- if (commands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌鏀捐揣灞�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepLiftToTargetLev(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟鏈粦瀹氭彁鍗囨満", wrkMast.getWrkNo());
- return false;
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (!liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (!liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- if (liftProtocol.getLev() == Utils.getLev(wrkMast.getLocNo())) {
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts);// 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- //璋冨害鎻愬崌鏈�
- //鑾峰彇鎻愬崌鏈哄懡浠�
- List<LiftCommand> liftCommands = liftThread.getMoveWithShuttleCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
- LiftCommand liftCommand = liftCommands.get(0);
-
- int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
- liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
- ArrayList<LiftCommand> commands = new ArrayList<>();
- commands.add(liftCommand);
-
- //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
- LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
- assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
- wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepOutLift(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (!liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
- if (!liftProtocol.getHasTray()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
- if (liftProtocol.getLev() != Utils.getLev(wrkMast.getLocNo())) {
- //鎻愬崌鏈轰笉鍦ㄦ斁璐у眰
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼笉鍦ㄦ斁璐у眰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;
- }
-
- if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
- assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
- assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
- //鏇存柊灏忚溅鍧愭爣
- ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
- ArrayList<ShuttleCommand> commands = new ArrayList<>();
- commands.add(command);
-
- assignCommand.setCommands(commands);
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- return false;
- }
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
- String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
- //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
- if (commands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
- if (liftCommand == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
- commands.addAll(0, liftCommand);
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteTransportLiftStepMoveLoc(WrkMast wrkMast) {
- //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
- Date now = new Date();
-
- //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
- assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
- assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
- List<ShuttleCommand> commands = new ArrayList<>();
- Integer mapType = NavigationMapType.DFX.id;
-
- List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
- if (moveCommands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//璺緞璁$畻澶辫触
- }
- commands.addAll(moveCommands);
-
- List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
- if (liftCommand == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
- commands.addAll(liftCommand);
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
- wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- }
- }
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
- //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
- Date now = new Date();
-
- //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
- if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
- //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
- wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
- }
- return false;
- }
-
- //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
- LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
- if (liftThread == null) {
- News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
- return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
- }
-
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
- String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- List<ShuttleCommand> commands = new ArrayList<>();
- Integer mapType = NavigationMapType.NORMAL.id;
-
- if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
- //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
- List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
- if (moveCommands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//璺緞瑙i攣澶辫触
- }
- commands.addAll(moveCommands);
- } else {
- //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
- wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);// 302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
- wrkMast.setModiTime(now);
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- //瑙﹀彂閫氱煡
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
- return false;
- }
- return false;
- }
- return true;
- }
-
-// /**
-// * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
-// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-// */
-// private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
-// //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-// Date now = new Date();
-//
-// //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
-// if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-// //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-// if (shuttleThread == null) {
-// return false;
-// }
-// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-// if (shuttleProtocol == null) {
-// return false;
-// }
-//
-// //灏忚溅澶勪簬绌洪棽鐘舵��
-// if (!shuttleThread.isIdle()) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;
-// }
-//
-// //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-// LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-// if (liftThread == null) {
-// News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-// return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-// }
-//
-// LiftProtocol liftProtocol = liftThread.getStatus();
-// if (liftProtocol == null) {
-// News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-// return false;
-// }
-//
-// //鑾峰彇鎻愬崌鏈轰綅
-// String liftLocNo = liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-// //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-// String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-//
-// if (!liftLocNo.equals(wrkMast.getLocNo()) && !liftLocNo.equals(shuttleProtocol.getCurrentLocNo())) {
-// if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-// //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
-// wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-// wrkMast.setModiTime(now);
-// if (wrkMastService.updateById(wrkMast)) {
-// //涓嬪彂浠诲姟
-// return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-// }
-// return false;
-// }
-// }
-//
-// if (liftLocNo.equals(shuttleProtocol.getCurrentLocNo())) {
-// //灏忚溅鍦ㄦ彁鍗囨満鍐�
-// wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);// 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 310.鎻愬崌鏈烘惉杩愬畬鎴�
-// wrkMast.setModiTime(now);
-// if (wrkMastService.updateById(wrkMast)) {
-// //涓嬪彂浠诲姟
-// return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-// }
-// return false;
-// }
-//
-// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-// assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-// assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-// assignCommand.setAuto(true);//鑷姩妯″紡
-//
-// List<ShuttleCommand> commands = new ArrayList<>();
-// Integer mapType = NavigationMapType.NORMAL.id;
-// //鎼繍璐х墿浠诲姟
-// if ("TRANSPORT".equals(wrkMast.getMk())) {
-// mapType = NavigationMapType.DFX.id;
-//
-// List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-// if (liftCommand == null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;
-// }
-// commands.addAll(liftCommand);
-// }
-//
-// if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
-// //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
-// List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
-// if (moveCommands == null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;//璺緞瑙i攣澶辫触
-// }
-// commands.addAll(moveCommands);
-// }else {
-// //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
-// wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);// 302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
-// wrkMast.setModiTime(now);
-// wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-// wrkMastService.updateById(wrkMast);
-// return false;
-// }
-//
-// assignCommand.setCommands(commands);
-//
-// wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
-// wrkMast.setModiTime(now);
-// wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-// if (wrkMastService.updateById(wrkMast)) {
-// //涓嬪彂浠诲姟
-// shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-// return false;
-// }
-// return false;
-// }
-// return true;
-// }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
- Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) {
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- LiftThread liftThread = null;
- LiftProtocol liftProtocol = null;
- if (wrkMast.getLiftNo() == null) {
- //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
- liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
- if (liftThread == null) {
- News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
- return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
- }
-
- liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
- if (liftWrkMast != null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
-
- wrkMast.setModiTime(now);
- wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMastService.updateById(wrkMast);
- return false;
- } else {
- liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
-
- liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
- return false;
- }
- }
-
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- if (!liftThread.isIdle()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
- if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
- //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
- //璋冨害鎻愬崌鏈�
-
- //鑾峰彇鎻愬崌鏈哄懡浠�
- List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
- LiftCommand liftCommand = liftCommands.get(0);
-
- int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
- liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
- ArrayList<LiftCommand> commands = new ArrayList<>();
- commands.add(liftCommand);
-
- //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
- LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
- assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
- //涓嬪彂浠诲姟
- liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
- return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
- }
-
- //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
- List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
- if (targetNodes == null) {
- return false;//鏈幏鍙栧埌鑺傜偣
- }
- boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
- if (!checkPathIsAvailable) {
- News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
- }
- //灏濊瘯閿佸畾鐩爣绔欒矾寰�
- boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
- if (!result2) {
- News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//璺緞閿佸畾澶辫触
- }
- //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
-
- //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
- if (commands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- //瑙﹀彂閫氱煡
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
- return false;
- }
- return false;
- }
-
- return true;
- }
-
-// /**
-// * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
-// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-// */
-// private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
-// //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-// Date now = new Date();
-//
-// //灏忚溅绉诲姩鍒版彁鍗囨満涓� 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-// if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) {
-// //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-// if (shuttleThread == null) {
-// News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-// return false;
-// }
-//
-// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-// if (shuttleProtocol == null) {
-// News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-// return false;
-// }
-//
-// LiftThread liftThread = null;
-// LiftProtocol liftProtocol = null;
-// if (wrkMast.getLiftNo() == null) {
-// //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-// liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-// if (liftThread == null) {
-// News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-// return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-// }
-//
-// liftProtocol = liftThread.getStatus();
-// if (liftProtocol == null) {
-// News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-// WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
-// if (liftWrkMast != null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-// }
-//
-// wrkMast.setModiTime(now);
-// wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-// wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-// wrkMastService.updateById(wrkMast);
-// return false;
-// }else {
-// liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-// if (liftThread == null) {
-// News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-// return false;
-// }
-//
-// liftProtocol = liftThread.getStatus();
-// if (liftProtocol == null) {
-// News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-// return false;
-// }
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-// WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-// if (liftWrkMast != null) {
-// if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-// }
-// }
-//
-// if (!liftThread.isIdle()) {
-// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-// return false;
-// }
-//
-// //灏忚溅澶勪簬绌洪棽鐘舵��
-// if (!shuttleThread.isIdle()) {
-// News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-// if (liftProtocol.getHasCar()) {
-// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-// return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-// }
-//
-// //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-// if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-// //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
-// //璋冨害鎻愬崌鏈�
-//
-// //鑾峰彇鎻愬崌鏈哄懡浠�
-// List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
-// LiftCommand liftCommand = liftCommands.get(0);
-//
-// int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-// liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-//
-// ArrayList<LiftCommand> commands = new ArrayList<>();
-// commands.add(liftCommand);
-//
-// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-// LiftAssignCommand assignCommand = new LiftAssignCommand();
-// assignCommand.setCommands(commands);
-// assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-// assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-//
-// //涓嬪彂浠诲姟
-// liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-// return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
-// }
-//
-// if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-// //璺ㄥ眰閿佸畾璺緞
-// //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-// List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
-// if (targetNodes == null) {
-// return false;//鏈幏鍙栧埌鑺傜偣
-// }
-// boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
-// if (!checkPathIsAvailable) {
-// News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
-// }
-// //灏濊瘯閿佸畾鐩爣绔欒矾寰�
-// boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-// if (!result2) {
-// News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;//璺緞閿佸畾澶辫触
-// }
-// //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-// }
-//
-// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-// assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-// assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-// assignCommand.setAuto(true);//鑷姩妯″紡
-//
-// //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-// List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-// if (commands == null) {
-// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-// return false;
-// }
-//
-// assignCommand.setCommands(commands);
-//
-// wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-// wrkMast.setModiTime(now);
-// if (wrkMastService.updateById(wrkMast)) {
-// //涓嬪彂浠诲姟
-// shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-// //瑙﹀彂閫氱煡
-// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-// return false;
-// }
-// return false;
-// }
-//
-// return true;
-// }
-
- /**
- * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
- //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
- Date now = new Date();
-
- //鎻愬崌鏈烘惉杩愪腑 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) {
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
- return false;
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- return false;
- }
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- return false;
- }
- if (!liftThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
- if (!liftProtocol.getHasCar()) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
- return false;//鎻愬崌鏈哄唴鏃犲皬杞�
- }
-
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //鑾峰彇鎻愬崌鏈哄懡浠�
- List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), Utils.getLev(wrkMast.getSourceLocNo()), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
- LiftCommand liftCommand = liftCommands.get(0);
-
- int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
- liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
- ArrayList<LiftCommand> commands = new ArrayList<>();
- commands.add(liftCommand);
-
- //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
- LiftAssignCommand assignCommand = new LiftAssignCommand();
- assignCommand.setCommands(commands);
- assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
- assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
- wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
- //瑙﹀彂閫氱煡
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.LIFT_MOVE_SHUTTLE);
- }
- }
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) {
- //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
- Date now = new Date();
-
- //鎻愬崌鏈烘惉杩愪腑 307.鎻愬崌鏈烘惉杩愬畬鎴� ==> 308.灏忚溅杩佸嚭鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) {
- if (wrkMast.getLiftNo() == null) {
- News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
- return false;
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- return false;
- }
- LiftProtocol liftProtocol = liftThread.getStatus();
- if (liftProtocol == null) {
- return false;
- }
-
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
- assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
- assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
- //鏇存柊灏忚溅鍧愭爣
- ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
- ArrayList<ShuttleCommand> commands = new ArrayList<>();
- commands.add(command);
-
- assignCommand.setCommands(commands);
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- return false;
- }
-
- //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
- List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
-
- if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
- return false;//灏忚溅鏈埌杈剧洰鏍囧眰
- }
-
- //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
- if (targetNodes == null) {
- return false;//鏈幏鍙栧埌鑺傜偣
- }
-
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
- assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
- assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
- ArrayList<ShuttleCommand> commands = new ArrayList<>();
- int targetLev = Utils.getLev(wrkMast.getLocNo());
- //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
- ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
- for (NavigateNode node : targetNodes) {
- whiteList.add(new int[]{node.getX(), node.getY()});
- }
-
- //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护
- List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(liftThread.getLiftLocNo(targetLev), liftThread.getLiftStandByLocNo(targetLev), NavigationMapType.NORMAL.id, whiteList, assignCommand, shuttleThread);
- if (moveCommands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- commands.addAll(moveCommands);
- assignCommand.setCommands(commands);
-
- wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
-
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- //瑙﹀彂閫氱煡
- notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_OUT_LIFT);
- }
- }
- return true;
- }
-
- /**
- * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
- //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
- Date now = new Date();
-
- //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
- if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) {
-
- List<NavigateNode> targetNodes = null;
- if (wrkMast.getLiftNo() != null) {
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
- if (liftWrkMast != null) {
- if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
- if (liftThread == null) {
- News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
- return false;
- }
-
- //灏忚溅鐩爣灏辨槸鎻愬崌鏈轰綅缃紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
- if (liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo())).equals(wrkMast.getLocNo())) {
- wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
- wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
- wrkMast.setModiTime(now);
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
-// //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
-// targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
- }
-
- //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- if (shuttleThread == null) {
- return false;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
- if (shuttleProtocol == null) {
- return false;
- }
-
- //灏忚溅澶勪簬绌洪棽鐘舵��
- if (!shuttleThread.isIdle()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;
- }
-
- //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
- if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
- wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
- wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
- wrkMast.setModiTime(now);
- wrkMastService.updateById(wrkMast);
- return false;
- }
-
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
- assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
- assignCommand.setAuto(true);//鑷姩妯″紡
- assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
- assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
- List<ShuttleCommand> commands = new ArrayList<>();
- List<ShuttleCommand> liftCommand = null;
- Integer mapType = NavigationMapType.NORMAL.id;
-
- List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
- if (moveCommands == null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
- return false;//璺緞璁$畻澶辫触
- }
-
- commands.addAll(moveCommands);
-
- assignCommand.setCommands(commands);
- wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
- wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
- wrkMast.setSystemMsg("");//娓呯┖娑堟伅
- wrkMast.setModiTime(now);
- if (wrkMastService.updateById(wrkMast)) {
- //涓嬪彂浠诲姟
- shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
- }
- }
- return true;
- }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java
new file mode 100644
index 0000000..1823d53
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java
@@ -0,0 +1,647 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.NotifyUtils;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.NavigateNode;
+import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.LiftUtils;
+import com.zy.common.utils.NavigateMapUtils;
+import com.zy.common.utils.NavigateUtils;
+import com.zy.common.utils.ShuttleOperaUtils;
+import com.zy.core.News;
+import com.zy.core.action.LiftAction;
+import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.ShuttleTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.LiftThread;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class ShuttleMoveServiceImpl {
+
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private ShuttleOperaUtils shuttleOperaUtils;
+ @Autowired
+ private ShuttleAction shuttleAction;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private LiftAction liftAction;
+ @Autowired
+ private NavigateUtils navigateUtils;
+ @Autowired
+ private NavigateMapUtils navigateMapUtils;
+ @Autowired
+ private NotifyUtils notifyUtils;
+
+ public void shuttleMoveExecuteMove(WrkMast wrkMast) {
+ boolean stepMoveSta = this.shuttleMoveExecuteStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+ if (!stepMoveSta) {
+ return;
+ }
+
+ boolean stepIntoLift = this.shuttleMoveExecuteStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+ if (!stepIntoLift) {
+ return;
+ }
+
+ boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑
+ if (!stepLiftMove) {
+ return;
+ }
+
+ boolean updateShuttleLocation = this.shuttleMoveExecuteStepUpdateShuttleLocation(wrkMast);//鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
+ if (!updateShuttleLocation) {
+ return;
+ }
+
+ boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+ if (!stepMoveLoc) {
+ return;
+ }
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
+ Date now = new Date();
+
+ //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
+ if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
+ wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+ }
+ return false;
+ }
+
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+ LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+ if (liftThread == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+ String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), true);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ List<ShuttleCommand> commands = new ArrayList<>();
+ Integer mapType = NavigationMapType.NORMAL.id;
+
+ if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
+ //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+ List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+ if (moveCommands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;//璺緞瑙i攣澶辫触
+ }
+ commands.addAll(moveCommands);
+ } else {
+ //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
+ wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);// 302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ //瑙﹀彂閫氱煡
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
+ return false;
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftThread liftThread = null;
+ LiftProtocol liftProtocol = null;
+ if (wrkMast.getLiftNo() == null) {
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+ liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+ if (liftThread == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+ if (liftWrkMast != null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+
+ wrkMast.setModiTime(now);
+ wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ } else {
+ liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+ //璋冨害鎻愬崌鏈�
+
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
+ LiftCommand liftCommand = liftCommands.get(0);
+
+ int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+ liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+ commands.add(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+ //涓嬪彂浠诲姟
+ liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+ return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+ }
+
+// //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+// List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
+// if (targetNodes == null) {
+// return false;//鏈幏鍙栧埌鑺傜偣
+// }
+// boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
+// if (!checkPathIsAvailable) {
+// News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+// return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
+// }
+// //灏濊瘯閿佸畾鐩爣绔欒矾寰�
+// boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
+// if (!result2) {
+// News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+// return false;//璺緞閿佸畾澶辫触
+// }
+// //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ //瑙﹀彂閫氱煡
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
+ //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
+ Date now = new Date();
+
+ //鎻愬崌鏈烘惉杩愪腑 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) {
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
+ return false;
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ return false;
+ }
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ return false;
+ }
+ if (!liftThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (!liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), Utils.getLev(wrkMast.getSourceLocNo()), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
+ LiftCommand liftCommand = liftCommands.get(0);
+
+ int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+ liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+ commands.add(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+ //瑙﹀彂閫氱煡
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.LIFT_MOVE_SHUTTLE);
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) {
+ //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
+ Date now = new Date();
+
+ //鎻愬崌鏈烘惉杩愪腑 307.鎻愬崌鏈烘惉杩愬畬鎴� ==> 308.灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) {
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
+ return false;
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ return false;
+ }
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ return false;
+ }
+
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+ assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+ //鏇存柊灏忚溅鍧愭爣
+ ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
+ ArrayList<ShuttleCommand> commands = new ArrayList<>();
+ commands.add(command);
+
+ assignCommand.setCommands(commands);
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+
+ if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ return false;//灏忚溅鏈埌杈剧洰鏍囧眰
+ }
+
+// //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
+// List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
+// //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
+// if (targetNodes == null) {
+// return false;//鏈幏鍙栧埌鑺傜偣
+// }
+
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+ assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+ ArrayList<ShuttleCommand> commands = new ArrayList<>();
+ int targetLev = Utils.getLev(wrkMast.getLocNo());
+ //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
+ ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
+// for (NavigateNode node : targetNodes) {
+// whiteList.add(new int[]{node.getX(), node.getY()});
+// }
+
+ //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护
+ List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(liftThread.getLiftLocNo(targetLev), liftThread.getLiftStandByLocNo(targetLev, false), NavigationMapType.NORMAL.id, whiteList, assignCommand, shuttleThread);
+ if (moveCommands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ commands.addAll(moveCommands);
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ //瑙﹀彂閫氱煡
+ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_OUT_LIFT);
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
+ Date now = new Date();
+
+ //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) {
+
+ List<NavigateNode> targetNodes = null;
+ if (wrkMast.getLiftNo() != null) {
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //灏忚溅鐩爣灏辨槸鎻愬崌鏈轰綅缃紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
+ if (liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo())).equals(wrkMast.getLocNo())) {
+ wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
+ wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+// //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
+// targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
+ }
+
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
+ if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+ wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
+ wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+ assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+ List<ShuttleCommand> commands = new ArrayList<>();
+ List<ShuttleCommand> liftCommand = null;
+ Integer mapType = NavigationMapType.NORMAL.id;
+
+ List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
+ if (moveCommands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;//璺緞璁$畻澶辫触
+ }
+
+ commands.addAll(moveCommands);
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+ wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ }
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java
new file mode 100644
index 0000000..e2dd25a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java
@@ -0,0 +1,710 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.LiftUtils;
+import com.zy.common.utils.ShuttleOperaUtils;
+import com.zy.core.News;
+import com.zy.core.action.LiftAction;
+import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.ShuttleTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.LiftThread;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class TransportLiftInServiceImpl {
+
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private ShuttleOperaUtils shuttleOperaUtils;
+ @Autowired
+ private ShuttleAction shuttleAction;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private LiftAction liftAction;
+
+ public void shuttleMoveExecuteTransportLiftTake(WrkMast wrkMast) {
+ boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+ if (!stepMoveSta) {
+ return;
+ }
+
+ boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
+ if (!stepLiftToShuttleLev) {
+ return;
+ }
+
+ boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+ if (!stepIntoLift) {
+ return;
+ }
+
+ boolean stepLiftToTargetLev = this.shuttleMoveExecuteTransportLiftStepLiftToTargetLev(wrkMast);//鎻愬崌鏈哄埌鏀捐揣灞�
+ if (!stepLiftToTargetLev) {
+ return;
+ }
+
+ boolean stepOutLift = this.shuttleMoveExecuteTransportLiftStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
+ if (!stepOutLift) {
+ return;
+ }
+
+ boolean stepMoveLoc = this.shuttleMoveExecuteTransportLiftStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+ if (!stepMoveLoc) {
+ return;
+ }
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepMoveSta(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
+ Date now = new Date();
+
+ //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
+ if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+ LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+ if (liftThread == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+ String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), true);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ List<ShuttleCommand> commands = new ArrayList<>();
+ Integer mapType = NavigationMapType.NORMAL.id;
+
+ if (shuttleProtocol.getCurrentLocNo().equals(liftStandByLocNo)) {
+ //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
+ wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts);// 灏忚溅绉诲姩鑷崇珯鐐� ==> 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
+ //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+ List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+ if (moveCommands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;//璺緞瑙i攣澶辫触
+ }
+ commands.addAll(moveCommands);
+ }
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 322.灏忚溅绉诲姩鑷崇珯鐐�
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+// //瑙﹀彂閫氱煡
+// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
+ return false;
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftThread liftThread = null;
+ LiftProtocol liftProtocol = null;
+ if (wrkMast.getLiftNo() == null) {
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+ liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+ if (liftThread == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+ if (liftWrkMast != null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+
+ wrkMast.setModiTime(now);
+ wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ } else {
+ liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (!liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ //鎻愬崌鏈哄湪灏忚溅妤煎眰
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ //璋冨害鎻愬崌鏈�
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
+ LiftCommand liftCommand = liftCommands.get(0);
+
+ int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+ liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+ commands.add(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+ wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+// //瑙﹀彂閫氱煡
+// notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepIntoLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
+ return false;
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (!liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+ }
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+// //瑙﹀彂閫氱煡
+// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌鏀捐揣灞�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepLiftToTargetLev(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟鏈粦瀹氭彁鍗囨満", wrkMast.getWrkNo());
+ return false;
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (!liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (!liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ if (liftProtocol.getLev() == Utils.getLev(wrkMast.getLocNo())) {
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts);// 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ //璋冨害鎻愬崌鏈�
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<LiftCommand> liftCommands = liftThread.getMoveWithShuttleCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
+ LiftCommand liftCommand = liftCommands.get(0);
+
+ int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+ liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+ commands.add(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
+ wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+// //瑙﹀彂閫氱煡
+// notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepOutLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (!liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (!liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev() != Utils.getLev(wrkMast.getLocNo())) {
+ //鎻愬崌鏈轰笉鍦ㄦ斁璐у眰
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼笉鍦ㄦ斁璐у眰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;
+ }
+
+ if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+ assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+ //鏇存柊灏忚溅鍧愭爣
+ ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
+ ArrayList<ShuttleCommand> commands = new ArrayList<>();
+ commands.add(command);
+
+ assignCommand.setCommands(commands);
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+ String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), false);
+
+ //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
+ if (liftCommand == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+ commands.addAll(0, liftCommand);
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+// //瑙﹀彂閫氱煡
+// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepMoveLoc(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
+ Date now = new Date();
+
+ //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+ assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+ assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+ List<ShuttleCommand> commands = new ArrayList<>();
+ Integer mapType = NavigationMapType.DFX.id;
+
+ List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
+ if (moveCommands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;//璺緞璁$畻澶辫触
+ }
+ commands.addAll(moveCommands);
+
+ List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
+ if (liftCommand == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+ commands.addAll(liftCommand);
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
+ wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java
new file mode 100644
index 0000000..a55af16
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java
@@ -0,0 +1,562 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.LiftUtils;
+import com.zy.common.utils.ShuttleOperaUtils;
+import com.zy.core.News;
+import com.zy.core.action.LiftAction;
+import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.dispatcher.ShuttleDispatchUtils;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.ShuttleTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.LiftThread;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class TransportLiftOutServiceImpl {
+
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private ShuttleOperaUtils shuttleOperaUtils;
+ @Autowired
+ private ShuttleAction shuttleAction;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private LiftAction liftAction;
+ @Autowired
+ private ShuttleDispatchUtils shuttleDispatchUtils;
+
+ public void shuttleMoveExecuteTransportLiftPut(WrkMast wrkMast) {
+ boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepCallShuttle(wrkMast);//鍛煎彨灏忚溅鑷冲彇璐х偣
+ if (!stepMoveSta) {
+ return;
+ }
+
+ boolean stepTransportLiftOutStepMoveSta = this.shuttleMoveExecuteTransportLiftOutStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+ if (!stepTransportLiftOutStepMoveSta) {
+ return;
+ }
+
+ boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
+ if (!stepLiftToShuttleLev) {
+ return;
+ }
+
+ boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftOutStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+ if (!stepIntoLift) {
+ return;
+ }
+
+ boolean stepOutLift = this.shuttleMoveExecuteTransportLiftOutStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
+ if (!stepOutLift) {
+ return;
+ }
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鍛煎彨灏忚溅鑷冲彇璐х偣
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftStepCallShuttle(WrkMast wrkMast) {
+ Date now = new Date();
+ //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
+ if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+ //灏忚溅鍦ㄥ彇璐х偣
+ wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo(), null, true);
+ if (!dispatchShuttle) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftOutStepMoveSta(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
+ Date now = new Date();
+
+ //灏忚溅绉诲姩鑷崇珯鐐� 鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
+ if (wrkMast.getWrkSts() == WrkStsType.CALL_SHUTTLE_TO_TAKE.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪鍙栬揣鐐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+ LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+ if (liftThread == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+ String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), true);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ List<ShuttleCommand> commands = new ArrayList<>();
+ Integer mapType = NavigationMapType.DFX.id;
+
+ //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+ List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+ if (moveCommands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;//璺緞瑙i攣澶辫触
+ }
+ commands.addAll(moveCommands);
+
+ List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
+ if (liftCommand == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+ commands.addAll(0, liftCommand);
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
+ wrkMast.setModiTime(now);
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftThread liftThread = null;
+ LiftProtocol liftProtocol = null;
+ if (wrkMast.getLiftNo() == null) {
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+ liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+ if (liftThread == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+ if (liftWrkMast != null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+
+ wrkMast.setModiTime(now);
+ wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
+ } else {
+ liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ //鎻愬崌鏈哄湪灏忚溅妤煎眰
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ return false;
+ }
+
+ //璋冨害鎻愬崌鏈�
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
+ LiftCommand liftCommand = liftCommands.get(0);
+
+ int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+ liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+ ArrayList<LiftCommand> commands = new ArrayList<>();
+ commands.add(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+ wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftOutStepIntoLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
+ return false;
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+ //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+ }
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+ List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
+ if (liftCommand == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+ commands.addAll(liftCommand);
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteTransportLiftOutStepOutLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+ Date now = new Date();
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ if (wrkMast.getLiftNo() == null) {
+ News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ if (!liftThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleThread.isIdle()) {
+ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+ if (!liftProtocol.getHasCar()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+ if (!liftProtocol.getHasTray()) {
+ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+ return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+ }
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+
+ //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+ String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), false);
+
+ //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
+ if (commands == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+ return false;
+ }
+
+ assignCommand.setCommands(commands);
+
+ wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ wrkMast.setModiTime(now);
+ if (wrkMastService.updateById(wrkMast)) {
+ //涓嬪彂浠诲姟
+ shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/src/main/java/com/zy/core/model/LiftSlave.java b/src/main/java/com/zy/core/model/LiftSlave.java
index 16780c2..8b13130 100644
--- a/src/main/java/com/zy/core/model/LiftSlave.java
+++ b/src/main/java/com/zy/core/model/LiftSlave.java
@@ -20,11 +20,17 @@
//鍒�
private Integer bay;
- //寰呮満浣嶆帓
- private Integer standByRow;
+ //寰呮満浣嶆帓-in
+ private Integer standByInRow;
- //寰呮満浣嶅垪
- private Integer standByBay;
+ //寰呮満浣嶅垪-in
+ private Integer standByInBay;
+
+ //寰呮満浣嶆帓-out
+ private Integer standByOutRow;
+
+ //寰呮満浣嶅垪-out
+ private Integer standByOutBay;
//绔欑偣鎺�
private Integer staRow;
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index e8a7e30..cdfb73c 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -47,7 +47,7 @@
String getLiftLocNo(int lev);//鑾峰彇鎻愬崌鏈轰綅缃�
- String getLiftStandByLocNo(int lev);//鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+ String getLiftStandByLocNo(int lev, boolean in);//鑾峰彇鎻愬崌鏈哄緟鏈轰綅
List<NavigateNode> getLiftStaNodes(int lev);
diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index 77a5e0d..24eac5e 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -441,8 +441,11 @@
}
@Override
- public String getLiftStandByLocNo(int lev) {
- return Utils.getLocNo(slave.getStandByRow(), slave.getStandByBay(), lev);
+ public String getLiftStandByLocNo(int lev, boolean in) {
+ if (in) {
+ return Utils.getLocNo(slave.getStandByInRow(), slave.getStandByInBay(), lev);
+ }
+ return Utils.getLocNo(slave.getStandByOutRow(), slave.getStandByOutBay(), lev);
}
@Override
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 7945ff2..975905c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -68,8 +68,10 @@
threadImpl: NyLiftThread
row: 2
bay: 3
- standByRow: 2
- standByBay: 1
+ standByInRow: 2
+ standByInBay: 1
+ standByOutRow: 2
+ standByOutBay: 2
staRow: 2
staBay: 1
devp[0]:
--
Gitblit v1.9.1