From 9f6bae6e952b0b6836b539703f3418b0acc725d3 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 19 九月 2023 08:25:00 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 586 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 460 insertions(+), 126 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 731db7f..01078e7 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.*; @@ -68,6 +69,8 @@ private BasShuttleService basShuttleService; @Autowired private BasShuttleErrLogService basShuttleErrLogService; + @Autowired + private BasLiftErrLogService basLiftErrLogService; @Autowired private BasShuttleErrService basShuttleErrService; @Autowired @@ -721,6 +724,10 @@ if (!shuttleProtocol.isIdle()) { return false; } + //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 + if (shuttleProtocol.getToken() != 0) { + return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 + } //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� if (!shuttleProtocol.getCurrentLocNo().equals(basDevp.getLocNo())) { @@ -746,6 +753,7 @@ wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� wrkMast.setModiTime(new Date()); + shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -776,6 +784,45 @@ 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;//鍑哄簱绔欑偣涓嶅彲鍑� + } + + //鍒ゆ柇鍚勬ゼ灞傚唴閮ㄨ緭閫佺珯鐐规槸鍚︾┖闂叉棤鐗� + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); + if (liftThread == null) { + return false; + } + //鑾峰彇鎻愬崌鏈虹珯鐐筶ist + List<LiftStaProtocol> liftStaProtocols = liftThread.getLiftStaProtocols(); + if (liftStaProtocols.isEmpty()) { + return false; + } + + for (LiftStaProtocol liftStaProtocol : liftStaProtocols) { + //鍒ゆ柇褰撳墠鍑哄簱浠诲姟瀵瑰簲妤煎眰鐨勬彁鍗囨満绔欑偣鐘舵�� + if (liftStaProtocol.getLev() == Utils.getLev(wrkMast.getSourceLocNo())) { + if (liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && !liftStaProtocol.getHasTray()) { + return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹病鏈夋墭鐩� + } + } + } + + if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� return false; @@ -793,11 +840,9 @@ if (!shuttleProtocol.isIdle()) { return false; } - - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getLiftNo()); - if (targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 + //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 + if (shuttleProtocol.getToken() != 0) { + return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 } //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 @@ -808,7 +853,7 @@ } //灏忚溅宸叉姷杈捐揣鐗╀綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), targetBasDevp.getLocNo()); + NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), null); if (result == null) {//鍑哄簱璺緞璁$畻澶辫触 return false; } @@ -824,6 +869,7 @@ wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� wrkMast.setModiTime(new Date()); + shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -856,20 +902,33 @@ switch (wrkMast.getWrkSts().intValue()) { case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 wrkMast.setWrkSts(9L); - //浠诲姟鍙锋竻闆� - shuttleProtocol.setTaskNo(0); + if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁灏忚溅浠ょ墝 + shuttleProtocol.setToken(0); + } break; case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚 wrkMast.setWrkSts(23L); + if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁灏忚溅浠ょ墝 + 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); + } break; default: } @@ -909,6 +968,11 @@ } if (!liftProtocol.isIdle()) { + continue; + } + + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚﹁鍗犵敤 + if (liftProtocol.getToken() != 0) { continue; } @@ -961,6 +1025,10 @@ if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� + if (liftProtocol.getToken() != 0) { + return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� + } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); if (liftWrkMast != null) { @@ -969,15 +1037,25 @@ //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (sourceBasDevp == null || targetBasDevp == null) { - return false;//缂哄皯绔欑偣淇℃伅 + if (sourceBasDevp == null) { + return false;//绔欑偣涓嶅瓨鍦� + } + //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) + Integer startSta = Integer.parseInt(sourceBasDevp.getQrCodeValue()); + Integer targetSta = null; + //鑾峰彇鐗涚溂鎻愬崌鏈虹珯鐐圭紪鍙�(鐩爣缂栧彿) + for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { + if (liftStaProtocol.getLev() == Utils.getLev(wrkMast.getLocNo())) { + targetSta = liftStaProtocol.getStaNo(); + } + } + + if (targetSta == 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, startSta, targetSta, wrkMast.getWrkNo()); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -991,6 +1069,7 @@ wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� wrkMast.setModiTime(now); + liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); @@ -1023,22 +1102,38 @@ if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� + if (liftProtocol.getToken() != 0) { + return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� + } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); if (liftWrkMast != null) { 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;//缂哄皯绔欑偣淇℃伅 + //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) + Integer startSta = null; + for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { + if (liftStaProtocol.getLev() == Utils.getLev(wrkMast.getLocNo())) { + startSta = liftStaProtocol.getStaNo(); + } } + if (startSta == null) { + return false;//绔欑偣缂栧彿涓嶅瓨鍦� + } + + //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� + 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(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -1053,6 +1148,7 @@ wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� wrkMast.setModiTime(now); + liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); @@ -1088,15 +1184,23 @@ case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(4L); wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + if (liftProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁鎻愬崌鏈轰护鐗� + liftProtocol.setToken(0); + } break; case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(25L); if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆 wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴� } + if (liftProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁鎻愬崌鏈轰护鐗� + liftProtocol.setToken(0); + } break; - case 104://104.鎻愬崌鏈烘惉杩愪腑 ==> 105.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(105L); + case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� + wrkMast.setWrkSts(107L); break; default: } @@ -1415,6 +1519,7 @@ public void recErr() { try { this.recShuttleErr(); + this.recLiftErr(); } catch (Exception e) { News.error("recErr fail", e); } @@ -1446,7 +1551,7 @@ if (wrkMast == null) { continue; } - BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode().get(0)); + BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode()); String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( null, // 缂栧彿 @@ -1462,14 +1567,15 @@ wrkMast.getSourceStaNo(), // 婧愮珯 wrkMast.getSourceLocNo(), // 婧愬簱浣� wrkMast.getBarcode(), // 鏉$爜 - shuttleProtocol.getErrCode().get(0), // 寮傚父鐮� + shuttleProtocol.getErrCode(), // 寮傚父鐮� errName, // 寮傚父 1, // 寮傚父鎯呭喌 now, // 娣诲姞鏃堕棿 null, // 娣诲姞浜哄憳 now, // 淇敼鏃堕棿 null, // 淇敼浜哄憳 - "浠诲姟涓紓甯�" // 澶囨敞 + "浠诲姟涓紓甯�", // 澶囨敞 + JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹� ); if (!basShuttleErrLogService.insert(basShuttleErrLog)) { News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); @@ -1534,6 +1640,91 @@ // } // } // } + } + } + } + + /** + * 鎻愬崌鏈哄紓甯镐俊鎭褰� + */ + private void recLiftErr() { + Date now = new Date(); + for (LiftSlave liftSlave : slaveProperties.getLift()) { + // 鑾峰彇鎻愬崌鏈轰俊鎭� + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); + if (liftThread == null) { + continue; + } + LiftProtocol liftProtocol = liftThread.getLiftProtocol(); + if (liftProtocol == null) { + continue; + } + + if (liftProtocol.getTaskNo() != 0) { + //鏈変换鍔� + BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue()); + // 鏈夊紓甯� + if (latest == null) { + if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) { + WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo()); + if (wrkMast == null) { + continue; + } + + String errName = ""; + if (liftProtocol.getFrontOverrun()) { + errName = "鍓嶈秴闄�"; + } else if (liftProtocol.getBackOverrun()) { + errName = "鍚庤秴闄�"; + } else if (liftProtocol.getLeftOverrun()) { + errName = "宸﹁秴闄�"; + } else if (liftProtocol.getRightOverrun()) { + errName = "鍙宠秴闄�"; + } else if (liftProtocol.getOverHeight()) { + errName = "瓒呴珮"; + } else if (liftProtocol.getOverWeight()) { + errName = "瓒呴噸"; + } + + BasLiftErrLog basLiftErrLog = new BasLiftErrLog( + null, // 缂栧彿 + wrkMast.getWrkNo(), // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� + wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� + liftSlave.getId(), // 鎻愬崌鏈� + null, // plc + wrkMast.getLocNo(), // 鐩爣搴撲綅 + wrkMast.getStaNo(), // 鐩爣绔� + wrkMast.getSourceStaNo(), // 婧愮珯 + wrkMast.getSourceLocNo(), // 婧愬簱浣� + wrkMast.getBarcode(), // 鏉$爜 + null, // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "浠诲姟涓紓甯�", // 澶囨敞 + JSON.toJSONString(liftProtocol) // 绯荤粺鐘舵�佹暟鎹� + ); + if (!basLiftErrLogService.insert(basLiftErrLog)) { + News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName); + } + } + } else { + // 寮傚父淇 + if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basLiftErrLogService.updateById(latest)) { + News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId()); + } + } + } } } } @@ -1866,6 +2057,10 @@ } if (wrkCharge.getWrkSts() == 51) { + if (!shuttleProtocol.isIdleNoCharge()) { + continue; + } + if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) { //灏忚溅涓嶅湪鍏呯數妗╀綅缃� shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々 @@ -1936,38 +2131,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()); @@ -1984,72 +2185,32 @@ return false; } + //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 + if (shuttleProtocol.getToken() != 0) { + return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 + } + if (Utils.getLev(wrkMast.getLocNo()) == shuttleProtocol.getPoint().getZ()) { - //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛岄渶瑕侀�氳繃鎻愬崌鏈鸿皟搴� - return true;//鐩存帴杩涘叆108.灏忚溅绉诲姩涓� + //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴� + wrkMast.setWrkSts(109L);// 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + wrkMast.setModiTime(now); + shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� + if (wrkMastMapper.updateById(wrkMast) > 0) { + //涓嬪彂浠诲姟 + return true;//鐩存帴杩涘叆109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + } + return false; } - //璁$畻璺濈灏忚溅鏈�杩戠殑鎻愬崌鏈虹珯鐐� - //鏌ヨ灏忚溅鎵�鍦ㄦゼ灞傛彁鍗囨満杈撻�佺珯鐐� - 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; - } - 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;//鏇存柊杈撻�佺珯鐐� - } + //鑾峰彇鐩爣杈撻�佺珯 + BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); + if (basDevp == null) { + return false;//鎵句笉鍒拌緭閫佺珯鐐� } - - if (recentDevp == 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()); // 鍥涘悜绌挎杞︾紪鍙� @@ -2059,30 +2220,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; } @@ -2106,6 +2290,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; } @@ -2130,7 +2438,7 @@ 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); if (wrkMastMapper.updateById(wrkMast) > 0) { @@ -2143,16 +2451,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) { @@ -2164,6 +2471,11 @@ } if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; + } + + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 + if (liftProtocol.getToken() != wrkMast.getShuttleNo()) { + return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂 } //鑾峰彇鍥涘悜绌挎杞︾嚎绋� @@ -2181,6 +2493,11 @@ return false; } + //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� + if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { + return false; + } + //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue()); if (targetBasDevp == null) { @@ -2188,15 +2505,15 @@ } //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(targetBasDevp.getLiftNo()); + BasLift basLift = basLiftService.selectById(liftProtocol.getLiftNo().intValue()); 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()); + NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); + liftNode.setZ(basLift.getPoint$().getZ()); List<NyShuttleHttpCommand> commands = new ArrayList<>(); //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护 @@ -2211,12 +2528,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; } @@ -2226,12 +2545,21 @@ * 濡傞渶涓绘柟娉曟墽琛宑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) { + return false; + } + LiftProtocol liftProtocol = liftThread.getLiftProtocol(); + if (liftProtocol == null) { + return false; + } //鑾峰彇鍥涘悜绌挎杞︾嚎绋� NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); @@ -2245,6 +2573,11 @@ //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleProtocol.isIdleNoCharge()) { + return false; + } + + //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� + if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { return false; } @@ -2262,12 +2595,12 @@ if (basLift.getPoint() == null) { return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍� } - NavigateNode liftNode = new NavigateNode(basLift.getPoint().getX(), basLift.getPoint().getY()); - liftNode.setZ(basLift.getPoint().getZ()); + 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) { + if (result == null) { return false;//璺緞璁$畻澶辫触 } List<NyShuttleHttpCommand> commands = result.getCommands(); @@ -2280,9 +2613,10 @@ 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 (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); -- Gitblit v1.9.1