From 7cd8c743cb1f377a3102d9a154669fb2bc10535c Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期一, 26 六月 2023 18:10:58 +0800 Subject: [PATCH] lift --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 612 +++++++++++++++++++++++++++++++------------------------ 1 files changed, 347 insertions(+), 265 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 a3270f1..3e5142c 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -684,13 +684,17 @@ //鐘舵��8锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣� //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� - if (!liftProtocol.isIdle()) { + if (!liftProtocol.isIdleNoTask()) { try { Thread.sleep(1000);//浼戠湢1s } catch (InterruptedException e) { throw new RuntimeException(e); } continue;//鎻愬崌鏈哄繖 + } + //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷� + if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) { + continue; } //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙� @@ -986,13 +990,17 @@ }else if(wrkMast.getWrkSts() == 25) {//鐘舵��25锛岄渶瑕佸悜灏忚溅涓嬪彂鍛戒护浠庢彁鍗囨満绉诲姩鍑哄幓锛岄渶瑕佸垽鏂彁鍗囨満鐘舵槸鍚︾┖闂层�佹彁鍗囨満鏄惁鍒拌揪鐩爣妤煎眰銆佺洰鏍囨ゼ灞傜珯鐐规槸鍚﹀瓨鍦ㄣ�佺洰鏍囨ゼ灞傜珯鐐规槸鍚︾粰鍑烘彁鍗囨満鍒颁綅淇″彿 //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� - if (!liftProtocol.isIdle()) { + if (!liftProtocol.isIdleNoTask()) { try { Thread.sleep(1000);//浼戠湢1s } catch (InterruptedException e) { throw new RuntimeException(e); } continue;//鎻愬崌鏈哄繖 + } + //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷� + if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) { + continue; } //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙� @@ -1066,6 +1074,21 @@ //鏈壘鍒拌矾寰勶紝绛夊緟涓嬩竴娆� continue; } + + //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 + BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); + Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮� + + String disLocNo = "2000202" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆 + LocMast locMast1 = locMastService.queryByLoc(disLocNo); + if (locMast1 == null) { + continue;//鎵句笉鍒板簱浣� + } + short disCode = Short.parseShort(locMast1.getQrCodeValue()); + //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀� + ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, disCode, 1400, ShuttleRunDirection.BOTTOM.id, endStartCode, 1400, 500); + commands.add(moveCommand); + //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkMast.getSourceLocNo()); //鍒嗛厤浠诲姟鍙� @@ -1143,6 +1166,21 @@ ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, commands.get(0).getRunDirection(), startCode, 1400, 500); commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶� + //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 + BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); + Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮� + + String disLocNo = "2000202" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆 + LocMast locMast1 = locMastService.queryByLoc(disLocNo); + if (locMast1 == null) { + continue;//鎵句笉鍒板簱浣� + } + short disCode = Short.parseShort(locMast1.getQrCodeValue()); + //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀� + ShuttleCommand moveCommand2 = shuttleThread.getMoveCommand(endStartCode, disCode, 1400, ShuttleRunDirection.BOTTOM.id, endStartCode, 1400, 500); + commands.add(moveCommand2); + + //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkMast.getSourceLocNo()); //鍒嗛厤浠诲姟鍙� @@ -1182,7 +1220,7 @@ //鑾峰彇鍥涘悜绌挎杞︾嚎绋� ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { + if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { continue; } if (!shuttleProtocol.isIdle()) { @@ -1190,6 +1228,9 @@ } String shuttleLocNo = shuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿 + if (shuttleLocNo == null) { + continue; + } int shuttleLocNoLey = Utils.getLev(shuttleLocNo);//搴撲綅鍙峰搴斿眰楂� if (lev == shuttleLocNoLey) { //宸ヤ綔妗fゼ灞傜浉鍚岀殑绌挎杞� @@ -1346,10 +1387,8 @@ wrkCharge.setWrkSts(53L);//杩佺Щ瀹屾垚 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); break; - case 56: - if (shuttleProtocol.getBatteryPower() == 1000) { - wrkCharge.setWrkSts(60L);//鍏呯數瀹屾垚 - } + case 56://灏忚溅鍘诲厖鐢垫々涓� + wrkCharge.setWrkSts(57L);//鍒拌揪鍏呯數妗� break; default: } @@ -1359,16 +1398,18 @@ //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); } - //浠诲姟鍙锋竻闆� - shuttleProtocol.setTaskNo((short) 0); - //婧愬簱浣嶆竻闆� - shuttleProtocol.setSourceLocNo(null); - //鐩爣搴撲綅娓呴浂 - shuttleProtocol.setLocNo(null); - //鏍囪澶嶄綅 - shuttleProtocol.setPakMk(true); - //浠诲姟鎸囦护娓呴浂 - shuttleProtocol.setAssignCommand(null); + if (wrkCharge.getWrkSts() != 57) { + //浠诲姟鍙锋竻闆� + shuttleProtocol.setTaskNo((short) 0); + //婧愬簱浣嶆竻闆� + shuttleProtocol.setSourceLocNo(null); + //鐩爣搴撲綅娓呴浂 + shuttleProtocol.setLocNo(null); + //鏍囪澶嶄綅 + shuttleProtocol.setPakMk(true); + //浠诲姟鎸囦护娓呴浂 + shuttleProtocol.setAssignCommand(null); + } News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); } else { News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); @@ -1393,8 +1434,13 @@ continue; } - //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬� - if (!liftProtocol.isIdle()) { + +// if (!liftProtocol.isIdle()) { +// continue; +// } + + //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬侊紝娌℃湁鍒ゆ柇浠诲姟鍙凤紝鍙兘鎻愬崌鏈哄浜庣┖闂诧紝浣嗘槸杩樻湁浠诲姟鏈畬鎴� + if (!liftProtocol.isIdleNoTask()) { continue; } @@ -1416,6 +1462,15 @@ } if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋 + if (liftProtocol.getTaskNo().intValue() != 0) { + //瀛樺湪鏈畬鎴愪换鍔″彿 + continue; + } + if (liftProtocol.getPlatShuttleCheck()) { + //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔� + continue; + } + //宸ヤ綔妗g洰鏍囧簱浣嶅彿 String wrkMastLocNo = wrkMast.getLocNo(); //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞� @@ -1460,6 +1515,10 @@ wrkMast.setWrkSts(3L);//3.鎻愬崌鏈烘惉杩愪腑 } else if (wrkMast.getWrkSts() == 6) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 + if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) { + //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷� + continue; + } liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿 //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬� @@ -1476,6 +1535,10 @@ } if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛� + } + if (!liftProtocol.getPlatShuttleCheck()) { + //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛� + continue; } //宸ヤ綔妗g洰鏍囧簱浣嶅彿 @@ -1496,6 +1559,10 @@ wrkMast.setWrkSts(7L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 } else if(wrkMast.getWrkSts() == 23) {//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑 + if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) { + //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷� + continue; + } liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿 //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬� @@ -1513,6 +1580,10 @@ } if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛� + } + if (!liftProtocol.getPlatShuttleCheck()) { + //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛� + continue; } //宸ヤ綔妗g洰鏍囧簱浣嶅彿 @@ -1533,6 +1604,15 @@ wrkMast.setWrkSts(24L);//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑 } else if (wrkMast.getWrkSts() == 27) {//27.灏忚溅鍑哄簱鎼繍瀹屾垚 + if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) { + //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷� + continue; + } + if (liftProtocol.getPlatShuttleCheck()) { + //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔� + continue; + } + //宸ヤ綔妗f簮搴撲綅鍙� String wrkMastLocNo = wrkMast.getSourceLocNo(); //宸ヤ綔妗f簮搴撲綅妤煎眰 @@ -1614,6 +1694,9 @@ && !liftProtocol.getRunning() ) { + //鏍囪澶嶄綅 + liftProtocol.setPakMk(true); + DevpThread devpThread = null; Integer devpId = null; for (DevpSlave devp : slaveProperties.getDevp()){ @@ -1646,6 +1729,8 @@ case 28://28.鎻愬崌鏈烘惉杩愪腑 ==> 29.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(29L); wrkMast.setWrkSts(34L);//34.鍑哄簱瀹屾垚锛屾殏鏃跺厛鐩存帴瀹屾垚鍑哄簱宸ヤ綔妗o紝鍚庣画闇�瑕佹牴鎹緭閫佺嚎缁欏嚭鐨勭姸鎬佹潵纭畾34.鍑哄簱瀹屾垚鐘舵�� + //浠诲姟鍙锋竻闆� + liftProtocol.setTaskNo((short) 0); break; default: } @@ -1653,13 +1738,9 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); - //浠诲姟鍙锋竻闆� - liftProtocol.setTaskNo((short) 0); - //鏍囪澶嶄綅 - liftProtocol.setPakMk(true); //浠诲姟鎸囦护娓呴浂 liftProtocol.setAssignCommand(null); - News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); + News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); } else { News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); } @@ -2376,109 +2457,244 @@ * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 */ public synchronized void loopShuttleCharge() { - for (DevpSlave devpSlave : slaveProperties.getDevp()) { - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� - if (!shuttleProtocol.isRequireCharge()) { - continue; - } - - WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); - if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 - continue; - } - - ShuttleChargeType shuttleCharge = null; - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { - shuttleCharge = chargeType; - break; - } - } - - if (shuttleCharge == null) { - continue; - } - - String chargeLocNo = shuttleCharge.locNo; - wrkCharge = new WrkCharge(); - wrkCharge.setShuttleNo(shuttle.getId()); - wrkCharge.setCharge(shuttleCharge.id); - wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); - wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數 - wrkCharge.setIoPri((double) 10); - wrkCharge.setLocNo(chargeLocNo); - wrkCharge.setMemo("charge"); - wrkCharge.setAppeTime(new Date()); - if (!wrkChargeService.insert(wrkCharge)) { - News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); - continue; - } - - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓� - News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); + for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + //鑾峰彇鍥涘悜绌挎杞︾嚎绋� + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (shuttleProtocol == null) { + continue; } + + //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� + if (!shuttleProtocol.isRequireCharge()) { + continue; + } + + WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue(), WrkChargeType.charge); + if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 + continue; + } + + ShuttleChargeType shuttleCharge = null; + for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { + if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { + shuttleCharge = chargeType; + break; + } + } + + if (shuttleCharge == null) { + continue; + } + + String chargeLocNo = shuttleCharge.locNo; + wrkCharge = new WrkCharge(); + wrkCharge.setShuttleNo(shuttle.getId()); + wrkCharge.setCharge(shuttleCharge.id); + wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); + wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數 + wrkCharge.setIoPri((double) 10); + wrkCharge.setLocNo(chargeLocNo); + wrkCharge.setMemo("charge"); + wrkCharge.setAppeTime(new Date()); + if (!wrkChargeService.insert(wrkCharge)) { + News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); + continue; + } + + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓� + News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); } - - } /** * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔� */ public synchronized void executeShuttleCharge() { - WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); - if (wrkCharge == null) { - return; - } + for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); + if (wrkCharge == null) { + continue; + } - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); - if (shuttleThread == null) { - return; - } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return; - } + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); + if (shuttleThread == null) { + continue; + } + ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (shuttleProtocol == null) { + continue; + } - //褰撳墠绌挎杞﹀簱浣嶅彿 - String currentLocNo = shuttleProtocol.getCurrentLocNo(); - //灏忚溅褰撳墠灞傞珮 - Integer currentLev = currentLocNo == null ? 0 : Utils.getLev(currentLocNo); - //鑾峰彇鎻愬崌鏈� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); - if (liftThread == null) { - return; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return; - } - //鍏呯數搴撲綅鍙� - String chargeLocNo = wrkCharge.getLocNo(); - //鍏呯數搴撲綅灞傞珮 - Integer chargeLocNoLev = Utils.getLev(chargeLocNo); + //鑾峰彇鎻愬崌鏈� + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); + if (liftThread == null) { + continue; + } + LiftProtocol liftProtocol = liftThread.getLiftProtocol(); + if (liftProtocol == null) { + continue; + } + //鍏呯數搴撲綅鍙� + String chargeLocNo = wrkCharge.getLocNo(); + //鍏呯數搴撲綅灞傞珮 + Integer chargeLocNoLev = Utils.getLev(chargeLocNo); - if (wrkCharge.getWrkSts() == 51) { - if (currentLev == chargeLocNoLev) { - //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈� + if (wrkCharge.getWrkSts() == 51) { + //褰撳墠绌挎杞﹀簱浣嶅彿 + String currentLocNo = shuttleProtocol.getCurrentLocNo(); + if (currentLocNo == null) { + continue; + } + //灏忚溅褰撳墠灞傞珮 + Integer currentLev = Utils.getLev(currentLocNo); + + if (currentLev == chargeLocNoLev) { + //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈� + //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + + //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); + if (commands == null) { + continue;//鏈壘鍒拌矾寰� + } + //杩涜鍏呯數涓� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); + + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + assignCommand.setTaskMode((short) 9);//鍏呯數 + assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); + assignCommand.setCharge(true);//鍏呯數浠诲姟 + + //鍒涘缓鍏呯數鎸囦护 + ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 1);//寮�濮嬪厖鐢� + commands.add(command); + + //鎸囦护闆嗗垎閰� + assignCommand.setCommands(commands); + + wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬� + if (wrkChargeMapper.updateById(wrkCharge) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } + }else { + //涓嶅悓灞傦紝璋冨害灏忚溅鍒板厖鐢垫々鐩爣灞� + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + + //鑾峰彇灏忚溅褰撳墠妤煎眰鐨勭珯鐐瑰彿 + String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev); + + //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞 + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); + if (commands == null) { + continue;//鏈壘鍒拌矾寰� + } + + //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 + BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); + if (basDevp == null) { + continue;//鎵句笉鍒扮珯鐐逛俊鎭� + } + Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮� + + //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护 + ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500); + commands.add(moveCommand); + + //鍒嗛厤鐩爣搴撲綅 + shuttleProtocol.setLocNo(chargeLocNo); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + assignCommand.setTaskMode((short) 9);//鍏呯數 + assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); + assignCommand.setCharge(true);//鍏呯數浠诲姟 + //鐩爣搴撲綅 + assignCommand.setLocNo(chargeLocNo); + //婧愬簱浣� + assignCommand.setSourceLocNo(currentLocNo); + assignCommand.setCommands(commands); + wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵�� + if (wrkChargeMapper.updateById(wrkCharge) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } + } + + }else if(wrkCharge.getWrkSts() == 53){ + //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄唴 + + //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬� + if (!liftProtocol.isIdle()) { + continue; + } + + //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐� + if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { + //灏忚溅涓嶅湪鎻愬崌鏈哄唴 + continue; + } + + //缁欐彁鍗囨満鍒嗛厤浠诲姟 + liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� + liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿 + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� + + //鍛戒护list + ArrayList<LiftCommand> commands = new ArrayList<>(); + + //鎻愬崌鏈哄墠寰�鐩爣妤煎眰 + //鑾峰彇鍏呯數搴撲綅鐩爣妤煎眰鍛戒护 + LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), chargeLocNoLev >= 2 ? chargeLocNoLev + 1 : chargeLocNoLev); + commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list + + wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑 + //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣� + LiftAssignCommand assignCommand = new LiftAssignCommand(); + assignCommand.setCommands(commands); + assignCommand.setLiftNo(liftProtocol.getLiftNo()); + assignCommand.setTaskNo(liftProtocol.getTaskNo()); + if (wrkChargeMapper.updateById(wrkCharge) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); + } + + }else if(wrkCharge.getWrkSts() == 55){//55.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴� //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); - if (commands == null) { - return;//鏈壘鍒拌矾寰� + Short liftLev = liftProtocol.getLev(); + if (liftLev == null) { + continue; } + //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞� + if (liftLev.intValue() != chargeLocNoLev) { + continue;//娌℃湁鍒拌揪鐩爣妤煎眰 + } + + //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 + Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙� + BasDevp basDevp = basDevpService.selectById(staNo); + if (basDevp == null) { + continue;//绔欑偣涓嶅瓨鍦� + } + + //鑾峰彇鎻愬崌鏈哄彛鍒板厖鐢靛簱浣嶈矾寰勬寚浠� + List<ShuttleCommand> commands = this.shuttleAssignCommand(basDevp.getLocNo(), chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); + if (commands == null) { + continue;//鏈壘鍒拌矾寰� + } + + short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜 + Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮� + Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜 + //鑾峰彇鍛戒护 + ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500); + commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶� + //杩涜鍏呯數涓� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); @@ -2499,167 +2715,33 @@ //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); } - }else { - //涓嶅悓灞傦紝璋冨害灏忚溅鍒板厖鐢垫々鐩爣灞� + }else if (wrkCharge.getWrkSts() == 57) {//57.灏忚溅鍒拌揪鍏呯數妗� + //鍏呯數涓� + //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂 + if (shuttleProtocol.getBatteryPower() >= 1000 && shuttleProtocol.getCurrentVoltage() >= 54000) { + //鍏呮弧锛屾柇寮�鍏呯數 + List<ShuttleCommand> commands = new ArrayList<>(); + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + assignCommand.setTaskMode((short) 0); + assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); + assignCommand.setCharge(true); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //鍒涘缓鍏呯數鎸囦护 + ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 2);//鏂紑鍏呯數 + commands.add(command); - //鑾峰彇灏忚溅褰撳墠妤煎眰鐨勭珯鐐瑰彿 - String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev); + //鎸囦护闆嗗垎閰� + assignCommand.setCommands(commands); - //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞 - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); - if (commands == null) { - return;//鏈壘鍒拌矾寰� - } - - //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 - BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); - if (basDevp == null) { - return;//鎵句笉鍒扮珯鐐逛俊鎭� - } - Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮� - - //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护 - ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500); - commands.add(moveCommand); - - //鍒嗛厤鐩爣搴撲綅 - shuttleProtocol.setLocNo(chargeLocNo); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - assignCommand.setTaskMode((short) 9);//鍏呯數 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); - assignCommand.setCharge(true);//鍏呯數浠诲姟 - //鐩爣搴撲綅 - assignCommand.setLocNo(chargeLocNo); - //婧愬簱浣� - assignCommand.setSourceLocNo(currentLocNo); - assignCommand.setCommands(commands); - wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵�� - if (wrkChargeMapper.updateById(wrkCharge) > 0) { + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); } - } - }else if(wrkCharge.getWrkSts() == 53){ - //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄唴 - - //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬� - if (!liftProtocol.isIdle()) { - return; - } - - //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐� - if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { - //灏忚溅涓嶅湪鎻愬崌鏈哄唴 - return; - } - - //缁欐彁鍗囨満鍒嗛厤浠诲姟 - liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� - liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿 - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� - - //鍛戒护list - ArrayList<LiftCommand> commands = new ArrayList<>(); - - //鎻愬崌鏈哄墠寰�鐩爣妤煎眰 - //鑾峰彇鍏呯數搴撲綅鐩爣妤煎眰鍛戒护 - LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), chargeLocNoLev >= 2 ? chargeLocNoLev + 1 : chargeLocNoLev); - commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list - - wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑 - //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣� - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(liftProtocol.getTaskNo()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - - }else if(wrkCharge.getWrkSts() == 55){//55.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴� - //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - - Short liftLev = liftProtocol.getLev(); - if (liftLev == null) { - return; - } - //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞� - if (liftLev.intValue() != chargeLocNoLev) { - return;//娌℃湁鍒拌揪鐩爣妤煎眰 - } - - //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 - Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙� - BasDevp basDevp = basDevpService.selectById(staNo); - if (basDevp == null) { - return;//绔欑偣涓嶅瓨鍦� - } - - //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); - if (commands == null) { - return;//鏈壘鍒拌矾寰� - } - - short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜 - Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮� - Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜 - //鑾峰彇鍛戒护 - ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500); - commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶� - - //杩涜鍏呯數涓� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); - - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - assignCommand.setTaskMode((short) 9);//鍏呯數 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); - assignCommand.setCharge(true);//鍏呯數浠诲姟 - - //鍒涘缓鍏呯數鎸囦护 - ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 1);//寮�濮嬪厖鐢� - commands.add(command); - - //鎸囦护闆嗗垎閰� - assignCommand.setCommands(commands); - - wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬� - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - }else if (wrkCharge.getWrkSts() == 56) { - //鍏呯數涓� - //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂 - if (shuttleProtocol.getBatteryPower() >= 1000 || shuttleProtocol.getCurrentVoltage() >= 54000) { - //鍏呮弧锛屾柇寮�鍏呯數 - List<ShuttleCommand> commands = new ArrayList<>(); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - assignCommand.setTaskMode((short) 0); - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); - assignCommand.setCharge(true); - - //鍒涘缓鍏呯數鎸囦护 - ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 2);//鏂紑鍏呯數 - commands.add(command); - - //鎸囦护闆嗗垎閰� - assignCommand.setCommands(commands); - - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); + if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) { + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); + } } } -- Gitblit v1.9.1