From 9998b685bb080dc212d2861bfba819da2e79be8e Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 23 九月 2022 13:32:32 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 168 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 113 insertions(+), 55 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 30aae8a..5086a4b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -869,6 +869,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.鍚婅溅鍏ュ簱涓� @@ -1000,7 +1005,7 @@ if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); } - wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()); +// wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()); } } else { @@ -1149,27 +1154,30 @@ 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.findWaiting(steProtocol.getRow().intValue())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + if (!basSteService.updatePakMk(steNo, "Y")) { + log.error("淇敼绌挎杞︿綔涓氱姸鎬� 澶辫触锛侊紒锛岀┛姊溅={}", steNo); + return; + } - steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); - steCommand.setBay(steProtocol.getBay()); - steCommand.setLev(steProtocol.getLev()); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol.getRow())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� - 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()); - } + 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()); } } } @@ -1359,11 +1367,11 @@ continue; } else { // 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚 - if (wrkCharge.getWrkSts() == 4) { - // 4.杩佸叆灏忚溅 ===>> 6.灏忚溅寰呭叆 - wrkCharge.setWrkSts(6L); + if (wrkCharge.getWrkSts() == 23) { + // 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪 + wrkCharge.setWrkSts(24L); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 4.杩佸叆灏忚溅 ===>> 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { // 鍫嗗灈鏈哄浣� crnThread.setResetFlag(true); @@ -1540,6 +1548,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())) { @@ -1624,7 +1663,7 @@ /** * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� */ - public void carGenerateStore() { + public synchronized void carGenerateStore() { Date now = new Date(); for (SteSlave ste : slaveProperties.getSte()) { // 鑾峰彇绌挎杞︿俊鎭� @@ -1643,19 +1682,19 @@ if (wrkCharge == null) { continue; } else { - if (wrkCharge.getWrkSts() == 11) { - // 11.鐢熸垚鍑哄簱ID ===>> 12.灏忚溅寰呮惉 - wrkCharge.setWrkSts(12L); + if (wrkCharge.getWrkSts() == 21) { + // 21.鍑嗗鍏呯數 ===>> 22.灏忚溅寰呮惉 + wrkCharge.setWrkSts(22L); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 11.鐢熸垚鍑哄簱ID ===>> 12.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===>> 22.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { steThread.setResetFlag(true); } - } else if (wrkCharge.getWrkSts() == 8) { - // 8.灏忚溅鎼叆搴� ===>> 9.鍏ュ簱瀹屾垚 - wrkCharge.setWrkSts(9L); + } else if (wrkCharge.getWrkSts() == 25) { + // 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 + wrkCharge.setWrkSts(26L); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 8.灏忚溅鎼叆搴� ===>> 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { steThread.setResetFlag(true); } @@ -2047,48 +2086,63 @@ /** * 灏忚溅鐢甸噺妫�娴� ===>> 鍙戣捣鍏呯數 */ - public void loopSteCharge() { + 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.statusType.equals(SteStatusType.IDLE)) { + // 鍦ㄧ嚎 绌洪棽 鏃犱綔涓氭爣璁� 涓嶅湪鍏呯數 + 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.selectById(steProtocol.getTaskNo()); + WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue()); - if (wrkCharge == null) { + if (wrkCharge == null && steProtocol.getChargeStatus() == 0) { String idleLoc = basSte.getIdleLoc(); wrkCharge = new WrkCharge(); wrkCharge.setSteNo(ste.getId()); wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); - wrkCharge.setWrkSts(11L); + wrkCharge.setWrkSts(21L); // 21.鍑嗗鍏呯數 wrkCharge.setCrnNo(basSte.getCrnNo()); wrkCharge.setIoPri((double) 10); wrkCharge.setLocNo(idleLoc); - if (wrkChargeService.insert(wrkCharge)) { + 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姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆 - wrkCharge.setWrkSts(6L); + // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 + wrkCharge.setWrkSts(24L); wrkCharge.setModiTime(new Date()); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } else { this.letCarBeWaiting(wrkCharge, ste.getId()); } } else { - // 12.灏忚溅寰呮惉 - if (wrkCharge.getWrkSts() == 12) { + // filter + if (wrkCharge == null || (wrkCharge.getWrkSts() < 26 && steProtocol.getChargeStatus() == 1)) { + continue; + } + + // 22.灏忚溅寰呮惉 + if (wrkCharge.getWrkSts() == 22) { // 鎼皬杞﹁嚦鍏呯數搴撲綅 LocMast locMast = locMastService.selectById(basSte.getIdleLoc()); @@ -2109,19 +2163,20 @@ } else { // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); - // 淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 + // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 Date now = new Date(); - wrkCharge.setWrkSts(4L); + wrkCharge.setWrkSts(23L); wrkCharge.setCrnStrTime(now); wrkCharge.setModiTime(now); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } - } else if (wrkCharge.getWrkSts() == 6L) { + } else if (wrkCharge.getWrkSts() == 24L) { // 灏忚溅琛岄┒鑷冲厖鐢典綅 - if (steProtocol.isIdle()) { + if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) { + if (steProtocol.getChargeStatus() == 1) { continue; } // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- SteCommand steCommand = new SteCommand(); steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙� @@ -2130,26 +2185,29 @@ if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); } else { - // 淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===> 8.灏忚溅鎼叆搴� - wrkCharge.setWrkSts(8L); + // 淇敼宸ヤ綔妗g姸鎬� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅鍘诲厖鐢� + wrkCharge.setWrkSts(25L); Date now = new Date(); wrkCharge.setCrnEndTime(now); wrkCharge.setModiTime(now); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼宸ヤ綔妗g姸鎬� 6.灏忚溅寰呭叆 ===> 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 24.灏忚溅鍒拌揪 ===> 25.灏忚溅鍘诲厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } } - } else if (wrkCharge.getWrkSts() == 9L) { + } 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姸鎬� 9.鍏ュ簱瀹屾垚 ===> 10.搴撳瓨鏇存柊瀹屾垚 - wrkCharge.setWrkSts(10L); + // 淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數 + wrkCharge.setWrkSts(28L); if (!wrkChargeService.updateById(wrkCharge)) { - log.error("淇敼鍏呯數浠诲姟鐘舵�� 9.鍏ュ簱瀹屾垚 ===> 10.搴撳瓨鏇存柊瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + log.error("淇敼鍏呯數浠诲姟鐘舵�� 26.绛夊緟鍏呯數 ===> 28.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); } } } else { -- Gitblit v1.9.1