From 1da55d544dffc8d8b2e88efb4532776e71b0b11c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 15 九月 2023 16:39:09 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 319 +++++++++++++++++++++++++++++++++++-----------------
src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java | 12 ++
src/main/resources/mapper/WrkMastMapper.xml | 2
src/main/java/com/zy/core/thread/NyShuttleThread.java | 8
src/main/java/com/zy/core/MainProcess.java | 7 -
5 files changed, 229 insertions(+), 119 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 33b4420..70fc05b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -880,14 +880,17 @@
shuttleProtocol.setToken(0);
}
break;
- case 102://102.灏忚溅鍒版彁鍗囨満涓� ==> 103.灏忚溅鍒版彁鍗囨満瀹屾垚
+ case 102://102.灏忚溅绉诲姩鑷崇珯鐐� ==> 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
wrkMast.setWrkSts(103L);
break;
- case 106://106.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 107.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�
- wrkMast.setWrkSts(107L);
+ case 104://104.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴�
+ wrkMast.setWrkSts(105L);
break;
- case 108://108.灏忚溅绉诲姩涓� ==> 109.灏忚溅绉诲姩瀹屾垚
+ case 108://108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�
wrkMast.setWrkSts(109L);
+ break;
+ case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚
+ wrkMast.setWrkSts(111L);
if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) {
//閲婃斁灏忚溅浠ょ墝
shuttleProtocol.setToken(0);
@@ -1135,8 +1138,8 @@
liftProtocol.setToken(0);
}
break;
- case 104://104.鎻愬崌鏈烘惉杩愪腑 ==> 105.鎻愬崌鏈烘惉杩愬畬鎴�
- wrkMast.setWrkSts(105L);
+ case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴�
+ wrkMast.setWrkSts(107L);
break;
default:
}
@@ -2063,38 +2066,44 @@
//鏌ヨ灏忚溅绉诲簱浠诲姟
List<WrkMast> wrkMasts = wrkMastMapper.selectShuttleMoveWrk();
for (WrkMast wrkMast : wrkMasts) {
- boolean step1 = this.shuttleMoveExecuteStep1(wrkMast);//灏忚溅绉诲姩鍒版彁鍗囨満涓�
- if (!step1) {
+ boolean stepMoveSta = this.shuttleMoveExecuteStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+ if (!stepMoveSta) {
continue;
}
- boolean step2 = this.shuttleMoveExecuteStep2(wrkMast);//鎻愬崌鏈烘惉杩愪腑
- if (!step2) {
+ boolean stepIntoLift = this.shuttleMoveExecuteStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+ if (!stepIntoLift) {
continue;
}
- boolean step3 = this.shuttleMoveExecuteStep3(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
- if (!step3) {
+ boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑
+ if (!stepLiftMove) {
continue;
}
- boolean step4 = this.shuttleMoveExecuteStep4(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
- if (!step4) {
+ boolean stepOutLift = this.shuttleMoveExecuteStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
+ if (!stepOutLift) {
continue;
}
+
+ boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+ if (!stepMoveLoc) {
+ continue;
+ }
+
}
}
/**
- * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒版彁鍗囨満涓�
+ * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
* 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
* ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
*/
- private boolean shuttleMoveExecuteStep1(WrkMast wrkMast) {
- //--------------------------------------灏忚溅绉诲姩鍒版彁鍗囨満涓�-----------------------------------------//
+ private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
Date now = new Date();
- //灏忚溅绉诲姩鍒版彁鍗囨満涓� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅鍒版彁鍗囨満涓�
+ //灏忚溅绉诲姩鑷崇珯鐐� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅绉诲姩鑷崇珯鐐逛腑
if (wrkMast.getWrkSts() == 101) {
//鑾峰彇鍥涘悜绌挎杞︾嚎绋�
NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
@@ -2117,72 +2126,26 @@
}
if (Utils.getLev(wrkMast.getLocNo()) == shuttleProtocol.getPoint().getZ()) {
- //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛岄渶瑕侀�氳繃鎻愬崌鏈鸿皟搴�
- return true;//鐩存帴杩涘叆108.灏忚溅绉诲姩涓�
- }
-
- //璁$畻璺濈灏忚溅鏈�杩戠殑鎻愬崌鏈虹珯鐐�
- //鏌ヨ灏忚溅鎵�鍦ㄦゼ灞傛彁鍗囨満杈撻�佺珯鐐�
- int recentAllDistance = 9999999;//榛樿鏈�杩戣窛绂�
- BasDevp recentDevp = null;//鏈�杩戠珯鐐�
- List<BasDevp> basDevps = basDevpService.selectHasLiftNoByLev(shuttleProtocol.getPoint().getZ());
- for (BasDevp basDevp : basDevps) {
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo());
- if (liftThread == null) {
- continue;
+ //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
+ wrkMast.setWrkSts(109L);// 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓�
+ wrkMast.setModiTime(now);
+ shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗�
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ return true;//鐩存帴杩涘叆109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓�
}
- LiftProtocol liftProtocol = liftThread.getLiftProtocol();
- if (liftProtocol == null) {
- continue;
- }
- if (!liftProtocol.isIdle()) {
- continue;
- }
-
- //璁$畻璺緞
- List<NavigateNode> calc = NavigateUtils.calc(shuttleProtocol.getCurrentLocNo(), basDevp.getLocNo(), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), Utils.getLev(shuttleProtocol.getCurrentLocNo())));
- if (calc == null) {
- continue;//璁$畻澶辫触锛屾壘涓嬩竴涓珯鐐�
- }
-
- Integer allDistance = NavigateUtils.getOriginPathAllDistance(calc);//鏍规嵁鍘熷鑺傜偣缁撴灉锛岃绠楁�昏璧拌窛绂�
- if (recentAllDistance > allDistance) {
- recentAllDistance = allDistance;//鏇存柊璺濈
- recentDevp = basDevp;//鏇存柊杈撻�佺珯鐐�
- }
+ return false;
}
- if (recentDevp == null) {
- //娌℃湁鎵惧埌鍙敤杈撻�佺珯鐐�
- return false;//绛夊緟涓嬩竴娆¤疆璇�
+ //鑾峰彇鐩爣杈撻�佺珯
+ BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
+ if (basDevp == null) {
+ return false;//鎵句笉鍒拌緭閫佺珯鐐�
}
-
- //鑾峰彇鎻愬崌鏈烘暟鎹�
- BasLift basLift = basLiftService.selectById(recentDevp.getLiftNo());
- if (basLift == null) {
- return false;//娌℃湁鎻愬崌鏈烘暟鎹�
- }
- if (basLift.getPoint() == null) {
- return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍�
- }
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
- WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(basLift.getLiftNo());
- if (liftWrkMast != null) {
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
- }
-
- NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY());
- liftNode.setZ(basLift.getPoint$().getZ());
//鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
- NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), recentDevp.getLocNo());
- //鑾峰彇灏忚溅杩涙彁鍗囨満琛岃蛋鍛戒护
- NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), NavigatePositionConvert.locNoToNode(recentDevp.getLocNo()), liftNode, true);
- if (result.getCommands() == null) {
- return false;//璺緞璁$畻澶辫触
- }
+ NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), basDevp.getLocNo());
List<NyShuttleHttpCommand> commands = result.getCommands();
- commands.add(moveCommand);//娣诲姞灏忚溅杩佸叆鎻愬崌鏈哄懡浠�
ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
@@ -2192,31 +2155,53 @@
assignCommand.setCommands(commands);
assignCommand.setNodes(result.getNodes());
- wrkMast.setWrkSts(102L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅鍒版彁鍗囨満涓�
- wrkMast.setLiftNo(basLift.getLiftNo());//鎻愬崌鏈哄彿(閿佸畾鎻愬崌鏈洪槻姝㈣鍏朵粬浠诲姟鎶㈠崰)
+ wrkMast.setWrkSts(102L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅绉诲姩鑷崇珯鐐�
wrkMast.setModiTime(now);
shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗�
if (wrkMastMapper.updateById(wrkMast) > 0) {
//涓嬪彂浠诲姟
MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ return false;
}
+ return false;
}
return true;
}
/**
- * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
+ * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
* 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
* ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
*/
- private boolean shuttleMoveExecuteStep2(WrkMast wrkMast) {
- //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
+ private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
Date now = new Date();
- //鎻愬崌鏈烘惉杩愪腑 103.灏忚溅鍒版彁鍗囨満瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑
if (wrkMast.getWrkSts() == 103) {
+ //鑾峰彇鐩爣杈撻�佺珯
+ BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
+ if (basDevp == null) {
+ return false;//鎵句笉鍒拌緭閫佺珯鐐�
+ }
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ //鑾峰彇鎻愬崌鏈烘暟鎹�
+ BasLift basLift = basLiftService.selectById(basDevp.getLiftNo());
+ if (basLift == null) {
+ return false;//娌℃湁鎻愬崌鏈烘暟鎹�
+ }
+
+ if (basLift.getPoint() == null) {
+ return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍�
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(basLift.getLiftNo());
+ if (liftWrkMast != null) {
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo());
if (liftThread == null) {
return false;
}
@@ -2226,10 +2211,6 @@
}
if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
return false;
- }
- //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰�
- if (liftProtocol.getToken() != 0) {
- return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔�
}
//鑾峰彇鍥涘悜绌挎杞︾嚎绋�
@@ -2244,6 +2225,130 @@
//灏忚溅澶勪簬绌洪棽鐘舵��
if (!shuttleProtocol.isIdleNoCharge()) {
+ return false;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+ if (liftProtocol.getLev().intValue() != shuttleProtocol.getPoint().getZ()) {
+ //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+ //璋冨害鎻愬崌鏈�
+
+ //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
+ BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(liftProtocol.getLev().intValue(), liftProtocol.getLiftNo().intValue());
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceBasDevp.getDevNo(), basDevp.getDevNo(), wrkMast.getWrkNo());
+
+ ArrayList<NyLiftCommand> commands = new ArrayList<>();
+ commands.add(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(liftProtocol.getLiftNo());
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+ assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue());
+
+ wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤
+ wrkMast.setModiTime(now);
+ liftProtocol.setToken(wrkMast.getShuttleNo());//鎻愬崌鏈轰护鐗岀粦瀹氬綋鍓嶅皬杞�
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+ }
+ return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+ }
+
+ //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅
+ if (liftProtocol.getToken() != wrkMast.getShuttleNo()) {
+ return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔�
+ }
+
+ //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗�
+ if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) {
+ return false;
+ }
+
+ //绔欑偣鑺傜偣
+ NavigateNode staNode = NavigatePositionConvert.locNoToNode(basDevp.getLocNo());
+
+ //鎻愬崌鏈鸿妭鐐�
+ NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY());
+ liftNode.setZ(basLift.getPoint$().getZ());
+
+ //鑾峰彇灏忚溅杩涙彁鍗囨満琛岃蛋鍛戒护
+ NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), staNode, liftNode, true);
+ List<NyShuttleHttpCommand> commands = new ArrayList<>();
+ commands.add(moveCommand);
+ List<NavigateNode> nodes = new ArrayList<>();//琛岃蛋鑺傜偣璺緞
+ nodes.add(staNode);
+ nodes.add(liftNode);
+
+ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+ assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+ assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟
+ assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙�
+ assignCommand.setAuto(true);//鑷姩妯″紡
+ assignCommand.setCommands(commands);
+ assignCommand.setNodes(nodes);
+
+ wrkMast.setWrkSts(104L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ //涓嬪彂浠诲姟
+ MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ return false;
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
+ * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+ * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+ */
+ private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
+ //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
+ Date now = new Date();
+
+ //鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑
+ if (wrkMast.getWrkSts() == 105) {
+
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+ if (liftThread == null) {
+ return false;
+ }
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+ if (liftProtocol == null) {
+ return false;
+ }
+ if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
+ return false;
+ }
+ //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅
+ if (liftProtocol.getToken() != wrkMast.getShuttleNo()) {
+ return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂
+ }
+
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ return false;
+ }
+ NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ return false;
+ }
+
+ //灏忚溅澶勪簬绌洪棽鐘舵��
+ if (!shuttleProtocol.isIdleNoCharge()) {
+ return false;
+ }
+
+ //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗�
+ if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) {
return false;
}
@@ -2268,10 +2373,9 @@
assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue());
- wrkMast.setWrkSts(104L);//鎻愬崌鏈烘惉杩愪腑 103.灏忚溅鍒版彁鍗囨満瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑
+ wrkMast.setWrkSts(106L);//鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑
wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤
wrkMast.setModiTime(now);
- liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗�
if (wrkMastMapper.updateById(wrkMast) > 0) {
//涓嬪彂浠诲姟
MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
@@ -2282,16 +2386,15 @@
}
/**
- * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
* 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
* ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
*/
- private boolean shuttleMoveExecuteStep3(WrkMast wrkMast) {
- //--------------------------------------灏忚溅杩佸嚭鎻愬崌鏈轰腑-----------------------------------------//
+ private boolean shuttleMoveExecuteStepOutLift(WrkMast wrkMast) {
+ //--------------------------------------灏忚溅杩佸嚭鎻愬崌鏈�-----------------------------------------//
Date now = new Date();
-
- //灏忚溅杩佸嚭鎻愬崌鏈轰腑 105.鎻愬崌鏈烘惉杩愬畬鎴� ==> 106.灏忚溅杩佸嚭鎻愬崌鏈轰腑
- if (wrkMast.getWrkSts() == 105) {
+ //灏忚溅绉诲姩鍒版彁鍗囨満涓� 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ if (wrkMast.getWrkSts() == 107) {
LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
if (liftThread == null) {
@@ -2305,9 +2408,9 @@
return false;
}
- //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠浠诲姟
- if (liftProtocol.getToken() != wrkMast.getWrkNo()) {
- return false;
+ //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅
+ if (liftProtocol.getToken() != wrkMast.getShuttleNo()) {
+ return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂
}
//鑾峰彇鍥涘悜绌挎杞︾嚎绋�
@@ -2325,7 +2428,7 @@
return false;
}
- //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔�
+ //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗�
if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) {
return false;
}
@@ -2337,7 +2440,7 @@
}
//鑾峰彇鎻愬崌鏈烘暟鎹�
- BasLift basLift = basLiftService.selectById(targetBasDevp.getLiftNo());
+ BasLift basLift = basLiftService.selectById(liftProtocol.getLiftNo().intValue());
if (basLift == null) {
return false;//娌℃湁鎻愬崌鏈烘暟鎹�
}
@@ -2360,12 +2463,14 @@
assignCommand.setCommands(commands);
assignCommand.setNodes(null);
- wrkMast.setWrkSts(106L);//灏忚溅杩佸嚭鎻愬崌鏈轰腑 105.鎻愬崌鏈烘惉杩愬畬鎴� ==> 106.灏忚溅杩佸嚭鎻愬崌鏈轰腑
+ wrkMast.setWrkSts(108L);//灏忚溅杩佸嚭鎻愬崌鏈轰腑 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) > 0) {
//涓嬪彂浠诲姟
MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+ return false;
}
+ return false;
}
return true;
}
@@ -2375,12 +2480,12 @@
* 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
* ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
*/
- private boolean shuttleMoveExecuteStep4(WrkMast wrkMast) {
+ private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
//--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
Date now = new Date();
- //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 107.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 108.灏忚溅绉诲姩涓�
- if (wrkMast.getWrkSts() == 107) {
+ //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓�
+ if (wrkMast.getWrkSts() == 109) {
LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
if (liftThread == null) {
@@ -2430,7 +2535,7 @@
//鑾峰彇灏忚溅浠庤緭閫佺珯鍒扮洰鏍囧簱浣嶅懡浠�
NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), targetBasDevp.getLocNo(), wrkMast.getLocNo());
- if (result.getCommands() == null) {
+ if (result == null) {
return false;//璺緞璁$畻澶辫触
}
List<NyShuttleHttpCommand> commands = result.getCommands();
@@ -2443,7 +2548,7 @@
assignCommand.setCommands(commands);
assignCommand.setNodes(result.getNodes());
- wrkMast.setWrkSts(108L);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 107.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 108.灏忚溅绉诲姩涓�
+ wrkMast.setWrkSts(110L);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓�
wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
wrkMast.setModiTime(now);
liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗�
diff --git a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
index f21a838..917c4cd 100644
--- a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
@@ -188,6 +188,17 @@
return false;
}
+ Integer staNo = null;
+ if (Utils.getLev(locNo) == shuttleProtocol.getPoint().getZ()) {
+ //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庝笉鍚屼竴妤煎眰锛岄渶瑕侀�氳繃鎻愬崌鏈鸿皟搴�
+ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐�
+ BasDevp liftSta = this.getRecentLiftSta(shuttleNo);
+ if (liftSta == null) {
+ return false;//娌℃湁鍙敤涓旂┖闂茬殑杈撻�佺珯鐐�
+ }
+ staNo = liftSta.getDevNo();
+ }
+
// 鑾峰彇宸ヤ綔鍙�
int workNo = commonService.getWorkNo(0);
// 淇濆瓨宸ヤ綔妗�
@@ -200,6 +211,7 @@
wrkMast.setShuttleNo(shuttleNo);//绌挎杞﹀彿
wrkMast.setSourceLocNo(shuttleProtocol.getCurrentLocNo()); // 婧愬簱浣� => 灏忚溅褰撳墠搴撲綅鍙�
wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
+ wrkMast.setStaNo(staNo);//鐩爣绔�
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setLinkMis("N");
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 9555160..3058a36 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -78,13 +78,6 @@
mainService.loopShuttleCharge();
mainService.executeShuttleCharge();
-// //鍑哄叆搴撴ā寮�
-// i++;
-// if (i > 1) {
-// mainService.outAndIn();
-// i = 0;
-// }
-
// 闂撮殧
Thread.sleep(200);
} catch (Exception e) {
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index 788a303f..b84f13c 100644
--- a/src/main/java/com/zy/core/thread/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -394,10 +394,10 @@
return false;//灏忚溅鐘舵�佸繖锛岀姝㈡墽琛屽懡浠�
}
- //妫�娴嬪皬杞︽槸鍚﹁杩涙彁鍗囨満锛屽闇�瑕佽繘鎻愬崌鏈哄垯璋冨害鎻愬崌鏈�
- if (!checkLiftStation(wrkNo)) {
- return false;
- }
+// //妫�娴嬪皬杞︽槸鍚﹁杩涙彁鍗囨満锛屽闇�瑕佽繘鎻愬崌鏈哄垯璋冨害鎻愬崌鏈�
+// if (!checkLiftStation(wrkNo)) {
+// return false;
+// }
//妫�娴嬬┛姊溅鏄惁鍦ㄦ彁鍗囨満鍐�
if (!checkShuttleInTheLift(wrkNo)) {
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 63410f9..466ae6d 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -159,7 +159,7 @@
<select id="selectLiftWrkMast" resultMap="BaseResultMap">
select top 1 * from asr_wrk_mast
where lift_no = #{liftNo}
- and wrk_sts in (3,4,24,25,102,103,104,105,106,107)
+ and wrk_sts in (3,4,24,25,104,105,106,107,108,109)
</select>
<select id="selectInOutWrkMast" resultMap="BaseResultMap">
--
Gitblit v1.9.1