From cec70e55ff350f70fd8d1a48dcba9c21af05a4e0 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 05 十二月 2022 12:42:27 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 90 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 81 insertions(+), 9 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 14f49b1..598e97e 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -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; } } @@ -852,6 +856,8 @@ // 娌℃湁鍏朵粬浠诲姟 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()); @@ -939,6 +948,16 @@ log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts()); continue; } + + // 鍒ゆ柇鏄惁鏈夊悓搴撲綅缁勭殑鍑哄簱浠诲姟锛屽鏋滄湁锛屽垯鏆傚仠 + List<String> outsideLoc = Utils.getGroupOutsideLoc(wrkMast.getSourceLocNo()); + if (!Cools.isEmpty(outsideLoc)) { + if (!Cools.isEmpty(wrkMastMapper.selectWorkingOfPakOutBySource(outsideLoc))) { + log.warn("{}宸ヤ綔妗e嚭搴撳け璐ワ紝鍘熷洜锛氬灞傚簱浣峽}姝e湪鎵ц鍑哄簱浠诲姟锛�", wrkMast.getWrkNo(), JSON.toJSONString(outsideLoc)); + continue; + } + } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); @@ -970,7 +989,7 @@ } // 缃《浠诲姟 - wrkMast.setIoPri((double) 9999); + wrkMast.setIoPri((double) 9998); wrkMastMapper.updateById(wrkMast); // 鍒ゆ柇鏄惁涓虹┛姊簱 @@ -987,7 +1006,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 +1054,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } - break; } } else { @@ -1070,8 +1090,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 +1127,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 +1166,9 @@ wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } else { + return true; } - return true; } } @@ -1155,12 +1182,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; } } } @@ -1329,6 +1358,12 @@ 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(); @@ -1854,6 +1889,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) { // 鍫嗗灈鏈哄浣� @@ -2581,6 +2619,40 @@ 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()); + } + } + } + } + } + // 澶勪簬鍏呯數搴撲綅缁� if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo) && steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo) -- Gitblit v1.9.1