From 7a1a67b71ef5f86c2fb629c1a10b04cf3cbbd2a4 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期三, 02 十一月 2022 09:14:14 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 330 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 225 insertions(+), 105 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..0d9041e 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; @@ -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()); } - } - 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; - case "Q": { - WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); - if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) { + //20220719 Add锛屽鏋滄祬搴撲綅鐘舵�佷负P/R锛屽伐浣滅姸鎬佷负14/15,璇存槑娴呭簱浣嶅凡缁忕┖浜嗭紝鍙互鎵ц鍏ュ簱浠诲姟 continue; } - break; + } + } + 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; } } } @@ -1255,11 +1251,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; @@ -1459,7 +1456,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 +1548,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 +1660,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 +1931,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 +2484,9 @@ */ @SuppressWarnings("serial") public synchronized void loopSteCharge() { + if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset.toString())) { + 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 +2509,7 @@ if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { continue; } - WrkCharge wrkCharge = wrkChargeService.selectWorking(null); + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge.toString()); if (wrkCharge == null && steProtocol.getChargeStatus() == 0) { // 瀵绘壘绌洪棽鍏呯數妗� @@ -2517,6 +2553,7 @@ wrkCharge.setIoPri((double) 10); wrkCharge.setLocNo(chargeLocNo); wrkCharge.setMemo("charge"); + wrkCharge.setAppeTime(new Date()); if (!wrkChargeService.insert(wrkCharge)) { log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); continue; @@ -2640,7 +2677,7 @@ 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))) { + if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(crnCommand)); } else { // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� @@ -2679,11 +2716,11 @@ } /** - * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅 + * 杞鍏呯數妗╂槸鍚︽湁绌洪棽灏忚溅 */ - public synchronized void steFromChargeToIdleLoc() { + public synchronized void queryChargeLocOfComplete() { // 涓庡厖鐢典换鍔′笉鍚屾杩涜 - if (null != wrkChargeService.selectWorking(null)) { return; } + if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge.toString())) { return; } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); // 妫�绱㈠厖鐢垫々 for (SteChargeType value : SteChargeType.values()) { @@ -2716,76 +2753,159 @@ // 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.toString()); + + 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); + } + } + } + } + } + + /** + * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅 + */ + public synchronized void steFromChargeToIdleLoc() { + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.reset.toString()); + 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()); + } + } + } + + } } } -- Gitblit v1.9.1