From c30548d8d42081f2d487d64e6df3ef0bcaa1e828 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 05 十二月 2022 10:15:59 +0800 Subject: [PATCH] Merge branch 'ynwcs' of http://47.97.1.152:5880/r/zy-wcs into ynwcs --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 169 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 126 insertions(+), 43 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 3134932..2d9671b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -173,7 +173,7 @@ param.setBarcode(barcode); param.setIoType(1); param.setSourceStaNo(inSta.getStaNo()); - param.setLocType1(locTypeDto.getLocType1()); +// param.setLocType1(locTypeDto.getLocType1()); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") @@ -643,7 +643,7 @@ } } // 搴撲綅绉昏浆 - this.locToLoc(crn, crnProtocol); +// this.locToLoc(crn, crnProtocol); } } } @@ -732,9 +732,9 @@ log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); } //20220719 Add锛屽鏋滄祬搴撲綅鐘舵�佷负P/R锛屽伐浣滅姸鎬佷负14/15,璇存槑娴呭簱浣嶅凡缁忕┖浜嗭紝鍙互鎵ц鍏ュ簱浠诲姟 - continue; } } + continue; } if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� @@ -777,8 +777,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo()); + } else { + return true; } - return true; } } } else { @@ -793,11 +794,13 @@ // 娌℃湁鍏朵粬浠诲姟 if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo()); + return true; } } // 灏忚溅鎼蛋 if (wrkMast.getWrkSts() == 3L) { this.carMoveOut(wrkMast, steNo, crnProtocol); + return true; } // 娌℃湁灏忚溅 } else { @@ -834,8 +837,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo()); + } else { + return true; } - return true; } } @@ -847,11 +851,13 @@ Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo()); // 鏈夊皬杞� if (steNo != null) { - // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 + // 灏忚溅琛岃蛋鍒板緟鏈轰綅 if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { // 娌℃湁鍏朵粬浠诲姟 if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); + } else { + return true; } } // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉锛堝皬杞︿笉鐢ㄦ惉杩愶紝宸茬粡鍦ㄥ綋鍓嶇粍搴撲綅锛� / 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓� @@ -888,8 +894,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉/6.灏忚溅寰呭叆 => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } - return true; } } } @@ -903,12 +910,14 @@ if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo()); + return true; } } } // 鍫嗗灈鏈烘惉杩愬皬杞� if (wrkMast.getWrkSts() == 3L) { this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); + return true; } } } @@ -921,7 +930,7 @@ /** * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� */ - public boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ + public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo()); @@ -970,11 +979,11 @@ } // 缃《浠诲姟 - wrkMast.setIoPri((double) 9999); + wrkMast.setIoPri((double) 9998); wrkMastMapper.updateById(wrkMast); // 鍒ゆ柇鏄惁涓虹┛姊簱 - if (!locMastService.isShuttle(wrkMast.getLocNo())) { + if (!locMastService.isShuttle(wrkMast.getSourceLocNo())) { // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) { @@ -987,7 +996,7 @@ log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); } else { if(waitWrkMast.getWrkSts() == 11) { - waitWrkMast.setIoPri(20D); + waitWrkMast.setIoPri(wrkMast.getIoPri() + 1); waitWrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(waitWrkMast) == 0) { log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); @@ -1035,8 +1044,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } - break; } } else { @@ -1070,8 +1080,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } - return true; } // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱 } else { @@ -1106,8 +1117,13 @@ wrkMast.setSteNo(steNo); wrkMast.setCrnStrTime(now); wrkMast.setModiTime(now); + LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); + Integer outCrnNo = locMastService.getOutCrnNo(locMast); + wrkMast.setCrnNo(outCrnNo); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } } } @@ -1140,8 +1156,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } - return true; } } @@ -1155,12 +1172,14 @@ if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) { // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); + return true; } } } // 鍫嗗灈鏈烘惉杩愬皬杞� if (wrkMast.getWrkSts() == 12L) { this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); + return true; } } } @@ -1174,6 +1193,7 @@ /** * 搴撲綅绉昏浆 */ + @Deprecated public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ // 鑾峰彇宸ヤ綔妗d俊鎭� WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId()); @@ -1326,7 +1346,14 @@ SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } if (!steProtocol.isIdle()) { continue; } + if (steProtocol.getRow() == 1) { continue; } String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo(); + // 濡傛灉鍦ㄥ悓涓�涓簱浣嶇粍 + if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true)) + && steProtocol.getBay().intValue() == Utils.getBay(locNo) + && steProtocol.getLev().intValue() == Utils.getLev(locNo)) { + return steThread; + } LocMast locMast = locMastService.selectById(locNo); int lev = locMast.getLev1(); int bay = locMast.getBay1(); @@ -1346,8 +1373,7 @@ } /** - * 璁╁皬杞︿粠 杩滅偣 ====>> 寰呮満 - * 绛夊緟鍫嗗灈鏈烘惉杩� + * 璁╁皬杞﹁璧拌嚦寰呮満浣� */ public void letCarBeWaiting(WrkMast wrkMast, Integer steNo, String locNo) { // 鑾峰彇绌挎杞︿俊鎭� @@ -1356,24 +1382,35 @@ if (steProtocol == null) { return; } if (steProtocol.isIdle()) { - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findWaiting(steProtocol.getRow().intValue())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� - - steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); - steCommand.setBay(steProtocol.getBay()); - steCommand.setLev(steProtocol.getLev()); - - if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { - log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); - } else { + // 濡傛灉澶勪簬寰呮満浣� + if (steProtocol.locaType.equals(SteLocaType.A_WAITING) || steProtocol.locaType.equals(SteLocaType.B_WAITING)) { // 淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� + wrkMast.setWrkSts(3L); wrkMast.setSteNo(steNo); wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } else { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findWaiting(steProtocol.getRow().intValue())); // 浠诲姟妯″紡: 琛岃蛋鑷冲緟鏈轰綅 + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); + steCommand.setBay(steProtocol.getBay()); + steCommand.setLev(steProtocol.getLev()); + + if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� + wrkMast.setSteNo(steNo); + wrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } } } @@ -1842,6 +1879,9 @@ Date now = new Date(); wrkMast.setCrnEndTime(now); wrkMast.setModiTime(now); + LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); + Integer outCrnNo = locMastService.getOutCrnNo(locMast); + wrkMast.setCrnNo(outCrnNo); // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 if (wrkMastMapper.updateById(wrkMast) > 0) { // 鍫嗗灈鏈哄浣� @@ -2523,7 +2563,7 @@ SteChargeType first = SteChargeType.FIRST; locNo = first.locNo; if (basSteService.hasCarOfLocNo(locNo) == null - && wrkChargeService.selectWorkingOfCharge(first.ssbm) != null) { + && wrkChargeService.selectWorkingOfCharge(first.ssbm) == null) { steCharge = first; break; } @@ -2532,7 +2572,7 @@ SteChargeType second = SteChargeType.SECOND; locNo = second.locNo; if (basSteService.hasCarOfLocNo(locNo) == null - && wrkChargeService.selectWorkingOfCharge(second.ssbm) != null) { + && wrkChargeService.selectWorkingOfCharge(second.ssbm) == null) { steCharge = second; break; } @@ -2541,7 +2581,7 @@ SteChargeType third = SteChargeType.THIRD; locNo = third.locNo; if (basSteService.hasCarOfLocNo(locNo) == null - && wrkChargeService.selectWorkingOfCharge(third.ssbm) != null) { + && wrkChargeService.selectWorkingOfCharge(third.ssbm) == null) { steCharge = third; break; } @@ -2567,6 +2607,40 @@ if (!wrkChargeService.insert(wrkCharge)) { log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); continue; + } + + // 灏忚溅澶勪簬閫氶亾 + List<String> channel = slaveProperties.getChannel(); + for (String channelLocNo : channel) { + if (steProtocol.getRow().intValue() == Utils.getRow(channelLocNo) + && steProtocol.getBay().intValue() == Utils.getBay(channelLocNo) + && steProtocol.getLev().intValue() == Utils.getLev(channelLocNo)) { + Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); + if (null != otherSte) { + log.warn("{}鍙峰皬杞﹀厖鐢甸樆鏂紝鍘熷洜锛氶�氶亾瀛樺湪{}鍙风┛姊溅锛�", wrkCharge.getSteNo(), otherSte); + } else { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 鍘诲彸绔� + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue()); + steCommand.setBay(steProtocol.getBay()); + steCommand.setLev(steProtocol.getLev()); + if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌 + wrkCharge.setWrkSts(25L); + Date now = new Date(); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } } // 澶勪簬鍏呯數搴撲綅缁� @@ -2777,22 +2851,31 @@ if (Cools.isEmpty(steProtocol, basSte)) { continue; } - // 1鍙峰厖鐢垫々 - if (value.equals(SteChargeType.FIRST) && devpThread.charge0) { + if (steProtocol.getCharge() < 99) { continue; } - // 2鍙峰厖鐢垫々 - if (value.equals(SteChargeType.SECOND) && devpThread.charge1) { + if (steProtocol.getMode() == 0) { continue; } - // 3鍙峰厖鐢垫々 - if (value.equals(SteChargeType.THIRD) && devpThread.charge2) { + if (!steProtocol.getStatusType().equals(SteStatusType.IDLE)) { continue; } - // 灏忚溅鏄惁澶勪簬鍏呯數鐘舵�� - if (steProtocol.getChargeStatus() == 1) { - continue; - } +// // 1鍙峰厖鐢垫々 +// if (value.equals(SteChargeType.FIRST) && devpThread.charge0) { +// continue; +// } +// // 2鍙峰厖鐢垫々 +// if (value.equals(SteChargeType.SECOND) && devpThread.charge1) { +// continue; +// } +// // 3鍙峰厖鐢垫々 +// if (value.equals(SteChargeType.THIRD) && devpThread.charge2) { +// continue; +// } +// // 灏忚溅鏄惁澶勪簬鍏呯數鐘舵�� +// if (steProtocol.getChargeStatus() == 1) { +// continue; +// } // case 1 : 鑷姩鍏呯數寮� 棣堢數 脳 // case 2 : 鑷姩鍏呯數寮� 婊$數 鉁� // case 3 : 鑷姩鍏呯數鍏� 棣堢數 鉁� @@ -2862,7 +2945,7 @@ crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosX(steProtocol.getRow()); // 婧愬簱浣嶆帓 crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), false).shortValue()); // 鐩爣搴撲綅鎺� -- Gitblit v1.9.1