From cfa65c8f388dafc21fa3687f65d33cb10a2dac81 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期四, 27 十月 2022 09:36:56 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 175 ++++++++++++++-------------------------------------------- 1 files changed, 42 insertions(+), 133 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 0763134..18f276f 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; @@ -898,7 +899,7 @@ } } } - // 娌℃湁灏忚溅 + // 娌℃湁灏忚溅 } else { if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅 @@ -1290,17 +1291,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; } /** @@ -1320,7 +1336,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()); @@ -1640,7 +1656,7 @@ } } else { // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴� - if (locMastService.isOutMost(wrkMast.getLocNo())) { + if (locMastService.isOutMost(wrkMast.getLocNo(), true)) { // ==> 9.鍏ュ簱瀹屾垚 wrkMast.setWrkSts(9L); Date now = new Date(); @@ -1781,128 +1797,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()); } } } @@ -2001,7 +1905,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 { @@ -2504,6 +2410,9 @@ * 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數 */ public synchronized void loopSteCharge() { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + SteChargeType steChargeType = SteChargeType.get(wrkCharge.getLocNo()); + for (SteSlave ste : slaveProperties.getSte()) { SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); -- Gitblit v1.9.1