From 1222c3c5ef13f244e8dff1fb1a14457b77140d6b Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期三, 26 十月 2022 10:31:50 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 643 +++++++++++++++++++++------------------------------------ 1 files changed, 240 insertions(+), 403 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 2d1b045..ebb486a 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -641,7 +641,7 @@ } } // 搴撲綅绉昏浆 -// this.locToLoc(crn, crnProtocol); + this.locToLoc(crn, crnProtocol); // 婕旂ず浠诲姟 this.steMoveDemo(crn, crnProtocol); } @@ -695,18 +695,6 @@ } // 妫�娴嬫槸鍚﹀瓨鍦ㄥ嚭搴撲换鍔� -// WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), null); -// if (null != pakoutWrkMast) { -// if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107) -// && pakoutWrkMast.getWrkSts() == 17 -// && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null -// ) { -// -// } else { -// log.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍑哄簱涓换鍔�!", wrkMast.getWrkNo()); -// continue; -// } -// } if (null != wrkMastMapper.selectPakout(slave.getId(), null)) { log.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍑哄簱涓换鍔�!", wrkMast.getWrkNo()); continue; @@ -716,6 +704,7 @@ wrkMast.setIoPri((double) 9999); wrkMastMapper.updateById(wrkMast); + // 鍒ゆ柇鏄惁涓虹┛姊簱 if (!locMastService.isShuttle(wrkMast.getLocNo())) { // 闈炵┛姊簱鍏ュ簱 銆� 鍫嗗灈鏈虹洿鎺ュ叆搴� 銆� @@ -734,17 +723,17 @@ switch (shallowLoc.getLocSts()) { case "P": case "R": { - WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); - if (null == waitWrkMast || (waitWrkMast.getIoType() == 101 && waitWrkMast.getWrkSts() >= 14L)) { + WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); + if (null == waitWrkMast) { log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); } else { - waitWrkMast.setIoPri(15D); - waitWrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(waitWrkMast) == 0) { - log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); - } - //20220719 Add锛屽鏋滄祬搴撲綅鐘舵�佷负P/R锛屽伐浣滅姸鎬佷负14/15,璇存槑娴呭簱浣嶅凡缁忕┖浜嗭紝鍙互鎵ц鍏ュ簱浠诲姟 - if (waitWrkMast.getWrkSts() < 14L) { + 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; } } @@ -755,15 +744,15 @@ // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { wrkMast.setUpdMk("Y"); - wrkMast.setIoPri(14D); + wrkMast.setIoPri(20D); wrkMastMapper.updateById(wrkMast); // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) moveLocForDeepLoc(slave, shallowLoc); } continue; case "Q": { - WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); - if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) { + WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo); + if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) { continue; } break; @@ -799,7 +788,7 @@ } } else { // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 - if (locMastService.isOutMost(wrkMast.getLocNo())) { + if (locMastService.isOutMost(wrkMast.getLocNo(), true)) { // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴� Integer steNo = this.hasCar(wrkMast.getLocNo()); // 鏈夊皬杞� @@ -891,7 +880,7 @@ crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { @@ -989,14 +978,47 @@ wrkMast.setIoPri((double) 9999); wrkMastMapper.updateById(wrkMast); - // 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱 - if (locMastService.isOutMost(wrkMast.getSourceLocNo())) { + // 鍒ゆ柇鏄惁涓虹┛姊簱 + if (!locMastService.isShuttle(wrkMast.getLocNo())) { + + // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� + if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) { + String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo()); + LocMast shallowLoc = locMastService.selectById(shallowLocNo); + // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒 + 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() == 11) { + waitWrkMast.setIoPri(20D); + waitWrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(waitWrkMast) == 0) { + log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); + } + } + continue; + } + } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { + // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� + if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { + wrkMast.setUpdMk("Y"); + wrkMastMapper.updateById(wrkMast); + // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) + moveLocForDeepLoc(slave, shallowLoc); + } + log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo()); + continue; + } + } + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (wrkMastMapper.selectWorking(slave.getId()) != null) { continue; } - // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� @@ -1019,112 +1041,132 @@ if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } - return true; + break; } - // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱 + } else { - // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞� - Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo()); - // 鏈夊皬杞� - if (steNo != null) { - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐� - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol == null) { continue; } - if (steProtocol.isIdle()) { + // 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱 + if (locMastService.isOutMost(wrkMast.getSourceLocNo(), false)) { + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; + } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� + Date now = new Date(); + wrkMast.setWrkSts(16L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + return true; + } + // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱 + } else { + // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞� + Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo()); + // 鏈夊皬杞� + if (steNo != null) { + if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); - steCommand.setBay(steProtocol.getBay()); - steCommand.setLev(steProtocol.getLev()); + // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { continue; } + if (steProtocol.isIdle()) { - if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { - log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� - Date now = new Date(); - wrkMast.setWrkSts(14L); - wrkMast.setSteNo(steNo); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).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姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� + Date now = new Date(); + wrkMast.setWrkSts(14L); + wrkMast.setSteNo(steNo); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } } } - } - if (wrkMast.getWrkSts() == 15L) { - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (wrkMastMapper.selectWorking(slave.getId()) != null) { - continue; - } - - // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(sourceSta.getRow1()).shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� - Date now = new Date(); - wrkMast.setWrkSts(16L); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + if (wrkMast.getWrkSts() == 15L) { + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; } - return true; - } - } - // 娌℃湁灏忚溅 - } else { - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - // 瀵绘壘鏈�杩戠殑灏忚溅 - SteThread steThread = queryIdleCar(wrkMast); - if (steThread != null) { - // 娌℃湁鍏朵粬浠诲姟 -// boolean hasPakout = true; -// WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), steNo); -// if (null != pakoutWrkMast) { -// if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107) -// && pakoutWrkMast.getWrkSts() == 17 -// && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null -// ) { -// hasPakout = false; -// } -// } else { -// hasPakout = false; -// } -// if (!hasPakout) { -// // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� -// this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); -// } - if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) { - // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� - this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); + // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getGroupRow(sourceSta.getRow1(), false).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� + Date now = new Date(); + wrkMast.setWrkSts(16L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + return true; } } - } - // 鍫嗗灈鏈烘惉杩愬皬杞� - if (wrkMast.getWrkSts() == 12L) { - this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); + + // 娌℃湁灏忚溅 + } else { + if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { + // 瀵绘壘鏈�杩戠殑灏忚溅 + SteThread steThread = queryIdleCar(wrkMast); + if (steThread != null) { + // 娌℃湁鍏朵粬浠诲姟 + if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) { + // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� + this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); + } + } + } + // 鍫嗗灈鏈烘惉杩愬皬杞� + if (wrkMast.getWrkSts() == 12L) { + this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); + } } } } @@ -1179,251 +1221,31 @@ wrkMast.setIoPri((double) 9999); wrkMastMapper.updateById(wrkMast); - // 婧愬簱浣� ===>> 鏈�澶栧眰搴撲綅 - if (locMastService.isOutMost(wrkMast.getSourceLocNo())) { - // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 - if (locMastService.isOutMost(wrkMast.getLocNo())) { - // todo:luxiaotao 鍒ゆ柇鐩爣搴撲綅鏄惁瀛樺湪灏忚溅锛屽鏋滃瓨鍦紝鍒欐惉璧板皬杞� - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(sourceLoc.getRow1().shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(loc.getRow1().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� - Date now = new Date(); - wrkMast.setWrkSts(16L); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - } - } else { - Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo()); - // 鏈夊皬杞� - if (steNo != null) { - // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - // 鏍囪绉诲簱褰撳墠娴佺▼ - wrkMast.setMk("I"); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("鏍囪绉诲簱褰撳墠娴佺▼ I 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); - } - // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓� - if (wrkMast.getWrkSts() == 6L) { - // 灏忚溅澶勪簬绌洪棽 - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol == null) { return; } - if (steProtocol.isIdle()) { - - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (wrkMastMapper.selectWorking(slave.getId()) != null) { - return; - } - // 鍫嗗灈鏈哄叆搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(sourceLoc.getRow1()).shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(loc.getRow1()).shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓� - Date now = new Date(); - wrkMast.setWrkSts(7L); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉/6.灏忚溅寰呭叆 => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - } - } - } - } else { - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅 - SteThread steThread = queryIdleCar(wrkMast); - if (steThread != null) { - // 鏍囪绉诲簱褰撳墠娴佺▼ - wrkMast.setMk("I"); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("鏍囪绉诲簱褰撳墠娴佺▼ I 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� - this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo()); - } - } - // 鍫嗗灈鏈烘惉杩愬皬杞� - if (wrkMast.getWrkSts() == 3L) { - this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); - } - } - } - + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(sourceLoc.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(loc.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { - - // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞� - Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo()); - // 鏈夊皬杞� - if (steNo != null) { - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - - // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐� - 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(wrkMast.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� - - 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姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� - Date now = new Date(); - wrkMast.setWrkSts(14L); - wrkMast.setSteNo(steNo); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - } - } - } - if (wrkMast.getWrkSts() == 15L) { - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (wrkMastMapper.selectWorking(slave.getId()) != null) { - return; - } - - // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 - if (locMastService.isOutMost(wrkMast.getLocNo())) { - // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(sourceLoc.getRow1()).shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(loc.getRow1()).shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� - Date now = new Date(); - wrkMast.setWrkSts(16L); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } -// wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()); - } - } else { - - // 鎶婅揣鎼埌涓存椂瀛樻斁璐т綅 todo:luxiaotao - - - // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); - } - // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓� - if (wrkMast.getWrkSts() == 6L) { - // 灏忚溅澶勪簬绌洪棽 - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol == null) { return; } - if (steProtocol.isIdle()) { - - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (wrkMastMapper.selectWorking(slave.getId()) != null) { - return; - } - // 鍫嗗灈鏈哄叆搴� 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(sourceLoc.getRow1()).shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(loc.getRow1()).shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓� - Date now = new Date(); - wrkMast.setWrkSts(7L); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉/6.灏忚溅寰呭叆 => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - } - } - } - - } - - } - } else { - if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { - // 瀵绘壘鏈�杩戠殑灏忚溅 - SteThread steThread = queryIdleCar(wrkMast); - if (steThread != null) { - // 鏍囪绉诲簱褰撳墠娴佺▼ - wrkMast.setMk("O"); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("鏍囪绉诲簱褰撳墠娴佺▼ I 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� - this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); - } - } - // 鍫嗗灈鏈烘惉杩愬皬杞� - if (wrkMast.getWrkSts() == 12L) { - this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); - } + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� + Date now = new Date(); + wrkMast.setWrkSts(16L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } } + } /** @@ -1526,7 +1348,7 @@ SteCommand steCommand = new SteCommand(); steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol.getRow())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol.getRow().intValue())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); steCommand.setBay(steProtocol.getBay()); @@ -1561,7 +1383,7 @@ steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol)); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� - steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); steCommand.setBay(steProtocol.getBay()); steCommand.setLev(steProtocol.getLev()); @@ -1633,17 +1455,17 @@ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� - steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); + steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo(), true), locMast.getBay1(), locMast.getLev1()); // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 Date now = new Date(); wrkMast.setWrkSts(4L); @@ -1662,17 +1484,17 @@ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� - steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); + steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo(), true), locMast.getBay1(), locMast.getLev1()); // 淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 13.杩佸叆灏忚溅 Date now = new Date(); wrkMast.setWrkSts(13L); @@ -1714,17 +1536,17 @@ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 婧愬簱浣嶆帓 crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(Utils.getGroupRow(idleLocNo).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosX(Utils.getGroupRow(idleLocNo, true).shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY((short) Utils.getBay(idleLocNo)); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ((short) Utils.getLev(idleLocNo)); // 鐩爣搴撲綅灞� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� - steThread.modifyPos(Utils.getGroupRow(idleLocNo), Utils.getBay(idleLocNo), Utils.getLev(idleLocNo)); + steThread.modifyPos(Utils.getGroupRow(idleLocNo, true), Utils.getBay(idleLocNo), Utils.getLev(idleLocNo)); // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 5.杩佸嚭灏忚溅 Date now = new Date(); wrkMast.setWrkSts(5L); @@ -1799,8 +1621,7 @@ if (wrkMast.getIoType() != 11) { // 鍏ュ簱 ==>> 璐х墿鎼叆搴� if (wrkMast.getWrkSts() == 7){ - // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴� - if (locMastService.isOutMost(wrkMast.getLocNo())) { + if (!locMastService.isShuttle(wrkMast.getLocNo())) { // ==> 9.鍏ュ簱瀹屾垚 wrkMast.setWrkSts(9L); Date now = new Date(); @@ -1814,35 +1635,51 @@ log.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } } else { - // 缁欑┛姊溅涓嬪彂鍛戒护 - Integer steNo = wrkMast.getSteNo(); - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol == null) { continue; } - if (steProtocol.isIdle()) { - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findInByLoc(wrkMast.getLocNo())); // 浠诲姟妯″紡: 鎼叆搴� - if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { - log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); + // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴� + if (locMastService.isOutMost(wrkMast.getLocNo())) { + // ==> 9.鍏ュ簱瀹屾垚 + wrkMast.setWrkSts(9L); + Date now = new Date(); + wrkMast.setCrnEndTime(now); + wrkMast.setModiTime(now); + // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 + if (wrkMastMapper.updateById(wrkMast) > 0) { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); } else { - // 淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� - wrkMast.setWrkSts(8L); - Date now = new Date(); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { - // 鍫嗗灈鏈哄浣� - crnThread.setResetFlag(true); + log.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } else { + // 缁欑┛姊溅涓嬪彂鍛戒护 + Integer steNo = wrkMast.getSteNo(); + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { continue; } + if (steProtocol.isIdle()) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findInByLoc(wrkMast.getLocNo())); // 浠诲姟妯″紡: 鎼叆搴� + if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); } else { - log.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + // 淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� + wrkMast.setWrkSts(8L); + Date now = new Date(); + wrkMast.setCrnEndTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) > 0) { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + } else { + log.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } } } } } - // 鍏ュ簱 ===>> 杩佸叆灏忚溅 瀹屾垚 + // 鍏ュ簱 ===>> 杩佸叆灏忚溅 瀹屾垚 } else if (wrkMast.getWrkSts() == 4) { // 4.杩佸叆灏忚溅 ==> 6.灏忚溅寰呭叆 wrkMast.setWrkSts(6L); @@ -2970,7 +2807,7 @@ SteCommand steCommand = new SteCommand(); steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� - SteTaskModeType originByLoc = SteTaskModeType.findOriginByLoc(steProtocol.getRow()); + SteTaskModeType originByLoc = SteTaskModeType.findOriginByLoc(steProtocol.getRow().intValue()); if (originByLoc.equals(SteTaskModeType.GO_ORIGIN)) { originByLoc = SteTaskModeType.BACK_ORIGIN; } else if (originByLoc.equals(SteTaskModeType.BACK_ORIGIN)) { @@ -3059,7 +2896,7 @@ wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 - wrkMast.setIoPri(13D); + wrkMast.setIoPri(20D); wrkMast.setCrnNo(crn.getId()); wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣� wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅 -- Gitblit v1.9.1