From d399d1b1975b47097526cab07a0120c56b616200 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 20 九月 2023 16:25:54 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 785 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 573 insertions(+), 212 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..8109c27 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; @@ -98,6 +99,9 @@ private ShuttleDispatchUtils shuttleDispatchUtils; @Autowired private RedisUtil redisUtil; + @Autowired + private WrkMastLocMapper wrkMastLocMapper; + /** * 缁勬墭 @@ -661,6 +665,34 @@ * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� */ public synchronized void shuttleInExecute() { + List<WrkMast> wrkMasts = wrkMastMapper.selectInStep4(); + for (WrkMast wrkMast : wrkMasts) { + //鑾峰彇婧愮珯 + BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); + if (sourceBasDevp == null) { + continue;//绔欑偣涓嶅瓨鍦� + } + + //鑾峰彇鐩爣绔� + LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(sourceBasDevp.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); + if (liftStaProtocol == null) { + continue;//绔欑偣涓嶅瓨鍦� + } + + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佺┖闂层�佹湁鐗� + if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { + continue; + } + + boolean step1 = this.shuttleInExecuteStep1(wrkMast, liftStaProtocol);//灏忚溅鎼叆搴撲腑 + if (!step1) { + continue; + } + } + + + + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鍏ュ簱绔� @@ -684,30 +716,64 @@ continue; } - WrkMast wrkMast = wrkMastMapper.selectRackInStep4(workNo, staProtocol.getSiteId()); - if (wrkMast == null) { - continue; - } - boolean step1 = this.shuttleInExecuteStep1(wrkMast, basDevp);//灏忚溅鎼叆搴撲腑 - if (!step1) { - continue; - } } } } +// /** +// * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� +// */ +// public synchronized void shuttleInExecute() { +// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鍏ュ簱绔� +// for (DevpSlave.StaRack staRack : devp.getRackInStn()) { +// // 鑾峰彇鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(staRack.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// Short workNo = staProtocol.getWorkNo(); +// BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId()); +// if (basDevp == null) { +// continue;//绔欑偣淇℃伅涓嶅瓨鍦� +// } +// +// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佹湁鐗┿�佸洓鍚戠┛姊溅鍙彇淇″彿 +// if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isShuttleTakeEnable())) { +// continue; +// } +// +// WrkMast wrkMast = wrkMastMapper.selectRackInStep4(workNo, staProtocol.getSiteId()); +// if (wrkMast == null) { +// continue; +// } +// +// boolean step1 = this.shuttleInExecuteStep1(wrkMast, basDevp);//灏忚溅鎼叆搴撲腑 +// if (!step1) { +// continue; +// } +// +// } +// } +// +// } + /** * 鍏ュ簱-灏忚溅鎼叆搴撲腑 * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue */ - public boolean shuttleInExecuteStep1(WrkMast wrkMast, BasDevp basDevp) { + public boolean shuttleInExecuteStep1(WrkMast wrkMast, LiftStaProtocol liftStaProtocol) { if (wrkMast.getWrkSts() == 4) { if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basDevp.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� + shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� return false; } @@ -729,14 +795,14 @@ } //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(basDevp.getLocNo())) { + if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basDevp.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� + shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� return false; } //灏忚溅宸叉姷杈捐緭閫佺珯鐐逛綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), basDevp.getLocNo(), wrkMast.getLocNo()); + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo()); if (result == null) {//璺緞璁$畻澶辫触 return false; } @@ -783,6 +849,34 @@ public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { //21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� if (wrkMast.getWrkSts() == 21) { + EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); + wrapper.eq("type_no", wrkMast.getIoType());//璺緞绫诲瀷 + wrapper.eq("stn_no", wrkMast.getStaNo());//鍑哄簱绔欑偣缂栧彿 + StaDesc staDesc = staDescService.selectOne(wrapper); + if (staDesc == null) { + return false;//鍑哄簱璺緞涓嶅瓨鍦� + } + + //鑾峰彇鍑哄簱绔欑偣 + BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); + if (basDevp == null) { + return false;//鍑哄簱绔欑偣涓嶅瓨鍦� + } + + if (!basDevp.getOutEnable().equals("Y")) { + return false;//鍑哄簱绔欑偣涓嶅彲鍑� + } + + //鑾峰彇婧愮珯 + LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); + if (liftStaProtocol == null) { + return false;//鎵句笉鍒扮珯鐐� + } + + if (liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && !liftStaProtocol.getHasTray()) { + return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹病鏈夋墭鐩� + } + if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� return false; @@ -805,21 +899,15 @@ return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 } - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getLiftNo()); - if (targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 - } - //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� + shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� return false; } //灏忚溅宸叉姷杈捐揣鐗╀綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), targetBasDevp.getLocNo()); + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftStaProtocol.getLocNo());//灏嗚揣鐗╂惉杩愯嚦鎻愬崌鏈鸿緭閫佺珯鐐� if (result == null) {//鍑哄簱璺緞璁$畻澶辫触 return false; } @@ -880,14 +968,18 @@ 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); + shuttleProtocol.setTaskNo(0); if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { //閲婃斁灏忚溅浠ょ墝 shuttleProtocol.setToken(0); @@ -897,6 +989,17 @@ } if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMast.getWrkSts() == 111) { + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + if (!wrkMastService.deleteById(wrkMast)) { + log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + } + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); //婧愬簱浣嶆竻闆� @@ -908,6 +1011,24 @@ News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); } else { News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); + } + }else { + ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); + if (!assignCommand.getAuto()) { + //鎵嬪姩妯″紡 + //宸ヤ綔鍙锋竻闆� + shuttleProtocol.setTaskNo(0); + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + //婧愬簱浣嶆竻闆� + shuttleProtocol.setSourceLocNo(null); + //鐩爣搴撲綅娓呴浂 + shuttleProtocol.setLocNo(null); + //浠诲姟鎸囦护娓呴浂 + shuttleProtocol.setAssignCommand(null); + //娓呴浂浠ょ墝 + shuttleProtocol.setToken(0); + News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); } } @@ -931,6 +1052,11 @@ } if (!liftProtocol.isIdle()) { + continue; + } + + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚﹁鍗犵敤 + if (liftProtocol.getToken() != 0) { continue; } @@ -972,7 +1098,17 @@ //2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 if (wrkMast.getWrkSts() == 2) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); + //鑾峰彇婧愮珯 + BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); + if (sourceBasDevp == null) { + return false;//鎵句笉鍒扮珯鐐� + } + + if (!sourceBasDevp.getInEnable().equals("Y")) { + return false;//绔欑偣涓嶅彲鍏� + } + + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, sourceBasDevp.getLiftNo()); if (liftThread == null) { return false; } @@ -980,30 +1116,46 @@ if (liftProtocol == null) { return false; } - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { + if (!liftProtocol.isIdle()) { return false; } //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� if (liftProtocol.getToken() != 0) { return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� } + + //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� + if (liftProtocol.getHasCar()) { + return false;//鏈夊皬杞︼紝绂佹娲惧彂 + } + + //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� + if (liftProtocol.getHasTray()) { + return false;//鏈夋墭鐩橈紝绂佹娲惧彂 + } + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); if (liftWrkMast != null) { return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } - //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (sourceBasDevp == null || targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 + //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) + Integer startSta = Integer.parseInt(sourceBasDevp.getQrCodeValue()); + //鑾峰彇鎻愬崌鏈虹珯鐐� + LiftStaProtocol targetStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); + if (targetStaProtocol == null) { + return false;//绔欑偣涓嶅瓨鍦� } - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo()); + if (targetStaProtocol.getHasTray()) { + return false;//鎻愬崌鏈虹珯鐐规湁鎵樼洏锛岀姝㈡淳鍙� + } + Integer targetSta = targetStaProtocol.getStaNo(); + + //鑾峰彇鎻愬崌鏈哄懡浠� + NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -1039,7 +1191,17 @@ //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 if (wrkMast.getWrkSts() == 23) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); + //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) + BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); + if (basDevp == null) { + return false;//鍑哄簱绔欑偣涓嶅瓨鍦� + } + + if (!basDevp.getOutEnable().equals("Y")) { + return false;//鍑哄簱绔欑偣涓嶅彲鍑� + } + + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); if (liftThread == null) { return false; } @@ -1047,7 +1209,7 @@ if (liftProtocol == null) { return false; } - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { + if (!liftProtocol.isIdle()) { return false; } //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� @@ -1060,16 +1222,23 @@ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } - //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), liftProtocol.getLiftNo().intValue()); - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - if (sourceBasDevp == null || targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 + //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) + LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getSourceLocNo())); + if (liftStaProtocol == null) { + return false;//鎵句笉鍒扮珯鐐� } + Integer startSta = liftStaProtocol.getStaNo(); + + //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� + BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); + if (targetBasDevp == null) { + return false;//绔欑偣涓嶅瓨鍦� + } + //鑾峰彇鐗涚溂鎻愬崌鏈虹珯鐐圭紪鍙�(鐩爣缂栧彿) + Integer targetSta = Integer.parseInt(targetBasDevp.getQrCodeValue()); //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo()); + NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftThread.getSlave().getId(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -1135,8 +1304,8 @@ liftProtocol.setToken(0); } break; - case 104://104.鎻愬崌鏈烘惉杩愪腑 ==> 105.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(105L); + case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� + wrkMast.setWrkSts(107L); break; default: } @@ -1170,7 +1339,7 @@ //鏌ヨ搴撲綅绉昏浆宸ヤ綔妗� List<WrkMast> wrkMasts1 = wrkMastMapper.selectLocToLocWrkMast(); for (WrkMast wrkMast : wrkMasts1) { - if (wrkMast.getSourceLocNo().equals(wrkMast.getLocNo())) { + if (Utils.getLev(wrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) { boolean step1 = this.locToLocExecuteStep1(wrkMast);//鍚屾ゼ灞傚簱浣嶇Щ杞� if (!step1) { continue; @@ -1230,7 +1399,7 @@ } //灏忚溅宸叉姷杈炬簮搴撲綅锛岃繘琛屾惉杩愯揣鐗� - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), wrkMast.getLocNo()); + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getLocNo()); if (result == null) {//璺緞璁$畻澶辫触 return false; } @@ -1289,13 +1458,17 @@ } //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐� - BasDevp liftSta = shuttleDispatchUtils.getRecentLiftSta(shuttleThread.getSlave().getId()); + LiftStaProtocol liftSta = shuttleDispatchUtils.getRecentLiftSta(shuttleThread.getSlave().getId()); if (liftSta == null) { return false;//娌℃湁鍙敤涓旂┖闂茬殑杈撻�佺珯鐐� } + //婧愮珯 + Integer sourceStaNo = liftSta.getStaNo(); + //鎻愬崌鏈哄彿*100+鐩爣妤煎眰=鐩爣绔欑偣 + Integer staNo = liftSta.getLiftNo() * 100 + Utils.getLev(wrkMast.getLocNo());//鐩爣绔� //灏忚溅宸叉姷杈炬簮搴撲綅锛屽皢璐х墿鎼繍鍒拌緭閫佺珯鐐� - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), liftSta.getLocNo()); + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftSta.getLocNo()); if (result == null) {//璺緞璁$畻澶辫触 return false; } @@ -1310,7 +1483,8 @@ assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - wrkMast.setLiftNo(liftSta.getLiftNo());//璁剧疆鎻愬崌鏈哄彿 + wrkMast.setSourceStaNo(sourceStaNo);//婧愮珯 + wrkMast.setStaNo(staNo);//鐩爣绔� wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 @@ -1350,16 +1524,16 @@ return false; } - //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), liftProtocol.getLiftNo().intValue()); - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue()); - if (sourceBasDevp == null || targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 + //婧愮珯 + Integer sourceStaNo = wrkMast.getSourceStaNo(); + //鐩爣绔� + Integer staNo = wrkMast.getStaNo(); + if (sourceStaNo == null || staNo == null) { + return false;//婧愮珯鎴栫洰鏍囩珯涓虹┖ } //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo()); + NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceStaNo, staNo, wrkMast.getWrkNo()); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -1385,7 +1559,7 @@ } /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣鏋悗 + * 璺ㄦゼ灞傚簱浣嶇Щ杞�-璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue */ @@ -1423,7 +1597,7 @@ } //灏忚溅宸叉姷杈剧洰鏍囪緭閫佺珯鐐癸紝灏嗚揣鐗╂惉杩愬埌鐩爣搴撲綅 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), targetBasDevp.getLocNo(), wrkMast.getLocNo()); + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), targetBasDevp.getLocNo(), wrkMast.getLocNo()); if (result == null) {//璺緞璁$畻澶辫触 return false; } @@ -1438,6 +1612,7 @@ assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� + wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 @@ -1993,6 +2168,10 @@ } if (wrkCharge.getWrkSts() == 51) { + if (!shuttleProtocol.isIdleNoCharge()) { + continue; + } + if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) { //灏忚溅涓嶅湪鍏呯數妗╀綅缃� shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々 @@ -2063,38 +2242,46 @@ //鏌ヨ灏忚溅绉诲簱浠诲姟 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; + } + +// this.shuttleMoveExecuteStepClearWrkMast(wrkMast);//娓呯悊111.灏忚溅绉诲姩瀹屾垚 + } } /** - * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒版彁鍗囨満涓� + * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐� * 濡傞渶涓绘柟娉曟墽琛宑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()); @@ -2107,7 +2294,7 @@ } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { + if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { return false; } @@ -2117,72 +2304,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;//绛夊緟涓嬩竴娆¤疆璇� + //鑾峰彇婧愯緭閫佺珯 + LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + if (liftSta == 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(), liftSta.getLocNo()); List<NyShuttleHttpCommand> commands = result.getCommands(); - commands.add(moveCommand);//娣诲姞灏忚溅杩佸叆鎻愬崌鏈哄懡浠� ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� @@ -2192,31 +2333,59 @@ 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) { + //鑾峰彇婧愮珯 + LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + if (sourceLiftSta == null) { + return false;//鎵句笉鍒扮珯鐐� + } - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); + //鑾峰彇鐩爣杈撻�佺珯 + LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); + if (liftSta == null) { + return false;//鎵句笉鍒扮珯鐐� + } + + //鑾峰彇鎻愬崌鏈烘暟鎹� + BasLift basLift = basLiftService.selectById(liftSta.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, liftSta.getLiftNo()); if (liftThread == null) { return false; } @@ -2226,10 +2395,6 @@ } if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; - } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� - if (liftProtocol.getToken() != 0) { - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� } //鑾峰彇鍥涘悜绌挎杞︾嚎绋� @@ -2247,50 +2412,92 @@ return false; } - //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), liftProtocol.getLiftNo().intValue()); - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue()); - if (sourceBasDevp == null || targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 + //鍒ゆ柇鎻愬崌鏈烘ゼ灞� + if (liftProtocol.getLev().intValue() != shuttleProtocol.getPoint().getZ()) { + //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞� + //璋冨害鎻愬崌鏈� + + //鑾峰彇鎻愬崌鏈哄懡浠わ紝璋冨害鎻愬崌鏈哄埌婧愮珯浣嶇疆 + NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), 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;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰 } - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo()); + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 + if (liftProtocol.getToken() != wrkMast.getShuttleNo()) { + return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� + } - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); + //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� + if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { + return false; + } - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); + //绔欑偣鑺傜偣 + NavigateNode staNode = NavigatePositionConvert.locNoToNode(sourceLiftSta.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.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); + assignCommand.setNodes(nodes); - wrkMast.setWrkSts(104L);//鎻愬崌鏈烘惉杩愪腑 103.灏忚溅鍒版彁鍗囨満瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 + wrkMast.setWrkSts(104L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑 wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� + wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 + liftProtocol.setToken(wrkMast.getShuttleNo());//鎻愬崌鏈轰护鐗岀粦瀹氬綋鍓嶅皬杞� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); + 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 shuttleMoveExecuteStep3(WrkMast wrkMast) { - //--------------------------------------灏忚溅杩佸嚭鎻愬崌鏈轰腑-----------------------------------------// + private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) { + //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------// Date now = new Date(); - //灏忚溅杩佸嚭鎻愬崌鏈轰腑 105.鎻愬崌鏈烘惉杩愬畬鎴� ==> 106.灏忚溅杩佸嚭鎻愬崌鏈轰腑 + //鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑 if (wrkMast.getWrkSts() == 105) { LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); @@ -2304,10 +2511,14 @@ if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 + if (liftProtocol.getToken() != wrkMast.getShuttleNo()) { + return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂 + } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠浠诲姟 - if (liftProtocol.getToken() != wrkMast.getWrkNo()) { - return false; + //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� + if (!liftProtocol.getHasCar()) { + return false;//鎻愬崌鏈哄唴鏃犲皬杞� } //鑾峰彇鍥涘悜绌挎杞︾嚎绋� @@ -2325,19 +2536,100 @@ return false; } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� + //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { return false; } - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue()); - if (targetBasDevp == null) { + //鑾峰彇婧愮珯 + LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + //鑾峰彇鐩爣绔� + LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); + if (sourceLiftSta == null || liftSta == null) { return false;//缂哄皯绔欑偣淇℃伅 } + //鑾峰彇鎻愬崌鏈哄懡浠� + NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), 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.setWrkSts(106L);//鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑 + wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); + } + + } + return true; + } + + /** + * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈� + * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false + * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue + */ + private boolean shuttleMoveExecuteStepOutLift(WrkMast wrkMast) { + //--------------------------------------灏忚溅杩佸嚭鎻愬崌鏈�-----------------------------------------// + Date now = new Date(); + //灏忚溅绉诲姩鍒版彁鍗囨満涓� 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 + if (wrkMast.getWrkSts() == 107) { + + 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; + } + + //鑾峰彇鐩爣绔� + LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); + if (liftSta == null) { + return false;//鎵句笉鍒扮珯鐐� + } + //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(targetBasDevp.getLiftNo()); + BasLift basLift = basLiftService.selectById(liftProtocol.getLiftNo().intValue()); if (basLift == null) { return false;//娌℃湁鎻愬崌鏈烘暟鎹� } @@ -2349,7 +2641,7 @@ List<NyShuttleHttpCommand> commands = new ArrayList<>(); //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), liftNode, NavigatePositionConvert.locNoToNode(targetBasDevp.getLocNo()), false); + NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), liftNode, NavigatePositionConvert.locNoToNode(liftSta.getLocNo()), false); commands.add(moveCommand);//娣诲姞灏忚溅杩佸嚭鎻愬崌鏈哄懡浠� ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); @@ -2360,12 +2652,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,21 +2669,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) { - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } + //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + if (wrkMast.getWrkSts() == 109) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); @@ -2402,35 +2687,35 @@ } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { + if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { return false; } //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� - if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { + if (shuttleProtocol.getToken() != 0 && shuttleProtocol.getToken() != wrkMast.getWrkNo()) { return false; } - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), wrkMast.getLiftNo()); - if (targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 - } +// //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� +// BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), wrkMast.getLiftNo()); +// if (targetBasDevp == null) { +// return false;//缂哄皯绔欑偣淇℃伅 +// } +// +// //鑾峰彇鎻愬崌鏈烘暟鎹� +// BasLift basLift = basLiftService.selectById(targetBasDevp.getLiftNo()); +// if (basLift == null) { +// return false;//娌℃湁鎻愬崌鏈烘暟鎹� +// } +// if (basLift.getPoint() == null) { +// return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍� +// } +// NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); +// liftNode.setZ(basLift.getPoint$().getZ()); - //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(targetBasDevp.getLiftNo()); - if (basLift == null) { - return false;//娌℃湁鎻愬崌鏈烘暟鎹� - } - if (basLift.getPoint() == 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(), targetBasDevp.getLocNo(), wrkMast.getLocNo()); - if (result.getCommands() == null) { + //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠� + NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo()); + if (result == null) { return false;//璺緞璁$畻澶辫触 } List<NyShuttleHttpCommand> commands = result.getCommands(); @@ -2443,10 +2728,23 @@ 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);//閲婃斁鎻愬崌鏈轰护鐗� + + if (wrkMast.getLiftNo() != null) { + 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.getToken() == shuttleProtocol.getShuttleNo().intValue()) { + liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗� + } + } if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -2456,6 +2754,69 @@ } /** + * 灏忚溅杩佺Щ-娓呯悊111.灏忚溅绉诲姩瀹屾垚 + */ + private boolean shuttleMoveExecuteStepClearWrkMast(WrkMast wrkMast) { + if (wrkMast.getWrkSts() == 111) { + //鑾峰彇鍥涘悜绌挎杞︾嚎绋� + 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(wrkMast.getWrkNo())) { + return false; + } + + Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo()); + if (o != null) { + ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); + ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); + int size = assignCommand.getCommands().size(); + NyShuttleHttpCommand command = assignCommand.getCommands().get(size - 1);//鑾峰彇鏈�鍚庝竴娈靛懡浠� + if (!command.getComplete()) { + return false;//鏈�鍚庝竴娈靛懡浠よ繕鏈畬鎴愶紝涓嶅仛鎿嶄綔 + } + NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); + navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//瑙i攣璺緞 + + //鍒犻櫎redis + redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); + } + + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + if (!wrkMastService.deleteById(wrkMast)) { + log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + //婧愬簱浣嶆竻闆� + shuttleProtocol.setSourceLocNo(null); + //鐩爣搴撲綅娓呴浂 + shuttleProtocol.setLocNo(null); + //浠诲姟鎸囦护娓呴浂 + shuttleProtocol.setAssignCommand(null); + //宸ヤ綔鍙锋竻闆� + shuttleProtocol.setTaskNo(0); + //娓呴櫎浠ょ墝 + shuttleProtocol.setToken(0); + News.info("鍥涘悜绌挎杞﹀凡纭涓旂Щ鍔ㄤ换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); + } + + return true; + } + + /** * 鍑哄叆搴撴ā寮忓垏鎹� */ public synchronized void outAndIn() { -- Gitblit v1.9.1