From c6ac4fcda65f2033dbf4d0cfb57fc32cdd3eee2f Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 30 十一月 2022 14:42:09 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 663 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 420 insertions(+), 243 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 2994db2..c03dcef 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.model.enums.WrkChargeType; import com.zy.common.service.CommonService; import com.zy.common.utils.CollectionUtils; import com.zy.common.utils.HttpHandler; @@ -172,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") @@ -642,7 +643,7 @@ } } // 搴撲綅绉昏浆 - this.locToLoc(crn, crnProtocol); +// this.locToLoc(crn, crnProtocol); } } } @@ -719,42 +720,37 @@ String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo()); LocMast shallowLoc = locMastService.selectById(shallowLocNo); // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒 - switch (shallowLoc.getLocSts()) { - case "P": - case "R": { - WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); - if (null == waitWrkMast) { - log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); - } else { - if (waitWrkMast.getWrkSts() < 17) { - waitWrkMast.setIoPri(20D); - waitWrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(waitWrkMast) == 0) { - log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); - } - //20220719 Add锛屽鏋滄祬搴撲綅鐘舵�佷负P/R锛屽伐浣滅姸鎬佷负14/15,璇存槑娴呭簱浣嶅凡缁忕┖浜嗭紝鍙互鎵ц鍏ュ簱浠诲姟 - continue; + if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) { + WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); + if (null == waitWrkMast) { + log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); + } else { + if (waitWrkMast.getWrkSts() < 17) { + waitWrkMast.setIoPri(30D); + waitWrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(waitWrkMast) == 0) { + log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); } + //20220719 Add锛屽鏋滄祬搴撲綅鐘舵�佷负P/R锛屽伐浣滅姸鎬佷负14/15,璇存槑娴呭簱浣嶅凡缁忕┖浜嗭紝鍙互鎵ц鍏ュ簱浠诲姟 } - break; } - case "F": - case "D": - // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� - if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { - wrkMast.setUpdMk("Y"); - wrkMast.setIoPri(20D); - wrkMastMapper.updateById(wrkMast); - // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) - moveLocForDeepLoc(slave, shallowLoc); - } + continue; + } + if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { + // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� + if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { + wrkMast.setUpdMk("Y"); + wrkMast.setIoPri(20D); + wrkMastMapper.updateById(wrkMast); + // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) + moveLocForDeepLoc(slave, shallowLoc); + } + continue; + } + if (shallowLoc.getLocSts().equals("Q")) { + WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); + if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) { continue; - case "Q": { - WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); - if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) { - continue; - } - break; } } } @@ -851,7 +847,7 @@ Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo()); // 鏈夊皬杞� if (steNo != null) { - // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 + // 灏忚溅琛岃蛋鍒板緟鏈轰綅 if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { // 娌℃湁鍏朵粬浠诲姟 if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { @@ -978,7 +974,7 @@ wrkMastMapper.updateById(wrkMast); // 鍒ゆ柇鏄惁涓虹┛姊簱 - if (!locMastService.isShuttle(wrkMast.getLocNo())) { + if (!locMastService.isShuttle(wrkMast.getSourceLocNo())) { // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) { @@ -1178,6 +1174,7 @@ /** * 搴撲綅绉昏浆 */ + @Deprecated public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ // 鑾峰彇宸ヤ綔妗d俊鎭� WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId()); @@ -1255,11 +1252,12 @@ // 鑾峰彇鍫嗗灈鏈轰俊鎭� SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol == null) { continue; } - if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true)) - && steProtocol.getBay() == Utils.getBay(locNo) - && steProtocol.getLev() == Utils.getLev(locNo)) { - return steProtocol.getSteNo().intValue(); + BasSte basSte = basSteService.selectById(ste.getId()); + if (Cools.isEmpty(steProtocol, basSte)) { continue; } + if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(basSte.getRow(), true)) + && basSte.getBay() == Utils.getBay(locNo) + && basSte.getLev() == Utils.getLev(locNo)) { + return ste.getId(); } } return null; @@ -1349,8 +1347,7 @@ } /** - * 璁╁皬杞︿粠 杩滅偣 ====>> 寰呮満 - * 绛夊緟鍫嗗灈鏈烘惉杩� + * 璁╁皬杞﹁璧拌嚦寰呮満浣� */ public void letCarBeWaiting(WrkMast wrkMast, Integer steNo, String locNo) { // 鑾峰彇绌挎杞︿俊鎭� @@ -1359,24 +1356,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()); + } } } } @@ -1459,7 +1467,7 @@ if (steProtocol == null) { return; } if (steProtocol.isIdle()) { // 鍫嗗灈鏈虹┖闂� - if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { + if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) { LocMast locMast; // 鍏ュ簱鎼� if (wrkMast.getWrkSts() <= 10) { @@ -1551,7 +1559,7 @@ // 绌挎杞︾┖闂� if (steProtocol.isIdle()) { // 鍫嗗灈鏈虹┖闂� - if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { + if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) { BasSte basSte = basSteService.selectById(steNo); if (basSte == null) { @@ -1663,6 +1671,34 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); if (!steThread.confirmPos()) { log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬厖鐢典换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); + } + } + } else if (wrkCharge.getWrkSts() == 42) { + // 42.鍚婅溅鎼繍 ===>> 43.灏忚溅鍒拌揪 + wrkCharge.setWrkSts(43L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼澶嶄綅浠诲姟鐘舵�� 42.鍚婅溅鎼繍 ===>> 43.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + if (!steThread.confirmPos()) { + log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬浣嶄换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); + } + } + } else if (wrkCharge.getWrkSts() == 46) { + // 46.鏀捐嚦寰呮満浣� ===>> 47.澶嶄綅鎴愬姛 + wrkCharge.setWrkSts(47L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼澶嶄綅浠诲姟鐘舵�� 46.鏀捐嚦寰呮満浣� ===>> 47.澶嶄綅鎴愬姛 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + if (!steThread.confirmPos()) { + log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬浣嶄换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); } } } @@ -1906,6 +1942,14 @@ wrkCharge.setWrkSts(37L); if (!wrkChargeService.updateById(wrkCharge)) { log.error("淇敼婕旂ず浠诲姟鐘舵�� 36.灏忚溅璧拌 ===>> 37.婕旂ず瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } else if (wrkCharge.getWrkSts() == 44) { + // 44.灏忚溅璧拌 ===>> 45.灏忚溅寰呮惉 + wrkCharge.setWrkSts(45L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼婕旂ず浠诲姟鐘舵�� 44.灏忚溅璧拌 ===>> 45.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { steThread.setResetFlag(true); } @@ -2451,6 +2495,12 @@ */ @SuppressWarnings("serial") public synchronized void loopSteCharge() { + if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) { + return; + } + if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) { + return; + } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); for (SteSlave ste : slaveProperties.getSte()) { SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); @@ -2473,7 +2523,7 @@ if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { continue; } - WrkCharge wrkCharge = wrkChargeService.selectWorking(null); + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); if (wrkCharge == null && steProtocol.getChargeStatus() == 0) { // 瀵绘壘绌洪棽鍏呯數妗� @@ -2481,23 +2531,29 @@ do { String locNo; if (!devpThread.charge0) { - locNo = SteChargeType.FIRST.locNo; - if (basSteService.hasCarOfLocNo(locNo) == null) { - steCharge = SteChargeType.FIRST; + SteChargeType first = SteChargeType.FIRST; + locNo = first.locNo; + if (basSteService.hasCarOfLocNo(locNo) == null + && wrkChargeService.selectWorkingOfCharge(first.ssbm) != null) { + steCharge = first; break; } } if (!devpThread.charge1) { - locNo = SteChargeType.SECOND.locNo; - if (basSteService.hasCarOfLocNo(locNo) == null) { - steCharge = SteChargeType.SECOND; + SteChargeType second = SteChargeType.SECOND; + locNo = second.locNo; + if (basSteService.hasCarOfLocNo(locNo) == null + && wrkChargeService.selectWorkingOfCharge(second.ssbm) != null) { + steCharge = second; break; } } if (!devpThread.charge2) { - locNo = SteChargeType.THIRD.locNo; - if (basSteService.hasCarOfLocNo(locNo) == null) { - steCharge = SteChargeType.THIRD; + SteChargeType third = SteChargeType.THIRD; + locNo = third.locNo; + if (basSteService.hasCarOfLocNo(locNo) == null + && wrkChargeService.selectWorkingOfCharge(third.ssbm) != null) { + steCharge = third; break; } } @@ -2511,12 +2567,14 @@ String chargeLocNo = steCharge.locNo; wrkCharge = new WrkCharge(); wrkCharge.setSteNo(ste.getId()); + wrkCharge.setCharge(steCharge.ssbm); wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); wrkCharge.setWrkSts(21L); // 21.鍑嗗鍏呯數 wrkCharge.setCrnNo(2); // 鍥哄畾2鍙峰爢鍨涙満 wrkCharge.setIoPri((double) 10); wrkCharge.setLocNo(chargeLocNo); wrkCharge.setMemo("charge"); + wrkCharge.setAppeTime(new Date()); if (!wrkChargeService.insert(wrkCharge)) { log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); continue; @@ -2536,154 +2594,189 @@ this.letCarBeWaiting(wrkCharge, ste.getId()); } - } else { - // filter - if (wrkCharge == null || (wrkCharge.getWrkSts() < 28 && steProtocol.getChargeStatus() == 1)) { - continue; - } + break; + } + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + log.error("loopSteCharge fail", e); + } + } + } - // 22.灏忚溅寰呮惉 - if (wrkCharge.getWrkSts() == 22) { + /** + * 鎵ц灏忚溅鍏呯數浠诲姟 + */ + public synchronized void executeSteCharge() { + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); + if (null == wrkCharge) { return; } + Integer steNo = wrkCharge.getSteNo(); + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + BasSte basSte = basSteService.selectById(steNo); + if (Cools.isEmpty(steProtocol, basSte)) { return; } + if (steProtocol.getMode() == 0 + || !steProtocol.statusType.equals(SteStatusType.IDLE) + || basSte.getPakMk().equals("Y") + || basSte.getAutoCharge().equals("N") +// || steProtocol.getChargeStatus() == 1 + ) { + return; + } + if (!steProtocol.isEnable()) { + return; + } + if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { + wrkCharge.setWrkSts(30L); + wrkChargeMapper.updateById(wrkCharge); + return; + } + try { + // filter + if (wrkCharge.getWrkSts() < 28 && steProtocol.getChargeStatus() == 1) { + return; + } - // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾 - List<String> channel = slaveProperties.getChannel(); - for (String channelLocNo : channel) { - Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); - if (null != otherSte) { - log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte); - } else { - LocMast channelLoc = locMastService.selectById(channelLocNo); + // 22.灏忚溅寰呮惉 + if (wrkCharge.getWrkSts() == 22) { - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo()); - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol == null) { continue; } - // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { - // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- - 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(), true).shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(channelLoc.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(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1()); - // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 - Date now = new Date(); - wrkCharge.setWrkSts(23L); - wrkCharge.setCrnStrTime(now); - wrkCharge.setModiTime(now); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); - } - } - break; - } + // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾 + List<String> channel = slaveProperties.getChannel(); + for (String channelLocNo : channel) { + Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); + if (null != otherSte) { + log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte); + } else { + LocMast channelLoc = locMastService.selectById(channelLocNo); - } - } - - } else if (wrkCharge.getWrkSts() == 24L) { - // 灏忚溅琛岄┒閫氶亾 - if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) { - if (steProtocol.getChargeStatus() == 1) { continue; } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - 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姸鎬� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅璧拌 - wrkCharge.setWrkSts(25L); - Date now = new Date(); - wrkCharge.setCrnEndTime(now); - wrkCharge.setModiTime(now); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); - } - } - } - } else if (wrkCharge.getWrkSts() == 26) { - // 鍥哄畾鍫嗗灈鏈� - int crnNo = 1; - // 鍏呯數浣� - LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo()); - - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo); + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙� + 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(), false).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(chargeLoc.getRow1().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(chargeLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(chargeLoc.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(crnCommand)); + crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� - steThread.modifyPos(chargeLoc.getRow1(), chargeLoc.getBay1(), chargeLoc.getLev1()); - // 淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� + steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 Date now = new Date(); - wrkCharge.setWrkSts(27L); + wrkCharge.setWrkSts(23L); wrkCharge.setCrnStrTime(now); wrkCharge.setModiTime(now); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } + break; } - } else if (wrkCharge.getWrkSts() == 28L) { - // 绌挎杞︿笅鍙戝厖鐢典换鍔� - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.CHARGE_LEFT); // 浠诲姟妯″紡: 鍏呯數 - if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { - log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); - } else { - // 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� - wrkCharge.setWrkSts(29L); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); - } + + } + } + + } else if (wrkCharge.getWrkSts() == 24L) { + // 灏忚溅琛岄┒閫氶亾 + if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) { + if (steProtocol.getChargeStatus() == 1) { return; } + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + 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姸鎬� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅璧拌 + wrkCharge.setWrkSts(25L); + Date now = new Date(); + wrkCharge.setCrnEndTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } } - } catch (Exception e) { - log.error("fail", e); + } else if (wrkCharge.getWrkSts() == 26) { + // 鍥哄畾鍫嗗灈鏈� + int crnNo = 1; + // 鍏呯數浣� + LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo()); + + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { return; } + // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { + // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(chargeLoc.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(chargeLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(chargeLoc.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(crnCommand)); + } else { + // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� + steThread.modifyPos(chargeLoc.getRow1(), chargeLoc.getBay1(), chargeLoc.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� + Date now = new Date(); + wrkCharge.setWrkSts(27L); + wrkCharge.setCrnStrTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } else if (wrkCharge.getWrkSts() == 28L) { + // 绌挎杞︿笅鍙戝厖鐢典换鍔� + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.CHARGE_LEFT); // 浠诲姟妯″紡: 鍏呯數 + if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); + } else { + // 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� + wrkCharge.setWrkSts(29L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } } + } catch (Exception e) { + log.error("executeSteCharge fail", e); } } /** - * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅 + * 杞鍏呯數妗╂槸鍚︽湁绌洪棽灏忚溅 */ - public synchronized void steFromChargeToIdleLoc() { + public synchronized void queryChargeLocOfComplete() { // 涓庡厖鐢典换鍔′笉鍚屾杩涜 - if (null != wrkChargeService.selectWorking(null)) { return; } + if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) { return; } + if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) { return; } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); // 妫�绱㈠厖鐢垫々 for (SteChargeType value : SteChargeType.values()) { @@ -2716,75 +2809,160 @@ // case 3 : 鑷姩鍏呯數鍏� 棣堢數 鉁� // case 4 : 鑷姩鍏呯數鍏� 婊$數 鉁� if (basSte.getAutoCharge().equals("Y") - && steProtocol.getCharge() < Float.parseFloat(basSte.getChargeLine())) { - continue; - } - // 寮�濮嬬┛姊溅澶嶄綅浠诲姟 - WrkCharge wrkCharge = new WrkCharge(); - wrkCharge.setSteNo(steNo); - wrkCharge.setWrkNo(commonService.getChargeWorkNo(6)); - wrkCharge.setWrkSts(41L); // 41.灏忚溅鍑嗗澶嶄綅 - wrkCharge.setCrnNo(2); // 鍥哄畾2鍙峰爢鍨涙満 - wrkCharge.setIoPri((double) 10); - wrkCharge.setSourceLocNo(value.locNo); - wrkCharge.setLocNo(basSte.getIdleLoc()); - wrkCharge.setMemo("reset"); - if (!wrkChargeService.insert(wrkCharge)) { - log.error("淇濆瓨{}鍙风┛姊溅澶嶄綅浠诲姟澶辫触!!!", steNo); + && steProtocol.getCharge() < Float.parseFloat(basSte.getChargeLine())) { continue; } - // 1.鎼繍鑷冲浐瀹氶�氶亾 - if (wrkCharge.getWrkSts() == 41L) { - // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾 - List<String> channel = slaveProperties.getChannel(); - for (String channelLocNo : channel) { - Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); - if (null != otherSte) { - log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte); + WrkCharge wrkCharge = wrkChargeService.selectWorking(steNo, WrkChargeType.reset); + + if (wrkCharge == null) { + // 寮�濮嬬┛姊溅澶嶄綅浠诲姟 + wrkCharge = new WrkCharge(); + wrkCharge.setSteNo(steNo); + wrkCharge.setWrkNo(commonService.getChargeWorkNo(6)); + wrkCharge.setWrkSts(41L); // 41.灏忚溅鍑嗗澶嶄綅 + wrkCharge.setCrnNo(2); // 鍥哄畾2鍙峰爢鍨涙満 + wrkCharge.setIoPri((double) 10); + wrkCharge.setSourceLocNo(value.locNo); + wrkCharge.setLocNo(basSte.getIdleLoc()); + wrkCharge.setMemo("reset"); + wrkCharge.setAppeTime(new Date()); + if (!wrkChargeService.insert(wrkCharge)) { + log.error("淇濆瓨{}鍙风┛姊溅澶嶄綅浠诲姟澶辫触!!!", steNo); + } else { + break; + } + } + } + } + } + + /** + * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅 + */ + public synchronized void steFromChargeToIdleLoc() { + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.reset); + if (wrkCharge == null) { return; } + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + SteProtocol steProtocol = steThread.getSteProtocol(); + BasSte basSte = basSteService.selectById(wrkCharge.getSteNo()); + if (Cools.isEmpty(steProtocol, basSte)) { + return; + } + // 鎼繍鑷冲浐瀹氶�氶亾 + if (wrkCharge.getWrkSts() == 41L) { + // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾 + List<String> channel = slaveProperties.getChannel(); + for (String channelLocNo : channel) { + Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); + if (null != otherSte) { + log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte); + } else { + // 鍥哄畾鍫嗗灈鏈� + int crnNo = 1; + LocMast channelLoc = locMastService.selectById(channelLocNo); + + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { continue; } + // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { + // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), false).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); } else { - // 鍥哄畾鍫嗗灈鏈� - int crnNo = 1; - LocMast channelLoc = locMastService.selectById(channelLocNo); - - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo); - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol == null) { continue; } - // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { - // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), false).shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(channelLoc.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(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1()); - // 淇敼宸ヤ綔妗g姸鎬� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍 - Date now = new Date(); - wrkCharge.setWrkSts(42L); - wrkCharge.setCrnStrTime(now); - wrkCharge.setModiTime(now); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼宸ヤ綔妗g姸鎬� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); - } - } - break; + // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� + steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), false), channelLoc.getBay1(), channelLoc.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍 + Date now = new Date(); + wrkCharge.setWrkSts(42L); + wrkCharge.setCrnStrTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼澶嶄綅浠诲姟鐘舵�� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } - } + break; } } + } + } else if (wrkCharge.getWrkSts() == 43L) { + // 灏忚溅琛岄┒閫氶亾 + if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN); // 鍘诲乏绔� + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).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姸鎬� 43.灏忚溅鍒拌揪 ===> 44.灏忚溅璧拌 + wrkCharge.setWrkSts(44L); + Date now = new Date(); + wrkCharge.setCrnEndTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼澶嶄綅浠诲姟鐘舵�� 43.灏忚溅鍒拌揪 ===> 44.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } else if (wrkCharge.getWrkSts() == 45L) { + LocMast idleLoc = locMastService.selectById(basSte.getIdleLoc()); + + Integer otherSte = existOtherSte(idleLoc.getLocNo(), wrkCharge.getSteNo()); + if (null != otherSte) { + log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), idleLoc.getLocNo(), otherSte); + } else { + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { return; } + // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { + // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + 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(), true).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getGroupRow(idleLoc.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(idleLoc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(idleLoc.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(idleLoc.getLocNo(), true), idleLoc.getBay1(), idleLoc.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 45.灏忚溅寰呮惉 => 46.鏀捐嚦寰呮満浣� + Date now = new Date(); + wrkCharge.setWrkSts(46L); + wrkCharge.setCrnStrTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 45.灏忚溅寰呮惉 => 46.鏀捐嚦寰呮満浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } } } @@ -2811,7 +2989,6 @@ } } } - if (null != loc) { break; -- Gitblit v1.9.1