From 64da17c397d02f8b1d19b9c46134eb8469957c46 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 26 九月 2022 11:23:45 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 463 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 454 insertions(+), 9 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 b5895a4..201904d 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -15,6 +15,7 @@ import com.zy.common.model.MatDto; import com.zy.common.model.SearchLocParam; import com.zy.common.model.StartupDto; +import com.zy.common.service.CommonService; import com.zy.common.utils.CollectionUtils; import com.zy.common.utils.HttpHandler; import com.zy.core.CrnThread; @@ -32,6 +33,7 @@ import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; +import com.zy.core.thread.SiemensDevpThread; import com.zy.core.thread.SteThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -41,10 +43,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -78,6 +77,10 @@ private BasCrnErrorMapper basCrnErrorMapper; @Autowired private BasSteService basSteService; + @Autowired + private WrkChargeService wrkChargeService; + @Autowired + private CommonService commonService; /** * 缁勬墭 @@ -479,6 +482,10 @@ continue; } + // 缃《浠诲姟 + wrkMast.setIoPri((double) 9999); + wrkMastMapper.updateById(wrkMast); + // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 if (locMastService.isOutMost(wrkMast.getLocNo())) { // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴� @@ -650,6 +657,10 @@ continue; } + // 缃《浠诲姟 + wrkMast.setIoPri((double) 9999); + wrkMastMapper.updateById(wrkMast); + // 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱 if (locMastService.isOutMost(wrkMast.getSourceLocNo())) { // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� @@ -817,6 +828,10 @@ return; } + // 缃《浠诲姟 + wrkMast.setIoPri((double) 9999); + wrkMastMapper.updateById(wrkMast); + // 婧愬簱浣� ===>> 鏈�澶栧眰搴撲綅 if (locMastService.isOutMost(wrkMast.getSourceLocNo())) { // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 @@ -851,6 +866,11 @@ 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.鍚婅溅鍏ュ簱涓� @@ -913,6 +933,7 @@ } } else { + // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞� Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo()); // 鏈夊皬杞� @@ -981,9 +1002,13 @@ if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } - wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()); +// wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()); } } else { + + // 鎶婅揣鎼埌涓存椂瀛樻斁璐т綅 todo:luxiaotao + + // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) { this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); @@ -1117,6 +1142,39 @@ if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } + } + } + } + + public void letCarBeWaiting(WrkCharge wrkCharge, Integer steNo) { + // 鑾峰彇绌挎杞︿俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { return; } + + if (!basSteService.updatePakMk(steNo, "Y")) { + log.error("淇敼绌挎杞︿綔涓氱姸鎬� 澶辫触锛侊紒锛岀┛姊溅={}", steNo); + return; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol.getRow())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + + 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()); } } } @@ -1298,9 +1356,33 @@ // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectCrnWaiting(crnProtocol.getTaskNo().intValue()); if (wrkMast == null) { - log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); - continue; + + // 鍏呯數浠诲姟 + WrkCharge wrkCharge = wrkChargeService.selectById(crnProtocol.getTaskNo()); + if (wrkCharge == null) { + log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); + continue; + } else { + // 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚 + if (wrkCharge.getWrkSts() == 23) { + // 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪 + wrkCharge.setWrkSts(24L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + if (!steThread.confirmPos()) { + log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬厖鐢典换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); + } + } + } + } + } + if (wrkMast == null) { continue; } if (wrkMast.getIoType() != 11) { // 鍏ュ簱 ==>> 璐х墿鎼叆搴� if (wrkMast.getWrkSts() == 7){ @@ -1463,6 +1545,37 @@ } 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())) { @@ -1547,7 +1660,7 @@ /** * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� */ - public void carGenerateStore() { + public synchronized void carGenerateStore() { Date now = new Date(); for (SteSlave ste : slaveProperties.getSte()) { // 鑾峰彇绌挎杞︿俊鎭� @@ -1560,8 +1673,33 @@ } else { // 鏌ヨ鏄惁鏈夊緟鍏ュ簱鐨勪换鍔� WrkMast wrkMast = wrkMastMapper.selectCarWaiting(steProtocol.getTaskNo().intValue()); - if (wrkMast == null) { continue; } + if (wrkMast == null) { + // 鍏呯數浠诲姟 + WrkCharge wrkCharge = wrkChargeService.selectById(steProtocol.getTaskNo()); + if (wrkCharge == null) { + continue; + } else { + if (wrkCharge.getWrkSts() == 21) { + // 21.鍑嗗鍏呯數 ===>> 22.灏忚溅寰呮惉 + wrkCharge.setWrkSts(22L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===>> 22.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } else if (wrkCharge.getWrkSts() == 25) { + // 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 + wrkCharge.setWrkSts(26L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } + } + } + if (wrkMast == null) { continue; } switch (wrkMast.getWrkSts().intValue()) { case 2: // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 @@ -1942,4 +2080,311 @@ } } + /** + * 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數 + */ + public synchronized void loopSteCharge() { + for (SteSlave ste : slaveProperties.getSte()) { + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); + SteProtocol steProtocol = steThread.getSteProtocol(); + BasSte basSte = basSteService.selectById(ste.getId()); + if (Cools.isEmpty(steProtocol, basSte)) { continue; } + try { + // 鍦ㄧ嚎 绌洪棽 鏃犱綔涓氭爣璁� 涓嶅湪鍏呯數 + if (steProtocol.getMode() == 0 + || !steProtocol.statusType.equals(SteStatusType.IDLE) + || basSte.getPakMk().equals("Y") +// || steProtocol.getChargeStatus() == 1 + ) { + continue; + } + if (!steProtocol.isEnable()) { + continue; + } + if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { + continue; + } + WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue()); + + if (wrkCharge == null && steProtocol.getChargeStatus() == 0) { + String idleLoc = basSte.getIdleLoc(); + wrkCharge = new WrkCharge(); + wrkCharge.setSteNo(ste.getId()); + wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); + wrkCharge.setWrkSts(21L); // 21.鍑嗗鍏呯數 + wrkCharge.setCrnNo(basSte.getCrnNo()); + wrkCharge.setIoPri((double) 10); + wrkCharge.setLocNo(idleLoc); + if (!wrkChargeService.insert(wrkCharge)) { + log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); + continue; + } + + // 澶勪簬鍏呯數搴撲綅缁� + if (Utils.getGroupRow(idleLoc).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(idleLoc) && steProtocol.getLev() == Utils.getLev(idleLoc)) { + // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 + wrkCharge.setWrkSts(24L); + wrkCharge.setModiTime(new Date()); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } else { + this.letCarBeWaiting(wrkCharge, ste.getId()); + } + + } else { + // filter + if (wrkCharge == null || (wrkCharge.getWrkSts() < 26 && steProtocol.getChargeStatus() == 1)) { + continue; + } + + // 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()); + } + } + + } 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())); + if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅鍘诲厖鐢� + wrkCharge.setWrkSts(25L); + Date now = new Date(); + wrkCharge.setCrnEndTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅鍘诲厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } + } + } + } else if (wrkCharge.getWrkSts() == 26) { + 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); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } + } else { + log.error("鑾峰彇鍏呯數妗╁彿澶辫触锛岃В鏋愬簱浣嶏細{}", wrkCharge.getLocNo()); + } + } + } + } catch (Exception e) { + log.error("fail", e); + } + } + } + + + 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) { + + 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); + + } + +// } + } + + /** + * 鍫嗗灈鏈烘紨绀� ===>> 搴撲綅绉昏浆 + */ + public synchronized void crnDemoOfLocMove(){ + 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; } + + log.info("{}鍙峰爢鍨涙満姝e湪婕旂ず", crn.getId()); + + // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { +// // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭� +// WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId()); +// if (null != wrkMast) { continue; } +// +// LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId()); +// LocMast loc = locMastService.queryDemoLoc(crn.getId()); +// if (null == sourceLoc || null == loc) { continue; } +// +// String sourceLocNo = sourceLoc.getLocNo(); +// String locNo = loc.getLocNo(); +// +// // 鑾峰彇宸ヤ綔鍙� +// int workNo = commonService.getWorkNo(WorkNoType.PICK.type); +// // 淇濆瓨宸ヤ綔妗� +// wrkMast = new WrkMast(); +// wrkMast.setWrkNo(workNo); +// wrkMast.setIoTime(new Date()); +// wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID +// wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 +// wrkMast.setIoPri(13D); +// wrkMast.setCrnNo(crn.getId()); +// wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� +// wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 +// wrkMast.setFullPlt("N"); // 婊℃澘锛歒 +// wrkMast.setPicking("N"); // 鎷f枡 +// wrkMast.setExitMk("N"); // 閫�鍑� +// wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 +// wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� +// wrkMast.setLinkMis("N"); +// wrkMast.setAppeTime(new Date()); +// wrkMast.setModiTime(new Date()); +// int res = wrkMastMapper.insert(wrkMast); +// if (res == 0) { +// throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); +// } +// // 宸ヤ綔妗f槑缁嗕繚瀛� +// List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); +// for (LocDetl locDetl : locDetls) { +// WrkDetl wrkDetl = new WrkDetl(); +// wrkDetl.sync(locDetl); +// wrkDetl.setWrkNo(workNo); +// wrkDetl.setIoTime(new Date()); +// wrkDetl.setAnfme(locDetl.getAnfme()); +// wrkDetl.setAppeTime(new Date()); +// wrkDetl.setModiTime(new Date()); +// if (!wrkDetlService.insert(wrkDetl)) { +// throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); +// } +// } +// // 淇敼婧愬簱浣嶇姸鎬� +// if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { +// sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 +// sourceLoc.setModiTime(new Date()); +// if (!locMastService.updateById(sourceLoc)){ +// throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); +// } +// } else { +// throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�"); +// } +// // 淇敼鐩爣搴撲綅鐘舵�� +// if (loc.getLocSts().equals("O")) { +// loc.setLocSts("S"); // S.鍏ュ簱棰勭害 +// loc.setModiTime(new Date()); +// if (!locMastService.updateById(loc)) { +// throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); +// } +// } else { +// throw new CoolException("绉昏浆澶辫触"); +// } + + } + + } + } + } -- Gitblit v1.9.1