From fdc2e5aea439d1cccbe60d6cecbe19d5382574a0 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 21 九月 2022 15:18:04 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 191 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 188 insertions(+), 3 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 3a6b082..30aae8a 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -15,6 +15,7 @@ import com.zy.common.model.MatDto; import com.zy.common.model.SearchLocParam; import com.zy.common.model.StartupDto; +import com.zy.common.service.CommonService; import com.zy.common.utils.CollectionUtils; import com.zy.common.utils.HttpHandler; import com.zy.core.CrnThread; @@ -32,6 +33,7 @@ import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; +import com.zy.core.thread.SiemensDevpThread; import com.zy.core.thread.SteThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -78,6 +80,10 @@ private BasCrnErrorMapper basCrnErrorMapper; @Autowired private BasSteService basSteService; + @Autowired + private WrkChargeService wrkChargeService; + @Autowired + private CommonService commonService; /** * 缁勬墭 @@ -1138,6 +1144,36 @@ } } + public void letCarBeWaiting(WrkCharge wrkCharge, Integer steNo) { + // 鑾峰彇绌挎杞︿俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { return; } + if (steProtocol.isIdle()) { + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findWaiting(steProtocol.getRow().intValue())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).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姸鎬� 缁戝畾绌挎杞� + wrkCharge.setSteNo(steNo); + wrkCharge.setModiTime(new Date()); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } + /** * 璁╁皬杞︿粠 杩滅偣 ====>> 绉诲姩鍒拌繎鐐� * 绛夊緟鍫嗗灈鏈烘惉杩� @@ -1315,9 +1351,33 @@ // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectCrnWaiting(crnProtocol.getTaskNo().intValue()); if (wrkMast == null) { - log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); - continue; + + // 鍏呯數浠诲姟 + WrkCharge wrkCharge = wrkChargeService.selectById(crnProtocol.getTaskNo()); + if (wrkCharge == null) { + log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); + continue; + } else { + // 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚 + if (wrkCharge.getWrkSts() == 4) { + // 4.杩佸叆灏忚溅 ===>> 6.灏忚溅寰呭叆 + wrkCharge.setWrkSts(6L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 4.杩佸叆灏忚溅 ===>> 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + if (!steThread.confirmPos()) { + log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬厖鐢典换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); + } + } + } + } + } + if (wrkMast == null) { continue; } if (wrkMast.getIoType() != 11) { // 鍏ュ簱 ==>> 璐х墿鎼叆搴� if (wrkMast.getWrkSts() == 7){ @@ -1577,8 +1637,33 @@ } else { // 鏌ヨ鏄惁鏈夊緟鍏ュ簱鐨勪换鍔� WrkMast wrkMast = wrkMastMapper.selectCarWaiting(steProtocol.getTaskNo().intValue()); - if (wrkMast == null) { continue; } + if (wrkMast == null) { + // 鍏呯數浠诲姟 + WrkCharge wrkCharge = wrkChargeService.selectById(steProtocol.getTaskNo()); + if (wrkCharge == null) { + continue; + } else { + if (wrkCharge.getWrkSts() == 11) { + // 11.鐢熸垚鍑哄簱ID ===>> 12.灏忚溅寰呮惉 + wrkCharge.setWrkSts(12L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 11.鐢熸垚鍑哄簱ID ===>> 12.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } else if (wrkCharge.getWrkSts() == 8) { + // 8.灏忚溅鎼叆搴� ===>> 9.鍏ュ簱瀹屾垚 + wrkCharge.setWrkSts(9L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 8.灏忚溅鎼叆搴� ===>> 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } + } + } + if (wrkMast == null) { continue; } switch (wrkMast.getWrkSts().intValue()) { case 2: // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 @@ -1969,9 +2054,109 @@ BasSte basSte = basSteService.selectById(ste.getId()); if (Cools.isEmpty(steProtocol, basSte)) { continue; } try { + if (!steProtocol.statusType.equals(SteStatusType.IDLE)) { + continue; + } if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { continue; } + WrkCharge wrkCharge = wrkChargeService.selectById(steProtocol.getTaskNo()); + + if (wrkCharge == null) { + String idleLoc = basSte.getIdleLoc(); + wrkCharge = new WrkCharge(); + wrkCharge.setSteNo(ste.getId()); + wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); + wrkCharge.setWrkSts(11L); + wrkCharge.setCrnNo(basSte.getCrnNo()); + wrkCharge.setIoPri((double) 10); + wrkCharge.setLocNo(idleLoc); + if (wrkChargeService.insert(wrkCharge)) { + log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); + } + + if (Utils.getGroupRow(idleLoc).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(idleLoc) && steProtocol.getLev() == Utils.getLev(idleLoc)) { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆 + wrkCharge.setWrkSts(6L); + wrkCharge.setModiTime(new Date()); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } else { + this.letCarBeWaiting(wrkCharge, ste.getId()); + } + + } else { + // 12.灏忚溅寰呮惉 + if (wrkCharge.getWrkSts() == 12) { + // 鎼皬杞﹁嚦鍏呯數搴撲綅 + LocMast locMast = locMastService.selectById(basSte.getIdleLoc()); + + // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� + steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 + Date now = new Date(); + wrkCharge.setWrkSts(4L); + wrkCharge.setCrnStrTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + + } else if (wrkCharge.getWrkSts() == 6L) { + // 灏忚溅琛岄┒鑷冲厖鐢典綅 + if (steProtocol.isIdle()) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findChargeByLoc(steProtocol.getRow().intValue())); + if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===> 8.灏忚溅鎼叆搴� + wrkCharge.setWrkSts(8L); + Date now = new Date(); + wrkCharge.setCrnEndTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===> 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } else if (wrkCharge.getWrkSts() == 9L) { + // 缁欒緭閫佺嚎涓嬪彂鍏呯數浠诲姟 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + SteChargeType steChargeType = SteChargeType.get(wrkCharge.getLocNo()); + if (null != steChargeType) { + if (devpThread.charge(steChargeType.ssbm - 1, true)) { + // 淇敼宸ヤ綔妗g姸鎬� 9.鍏ュ簱瀹屾垚 ===> 10.搴撳瓨鏇存柊瀹屾垚 + wrkCharge.setWrkSts(10L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 9.鍏ュ簱瀹屾垚 ===> 10.搴撳瓨鏇存柊瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } else { + log.error("鑾峰彇鍏呯數妗╁彿澶辫触锛岃В鏋愬簱浣嶏細{}", wrkCharge.getLocNo()); + } + } + } } catch (Exception e) { log.error("fail", e); } -- Gitblit v1.9.1