From 4fa1e8117fc408f5bd3a5612eea5ceb63d206113 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期五, 28 十月 2022 13:52:01 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1329 +++++++++++++++++++++------------------------------------ 1 files changed, 501 insertions(+), 828 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..b9a00cc 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -43,7 +43,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -94,7 +97,6 @@ * 缁勬墭 * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 */ - @Async public void generateStoreWrkFile() { // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { @@ -225,7 +227,6 @@ * wms鍏ュ簱 * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2 */ - @Async public void generateStoreWrkFile0() { // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { @@ -641,9 +642,7 @@ } } // 搴撲綅绉昏浆 -// this.locToLoc(crn, crnProtocol); - // 婕旂ず浠诲姟 - this.steMoveDemo(crn, crnProtocol); + this.locToLoc(crn, crnProtocol); } } } @@ -695,18 +694,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 +703,7 @@ wrkMast.setIoPri((double) 9999); wrkMastMapper.updateById(wrkMast); + // 鍒ゆ柇鏄惁涓虹┛姊簱 if (!locMastService.isShuttle(wrkMast.getLocNo())) { // 闈炵┛姊簱鍏ュ簱 銆� 鍫嗗灈鏈虹洿鎺ュ叆搴� 銆� @@ -734,17 +722,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 +743,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 +787,7 @@ } } else { // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 - if (locMastService.isOutMost(wrkMast.getLocNo())) { + if (locMastService.isOutMost(wrkMast.getLocNo(), true)) { // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴� Integer steNo = this.hasCar(wrkMast.getLocNo()); // 鏈夊皬杞� @@ -857,7 +845,7 @@ } - // 鐩爣搴撲綅 ===>> 闈炴渶澶栧眰搴撲綅 + // 鐩爣搴撲綅 ===>> 闈炴渶澶栧眰搴撲綅 } else { // 鍒ゆ柇灏忚溅鏄惁鍦ㄥ綋鍓嶇粍搴撲綅锛屽鏋滄槸鍒欏皢绌挎杞︾Щ鑷虫渶澶栧眰锛岀瓑寰呭爢鍨涙満鏀捐揣锛涘鏋滀笉鏄紝鍒欏爢鍨涙満瀵绘壘绌挎杞︼紝骞舵斁缃綋鍓嶇粍鏈�澶栧眰 Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo()); @@ -891,7 +879,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))) { @@ -909,7 +897,7 @@ } } } - // 娌℃湁灏忚溅 + // 娌℃湁灏忚溅 } else { if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅 @@ -989,14 +977,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 +1040,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 +1220,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()); } } + } /** @@ -1435,11 +1256,44 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } - if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { + 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(); } } return null; + } + + /** + * 褰撳墠搴撲綅缁勬槸鍚﹀瓨鍦ㄥ叾浠栧皬杞� + */ + public Integer existOtherSte(String locNo, Integer steNo) { + Integer otherSteNo = null; + for (SteSlave ste : slaveProperties.getSte()) { + if (ste.getId().equals(steNo)) { continue; } + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { continue; } + if (steProtocol.isEnable()) { + BasSte basSte = basSteService.selectById(ste.getId()); + if (basSte != null) { + if ((Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(basSte.getRow(), true)) + && basSte.getBay() == Utils.getBay(locNo) + && basSte.getLev() == Utils.getLev(locNo)) + || + (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true)) + && steProtocol.getBay() == Utils.getBay(locNo) + && steProtocol.getLev() == Utils.getLev(locNo)) + ) { + otherSteNo = ste.getId(); + break; + } + } + } + } + return otherSteNo; } /** @@ -1452,7 +1306,9 @@ SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } if (steProtocol.isIdle()) { - if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { + 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(); } } @@ -1464,17 +1320,32 @@ * 鏌ユ壘褰撳墠搴撲綅鏈�閫傚悎鐨勭┛姊溅鏉ヤ綔涓� */ public SteThread queryIdleCar(WrkMast wrkMast) { - Integer crnNo = wrkMast.getCrnNo(); - BasSte basSte = basSteService.findByCrnNo(crnNo); - // 鑾峰彇绌挎杞︿俊鎭� - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, basSte.getSteNo()); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol != null) { - if (steProtocol.isIdle()) { - return steThread; + List<BasSte> basStes = basSteService.selectList(new EntityWrapper<>()); + int val = 0; + SteThread result = null; + for (BasSte basSte : basStes) { + // 鑾峰彇绌挎杞︿俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, basSte.getSteNo()); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { continue; } + if (!steProtocol.isIdle()) { continue; } + String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo(); + LocMast locMast = locMastService.selectById(locNo); + int lev = locMast.getLev1(); + int bay = locMast.getBay1(); + int levAbs = Math.abs(lev - steProtocol.getLev()); + int bayAbs = Math.abs(bay - steProtocol.getBay()); + if (val == 0) { + val = levAbs + bayAbs; + result = steThread; + } else { + if ((levAbs + bayAbs) < val) { + val = levAbs + bayAbs; + result = steThread; + } } } - return null; + return result; } /** @@ -1494,7 +1365,7 @@ steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� steCommand.setTaskMode(SteTaskModeType.findWaiting(steProtocol.getRow().intValue())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� - 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()); @@ -1526,9 +1397,9 @@ 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.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); steCommand.setBay(steProtocol.getBay()); steCommand.setLev(steProtocol.getLev()); @@ -1561,7 +1432,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()); @@ -1573,40 +1444,6 @@ wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - } - } - } - - /** - * 璁╁皬杞︿粠 杩滅偣 ====>> 绉诲姩鍒拌繎鐐� - * 绛夊緟鍫嗗灈鏈烘惉杩� - */ - public void letCarBeReady(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.findOriginByLoc(steProtocol)); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� - - 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()); } } } @@ -1626,6 +1463,14 @@ LocMast locMast; // 鍏ュ簱鎼� if (wrkMast.getWrkSts() <= 10) { + + // 鍒ゆ柇琚Щ搴撲綅鏄惁瀛樺湪鍏朵粬灏忚溅 + Integer otherSte = existOtherSte(wrkMast.getLocNo(), steNo); + if (otherSte != null) { + log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", steNo, wrkMast.getLocNo(), otherSte); + return; + } + locMast = locMastService.selectById(wrkMast.getLocNo()); // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); @@ -1633,17 +1478,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); @@ -1655,6 +1500,13 @@ } // 鍑哄簱鎼� } else { + // 鍒ゆ柇琚Щ搴撲綅鏄惁瀛樺湪鍏朵粬灏忚溅 + Integer otherSte = existOtherSte(wrkMast.getSourceLocNo(), steNo); + if (otherSte != null) { + log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", steNo, wrkMast.getSourceLocNo(), otherSte); + return; + } + locMast = locMastService.selectById(wrkMast.getSourceLocNo()); // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); @@ -1662,17 +1514,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); @@ -1706,7 +1558,15 @@ log.error("{}鍙风┛姊溅鍦ㄦ暟鎹簱涓嶅瓨鍦紒锛侊紒", steNo); return; } + String idleLocNo = basSte.getIdleLoc(); + + // 鍒ゆ柇琚Щ搴撲綅鏄惁瀛樺湪鍏朵粬灏忚溅 + Integer otherSte = existOtherSte(idleLocNo, steNo); + if (otherSte != null) { + log.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", steNo, idleLocNo, otherSte); + return; + } // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); @@ -1714,17 +1574,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); @@ -1777,6 +1637,29 @@ log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬厖鐢典换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); } } + } else if (wrkCharge.getWrkSts() == 27) { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + if (steThread.confirmPos()) { + // 绌挎杞︿笅鍙戝厖鐢典换鍔� + 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 { + // 27.鏀捐嚦鍏呯數浣� ===>> 28.寮�濮嬪厖鐢� + wrkCharge.setWrkSts(28L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 27.鏀捐嚦鍏呯數浣� ===>> 28.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } else { + log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬厖鐢典换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); + } } else if (wrkCharge.getWrkSts() == 34) { // 34.鍚婅溅鎼繍 ===>> 35.灏忚溅灏辩华 wrkCharge.setWrkSts(35L); @@ -1799,8 +1682,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 +1696,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(), true)) { + // ==> 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); @@ -1940,128 +1838,16 @@ } // 搴撲綅绉昏浆 } else { - if (wrkMast.getWrkSts() == 16) { - Date now = new Date(); - if (locMastService.isOutMost(wrkMast.getLocNo())) { - // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚 - wrkMast.setWrkSts(9L); - wrkMast.setCrnEndTime(now); - } else { - // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚 - wrkMast.setWrkSts(9L); - } - wrkMast.setModiTime(now); - // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 - if (wrkMastMapper.updateById(wrkMast) > 0) { - // 鍫嗗灈鏈哄浣� - crnThread.setResetFlag(true); - } else { - log.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - } else if (wrkMast.getWrkSts() == 4) { - // 4.杩佸叆灏忚溅 ==> 6.灏忚溅寰呭叆 - wrkMast.setWrkSts(6L); - Date now = new Date(); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 - if (wrkMastMapper.updateById(wrkMast) > 0) { - // 鍫嗗灈鏈哄浣� - crnThread.setResetFlag(true); - // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkMast.getSteNo()); - if (!steThread.confirmPos()) { - log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); - } - // 绌挎杞﹀幓寰呮満浣� - BasSte basSte = basSteService.selectById(wrkMast.getSteNo()); - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(wrkMast.getSteNo()); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(9999); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findWaiting(basSte.getRow())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� -// steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); -// steCommand.setBay(steProtocol.getBay()); -// steCommand.setLev(steProtocol.getLev()); - if (!MessageQueue.offer(SlaveType.Ste, wrkMast.getSteNo(), new Task(2, steCommand))) { - log.error("绌挎杞﹀緟鏈轰綅鍛戒护涓嬪彂澶辫触锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getSteNo(), JSON.toJSON(steCommand)); - } - } else { - log.error("淇敼宸ヤ綔妗g姸鎬� 4.杩佸叆灏忚溅 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); - } - // 鍏ュ簱 ===>> 杩佸嚭灏忚溅 瀹屾垚 - } else if (wrkMast.getWrkSts() == 7){ - // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴� - if (locMastService.isOutMost(wrkMast.getLocNo())) { - // ==> 9.鍏ュ簱瀹屾垚 - wrkMast.setWrkSts(9L); - Date now = new Date(); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 - if (wrkMastMapper.updateById(wrkMast) > 0) { - // 鍫嗗灈鏈哄浣� + if (!locMastService.isShuttle(wrkMast.getLocNo())) { + if (wrkMast.getWrkSts() == 16 && wrkMast.getIoType() == 11){ + // 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚 + wrkMast.setWrkSts(17L); + wrkMast.setCrnEndTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) != 0) { + // 澶嶄綅鍫嗗灈鏈� crnThread.setResetFlag(true); } else { - 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 { - // 淇敼宸ヤ綔妗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() == 13) { - // 缁欑┛姊溅涓嬪彂鍛戒护 - Integer steNo = wrkMast.getSteNo(); - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (steProtocol == null) { continue; } - // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 - if (!steThread.confirmPos()) { - log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); - } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙� - steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡: 鎼嚭搴� - if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { - log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); - } else { - // 13.杩佸叆灏忚溅 ==> 14.灏忚溅鎼嚭搴� - wrkMast.setWrkSts(14L); - Date now = new Date(); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 - if (wrkMastMapper.updateById(wrkMast) > 0) { - // 鍫嗗灈鏈哄浣� - crnThread.setResetFlag(true); - } else { - log.error("淇敼宸ヤ綔妗g姸鎬� 13.杩佸叆灏忚溅 ==> 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); } } } @@ -2101,14 +1887,22 @@ steThread.setResetFlag(true); } } else if (wrkCharge.getWrkSts() == 25) { - // 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 + // 25.灏忚溅璧拌 ===>> 26.绛夊緟鍏呯數 wrkCharge.setWrkSts(26L); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 25.灏忚溅璧拌 ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { steThread.setResetFlag(true); } - } else if (wrkCharge.getWrkSts() == 32) { + } else if (wrkCharge.getWrkSts() == 28) { + // 28.寮�濮嬪厖鐢� ===>> 29.瀹屾垚鍏呯數 + wrkCharge.setWrkSts(29L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 28.寮�濮嬪厖鐢� ===>> 29.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } else if (wrkCharge.getWrkSts() == 32) { // 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉 wrkCharge.setWrkSts(33L); if (!wrkChargeService.updateById(wrkCharge)) { @@ -2160,7 +1954,9 @@ } else { if (wrkMast.getMk().equals("I")) { String locNo = wrkMast.getLocNo(); - if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { + if (Utils.getGroupRow(locNo, false).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), false)) + && steProtocol.getBay() == Utils.getBay(locNo) + && steProtocol.getLev() == Utils.getLev(locNo)) { // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆 wrkMast.setWrkSts(6L); } else { @@ -2662,7 +2458,9 @@ /** * 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數 */ + @SuppressWarnings("serial") public synchronized void loopSteCharge() { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); for (SteSlave ste : slaveProperties.getSte()) { SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); @@ -2683,17 +2481,49 @@ if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { continue; } - WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue()); + WrkCharge wrkCharge = wrkChargeService.selectWorking(null); if (wrkCharge == null && steProtocol.getChargeStatus() == 0) { - String idleLoc = basSte.getIdleLoc(); + // 瀵绘壘绌洪棽鍏呯數妗� + SteChargeType steCharge = null; + do { + String locNo; + if (!devpThread.charge0) { + locNo = SteChargeType.FIRST.locNo; + if (basSteService.hasCarOfLocNo(locNo) == null) { + steCharge = SteChargeType.FIRST; + break; + } + } + if (!devpThread.charge1) { + locNo = SteChargeType.SECOND.locNo; + if (basSteService.hasCarOfLocNo(locNo) == null) { + steCharge = SteChargeType.SECOND; + break; + } + } + if (!devpThread.charge2) { + locNo = SteChargeType.THIRD.locNo; + if (basSteService.hasCarOfLocNo(locNo) == null) { + steCharge = SteChargeType.THIRD; + break; + } + } + break; + } while (false); + + if (steCharge == null) { + log.warn("{}鍙峰皬杞︺�愮數閲忥細{}銆戝厖鐢靛け璐ワ紝鍘熷洜锛氭病鏈夌┖闂插厖鐢垫々銆�", ste.getId(), steProtocol.getCharge()); + continue; + } + String chargeLocNo = steCharge.locNo; wrkCharge = new WrkCharge(); wrkCharge.setSteNo(ste.getId()); wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); wrkCharge.setWrkSts(21L); // 21.鍑嗗鍏呯數 - wrkCharge.setCrnNo(basSte.getCrnNo()); + wrkCharge.setCrnNo(2); // 鍥哄畾2鍙峰爢鍨涙満 wrkCharge.setIoPri((double) 10); - wrkCharge.setLocNo(idleLoc); + wrkCharge.setLocNo(chargeLocNo); wrkCharge.setMemo("charge"); if (!wrkChargeService.insert(wrkCharge)) { log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); @@ -2701,7 +2531,9 @@ } // 澶勪簬鍏呯數搴撲綅缁� - if (Utils.getGroupRow(idleLoc).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(idleLoc) && steProtocol.getLev() == Utils.getLev(idleLoc)) { + if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo) + && steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo) + && steProtocol.getLev().intValue() == Utils.getLev(chargeLocNo)) { // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 wrkCharge.setWrkSts(24L); wrkCharge.setModiTime(new Date()); @@ -2720,75 +2552,116 @@ // 22.灏忚溅寰呮惉 if (wrkCharge.getWrkSts() == 22) { - // 鎼皬杞﹁嚦鍏呯數搴撲綅 - 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姸鎬� 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()); + // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾 + 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); + + 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; + } + } } } 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.findChargeByLoc(steProtocol.getRow().intValue())); + 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.灏忚溅鍘诲厖鐢� + // 淇敼宸ヤ綔妗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()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } } } else if (wrkCharge.getWrkSts() == 26) { - if (steProtocol.getChargeStatus() == 0) { continue; } - // 缁欒緭閫佺嚎涓嬪彂鍏呯數浠诲姟 - 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姸鎬� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數 - wrkCharge.setWrkSts(28L); + // 鍥哄畾鍫嗗灈鏈� + int crnNo = 1; + // 鍏呯數浣� + LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo()); + + 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(), 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, 1, 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("淇敼鍏呯數浠诲姟鐘舵�� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); - } else { - steThread.setResetFlag(true); + log.error("淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } - } else { - log.error("鑾峰彇鍏呯數妗╁彿澶辫触锛岃В鏋愬簱浣嶏細{}", wrkCharge.getLocNo()); } } } @@ -2798,206 +2671,6 @@ } } - - public List<String> crn1DemoLocs = new ArrayList<String>(); public String crn1LastLoc = ""; - public List<String> crn2DemoLocs = new ArrayList<String>(); public String crn2LastLoc = ""; - public List<String> crn3DemoLocs = new ArrayList<String>(); public String crn3LastLoc = ""; - public synchronized void demo() { - if (Cools.isEmpty(crn1DemoLocs)) { - crn1DemoLocs = locMastService.getDemoNextLoc(1); - } - if (Cools.isEmpty(crn2DemoLocs)) { - crn2DemoLocs = locMastService.getDemoNextLoc(2); - } - if (Cools.isEmpty(crn3DemoLocs)) { - crn3DemoLocs = locMastService.getDemoNextLoc(3); - } - for (CrnSlave crn : slaveProperties.getCrn()) { - if (!crn.getDemo()) { - continue; - } // 蹇呴』涓烘紨绀虹姸鎬� - - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol == null) { - continue; - } - - // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { - - // filter - if (wrkChargeService.selectCount(new EntityWrapper<WrkCharge>() - .eq("crn_no", crn.getId()).between("wrk_sts", 31, 36)) > 0) { - continue; - } - - int steNo = crn.getId(); - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); - SteProtocol steProtocol = steThread.getSteProtocol(); - BasSte basSte = basSteService.selectById(steNo); - if (Cools.isEmpty(steProtocol, basSte)) { continue; } - - // 鍙湁褰撶┛姊溅绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if (steProtocol.isIdle()) { - - String locNo = null; - Iterator<String> iterator = crn1DemoLocs.iterator(); - if (crn.getId() == 1) { - iterator = crn1DemoLocs.iterator(); - } else if (crn.getId() == 2) { - iterator = crn2DemoLocs.iterator(); - } else if (crn.getId() == 3) { - iterator = crn3DemoLocs.iterator(); - } - while (iterator.hasNext()) { - String next = iterator.next(); - String lastLoc = ""; - if (crn.getId() == 1) { - lastLoc = crn1LastLoc; - } else if (crn.getId() == 2) { - lastLoc = crn2LastLoc; - } else if (crn.getId() == 3) { - lastLoc = crn3LastLoc; - } - if (!Cools.isEmpty(lastLoc)) { - if (!lastLoc.substring(2, 7).equals(next.substring(2, 7)) || !Utils.getGroupRow(lastLoc).equals(Utils.getGroupRow(next))) { - locNo = next; - iterator.remove(); - break; - } else { - iterator.remove(); - } - } else { - locNo = next; - iterator.remove(); - break; - } - - } - if (!Cools.isEmpty(locNo)) { - if (crn.getId() == 1) { - crn1LastLoc = locNo; - } else if (crn.getId() == 2) { - crn2LastLoc = locNo; - } else if (crn.getId() == 3) { - crn3LastLoc = locNo; - } - } - - log.info("{}鍙峰爢鍨涙満瀵箋}搴撲綅杩涜婕旂ず", crn.getId(), locNo); - - String sourceLocNo = Utils.getLocNo(steProtocol.getRow(), steProtocol.getBay(), steProtocol.getLev()); - - WrkCharge wrkCharge = new WrkCharge(); - wrkCharge.setCrnNo(crn.getId()); - wrkCharge.setSteNo(steNo); - wrkCharge.setWrkNo(commonService.getChargeWorkNo(5)); - wrkCharge.setWrkSts(31L); // 31.鐢熸垚婕旂ずID - wrkCharge.setIoPri((double) 10); - wrkCharge.setSourceLocNo(sourceLocNo); - wrkCharge.setLocNo(locNo); - wrkCharge.setMemo("demo"); - if (!wrkChargeService.insert(wrkCharge)) { - log.error("鐢熸垚婕旂ず浠诲姟澶辫触锛屽爢鍨涙満鍙凤細{}锛屽皬杞︼細{}锛屾簮搴撲綅锛歿}锛岀洰鏍囧簱浣嶏細{}", crn.getId(), steNo, sourceLocNo, locNo); - } - } - } - } - } - - /** - * 婕旂ず鍙栬揣 - */ - private void steMoveDemo(CrnSlave slave, CrnProtocol crnProtocol) { - // 鑾峰彇宸ヤ綔妗d俊鎭� - WrkCharge wrkCharge = wrkChargeService.selectOne(new EntityWrapper<WrkCharge>().eq("crn_no", slave.getId()) - .in("wrk_sts", 31, 33, 35)); - if (null == wrkCharge) { - return; - } - SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); - SteProtocol steProtocol = steThread.getSteProtocol(); - if (null == steProtocol) { return; } - if (steProtocol.isIdle()) { - // 31.鐢熸垚婕旂ずID - if (wrkCharge.getWrkSts() == 31L) { - this.letCarBeReady(wrkCharge, steProtocol.getSteNo().intValue()); - wrkCharge.setWrkSts(32L); - wrkCharge.setModiTime(new Date()); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼婕旂ず浠诲姟{}宸ヤ綔妗� 31.鐢熸垚婕旂ずID ==>> 32.灏忚溅璧拌 澶辫触!", wrkCharge.getWrkNo()); - } - // 33.灏忚溅寰呮惉 - } else if (wrkCharge.getWrkSts() == 33L) { - LocMast locMast = locMastService.selectById(wrkCharge.getLocNo()); - // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(crnProtocol.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姸鎬� 33.灏忚溅寰呮惉 => 34.鍚婅溅鎼繍 - Date now = new Date(); - wrkCharge.setWrkSts(34L); - wrkCharge.setCrnStrTime(now); - wrkCharge.setModiTime(now); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼婕旂ず浠诲姟{}宸ヤ綔妗� 33.灏忚溅寰呮惉 => 34.鍚婅溅鎼繍 澶辫触!", wrkCharge.getWrkNo()); - } - } - // 35.灏忚溅灏辩华 - } else if (wrkCharge.getWrkSts() == 35L) { - - int steNo = steProtocol.getSteNo().intValue(); - if (!basSteService.updatePakMk(steNo, "Y")) { - log.error("淇敼绌挎杞︿綔涓氱姸鎬� 澶辫触锛侊紒锛岀┛姊溅={}", steNo); - return; - } - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - SteCommand steCommand = new SteCommand(); - steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� - steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� - SteTaskModeType originByLoc = SteTaskModeType.findOriginByLoc(steProtocol.getRow()); - if (originByLoc.equals(SteTaskModeType.GO_ORIGIN)) { - originByLoc = SteTaskModeType.BACK_ORIGIN; - } else if (originByLoc.equals(SteTaskModeType.BACK_ORIGIN)) { - originByLoc = SteTaskModeType.GO_ORIGIN; - } else { - return; - } - steCommand.setTaskMode(originByLoc); - - 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姸鎬� 35.灏忚溅灏辩华 => 36.灏忚溅璧拌 - wrkCharge.setWrkSts(36L); - wrkCharge.setModiTime(new Date()); - if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼婕旂ず浠诲姟{}宸ヤ綔妗� 35.灏忚溅灏辩华 => 36.灏忚溅璧拌 澶辫触!", wrkCharge.getWrkNo()); - } - } - } - } - - } /** * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝嚭搴撶増) @@ -3059,7 +2732,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