From a3460ef70c67b64cc4bd28feb957df03b19325ad Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 20 六月 2023 16:31:09 +0800 Subject: [PATCH] 充电逻辑 --- src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 1 src/main/java/com/zy/core/enums/ShuttleChargeType.java | 2 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 480 ++++++++++++++++++++++++++-------------------------- src/main/java/com/zy/core/thread/ShuttleThread.java | 4 4 files changed, 245 insertions(+), 242 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 0a5f651..5ac7089 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1364,10 +1364,8 @@ wrkCharge.setWrkSts(53L);//杩佺Щ瀹屾垚 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); break; - case 56: - if (shuttleProtocol.getBatteryPower() == 1000) { - wrkCharge.setWrkSts(60L);//鍏呯數瀹屾垚 - } + case 56://灏忚溅鍘诲厖鐢垫々涓� + wrkCharge.setWrkSts(57L);//鍒拌揪鍏呯數妗� break; default: } @@ -2394,109 +2392,243 @@ * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 */ public synchronized void loopShuttleCharge() { - for (DevpSlave devpSlave : slaveProperties.getDevp()) { - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� - if (!shuttleProtocol.isRequireCharge()) { - continue; - } - - WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); - if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 - continue; - } - - ShuttleChargeType shuttleCharge = null; - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { - shuttleCharge = chargeType; - break; - } - } - - if (shuttleCharge == null) { - continue; - } - - String chargeLocNo = shuttleCharge.locNo; - wrkCharge = new WrkCharge(); - wrkCharge.setShuttleNo(shuttle.getId()); - wrkCharge.setCharge(shuttleCharge.id); - wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); - wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數 - wrkCharge.setIoPri((double) 10); - wrkCharge.setLocNo(chargeLocNo); - wrkCharge.setMemo("charge"); - wrkCharge.setAppeTime(new Date()); - if (!wrkChargeService.insert(wrkCharge)) { - News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); - continue; - } - - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓� - News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); + for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + //鑾峰彇鍥涘悜绌挎杞︾嚎绋� + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (shuttleProtocol == null) { + continue; } + + //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� + if (!shuttleProtocol.isRequireCharge()) { + continue; + } + + WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue(), WrkChargeType.charge); + if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 + continue; + } + + ShuttleChargeType shuttleCharge = null; + for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { + if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { + shuttleCharge = chargeType; + break; + } + } + + if (shuttleCharge == null) { + continue; + } + + String chargeLocNo = shuttleCharge.locNo; + wrkCharge = new WrkCharge(); + wrkCharge.setShuttleNo(shuttle.getId()); + wrkCharge.setCharge(shuttleCharge.id); + wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); + wrkCharge.setWrkSts(51L); // 21.鍑嗗鍏呯數 + wrkCharge.setIoPri((double) 10); + wrkCharge.setLocNo(chargeLocNo); + wrkCharge.setMemo("charge"); + wrkCharge.setAppeTime(new Date()); + if (!wrkChargeService.insert(wrkCharge)) { + News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); + continue; + } + + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);//鍏呯數涓� + News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); } - - } /** * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔� */ public synchronized void executeShuttleCharge() { - WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); - if (wrkCharge == null) { - return; - } + for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); + if (wrkCharge == null) { + return; + } - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); - if (shuttleThread == null) { - return; - } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return; - } + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); + if (shuttleThread == null) { + return; + } + ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (shuttleProtocol == null) { + return; + } - //褰撳墠绌挎杞﹀簱浣嶅彿 - String currentLocNo = shuttleProtocol.getCurrentLocNo(); - //灏忚溅褰撳墠灞傞珮 - Integer currentLev = currentLocNo == null ? 0 : Utils.getLev(currentLocNo); - //鑾峰彇鎻愬崌鏈� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); - if (liftThread == null) { - return; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return; - } - //鍏呯數搴撲綅鍙� - String chargeLocNo = wrkCharge.getLocNo(); - //鍏呯數搴撲綅灞傞珮 - Integer chargeLocNoLev = Utils.getLev(chargeLocNo); + //褰撳墠绌挎杞﹀簱浣嶅彿 + String currentLocNo = shuttleProtocol.getCurrentLocNo(); + if (currentLocNo == null) { + return; + } + //灏忚溅褰撳墠灞傞珮 + Integer currentLev = Utils.getLev(currentLocNo); + //鑾峰彇鎻愬崌鏈� + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); + if (liftThread == null) { + return; + } + LiftProtocol liftProtocol = liftThread.getLiftProtocol(); + if (liftProtocol == null) { + return; + } + //鍏呯數搴撲綅鍙� + String chargeLocNo = wrkCharge.getLocNo(); + //鍏呯數搴撲綅灞傞珮 + Integer chargeLocNoLev = Utils.getLev(chargeLocNo); - if (wrkCharge.getWrkSts() == 51) { - if (currentLev == chargeLocNoLev) { - //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈� + if (wrkCharge.getWrkSts() == 51) { + if (currentLev == chargeLocNoLev) { + //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈� + //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + + //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); + if (commands == null) { + return;//鏈壘鍒拌矾寰� + } + //杩涜鍏呯數涓� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); + + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + assignCommand.setTaskMode((short) 9);//鍏呯數 + assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); + assignCommand.setCharge(true);//鍏呯數浠诲姟 + + //鍒涘缓鍏呯數鎸囦护 + ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 1);//寮�濮嬪厖鐢� + commands.add(command); + + //鎸囦护闆嗗垎閰� + assignCommand.setCommands(commands); + + wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬� + if (wrkChargeMapper.updateById(wrkCharge) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } + }else { + //涓嶅悓灞傦紝璋冨害灏忚溅鍒板厖鐢垫々鐩爣灞� + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + + //鑾峰彇灏忚溅褰撳墠妤煎眰鐨勭珯鐐瑰彿 + String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev); + + //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞 + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); + if (commands == null) { + return;//鏈壘鍒拌矾寰� + } + + //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 + BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); + if (basDevp == null) { + return;//鎵句笉鍒扮珯鐐逛俊鎭� + } + Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮� + + //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护 + ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500); + commands.add(moveCommand); + + //鍒嗛厤鐩爣搴撲綅 + shuttleProtocol.setLocNo(chargeLocNo); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + assignCommand.setTaskMode((short) 9);//鍏呯數 + assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); + assignCommand.setCharge(true);//鍏呯數浠诲姟 + //鐩爣搴撲綅 + assignCommand.setLocNo(chargeLocNo); + //婧愬簱浣� + assignCommand.setSourceLocNo(currentLocNo); + assignCommand.setCommands(commands); + wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵�� + if (wrkChargeMapper.updateById(wrkCharge) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } + } + + }else if(wrkCharge.getWrkSts() == 53){ + //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄唴 + + //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬� + if (!liftProtocol.isIdle()) { + return; + } + + //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐� + if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { + //灏忚溅涓嶅湪鎻愬崌鏈哄唴 + return; + } + + //缁欐彁鍗囨満鍒嗛厤浠诲姟 + liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� + liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿 + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� + + //鍛戒护list + ArrayList<LiftCommand> commands = new ArrayList<>(); + + //鎻愬崌鏈哄墠寰�鐩爣妤煎眰 + //鑾峰彇鍏呯數搴撲綅鐩爣妤煎眰鍛戒护 + LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), chargeLocNoLev >= 2 ? chargeLocNoLev + 1 : chargeLocNoLev); + commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list + + wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑 + //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣� + LiftAssignCommand assignCommand = new LiftAssignCommand(); + assignCommand.setCommands(commands); + assignCommand.setLiftNo(liftProtocol.getLiftNo()); + assignCommand.setTaskNo(liftProtocol.getTaskNo()); + if (wrkChargeMapper.updateById(wrkCharge) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); + } + + }else if(wrkCharge.getWrkSts() == 55){//55.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴� //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + + Short liftLev = liftProtocol.getLev(); + if (liftLev == null) { + return; + } + //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞� + if (liftLev.intValue() != chargeLocNoLev) { + return;//娌℃湁鍒拌揪鐩爣妤煎眰 + } + + //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 + Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙� + BasDevp basDevp = basDevpService.selectById(staNo); + if (basDevp == null) { + return;//绔欑偣涓嶅瓨鍦� + } //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); if (commands == null) { return;//鏈壘鍒拌矾寰� } + + short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜 + Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮� + Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜 + //鑾峰彇鍛戒护 + ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500); + commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶� + //杩涜鍏呯數涓� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); @@ -2517,167 +2649,33 @@ //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); } - }else { - //涓嶅悓灞傦紝璋冨害灏忚溅鍒板厖鐢垫々鐩爣灞� + }else if (wrkCharge.getWrkSts() == 57) {//57.灏忚溅鍒拌揪鍏呯數妗� + //鍏呯數涓� + //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂 + if (shuttleProtocol.getBatteryPower() >= 1000 && shuttleProtocol.getCurrentVoltage() >= 54000) { + //鍏呮弧锛屾柇寮�鍏呯數 + List<ShuttleCommand> commands = new ArrayList<>(); + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + assignCommand.setTaskMode((short) 0); + assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); + assignCommand.setCharge(true); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //鍒涘缓鍏呯數鎸囦护 + ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 2);//鏂紑鍏呯數 + commands.add(command); - //鑾峰彇灏忚溅褰撳墠妤煎眰鐨勭珯鐐瑰彿 - String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev); + //鎸囦护闆嗗垎閰� + assignCommand.setCommands(commands); - //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞 - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); - if (commands == null) { - return;//鏈壘鍒拌矾寰� - } - - //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 - BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); - if (basDevp == null) { - return;//鎵句笉鍒扮珯鐐逛俊鎭� - } - Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮� - - //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护 - ShuttleCommand moveCommand = shuttleThread.getMoveCommand(basDevpQrCode, liftProtocol.getBarcode(), 1400, ShuttleRunDirection.TOP.id, basDevpQrCode, 1400, 500); - commands.add(moveCommand); - - //鍒嗛厤鐩爣搴撲綅 - shuttleProtocol.setLocNo(chargeLocNo); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - assignCommand.setTaskMode((short) 9);//鍏呯數 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); - assignCommand.setCharge(true);//鍏呯數浠诲姟 - //鐩爣搴撲綅 - assignCommand.setLocNo(chargeLocNo); - //婧愬簱浣� - assignCommand.setSourceLocNo(currentLocNo); - assignCommand.setCommands(commands); - wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵�� - if (wrkChargeMapper.updateById(wrkCharge) > 0) { + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); } - } - }else if(wrkCharge.getWrkSts() == 53){ - //灏忚溅宸茬粡杈惧埌鎻愬崌鏈哄唴 - - //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬� - if (!liftProtocol.isIdle()) { - return; - } - - //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐� - if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { - //灏忚溅涓嶅湪鎻愬崌鏈哄唴 - return; - } - - //缁欐彁鍗囨満鍒嗛厤浠诲姟 - liftProtocol.setTaskNo(wrkCharge.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� - liftProtocol.setShuttleNo(wrkCharge.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿 - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� - - //鍛戒护list - ArrayList<LiftCommand> commands = new ArrayList<>(); - - //鎻愬崌鏈哄墠寰�鐩爣妤煎眰 - //鑾峰彇鍏呯數搴撲綅鐩爣妤煎眰鍛戒护 - LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), chargeLocNoLev >= 2 ? chargeLocNoLev + 1 : chargeLocNoLev); - commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list - - wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑 - //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣� - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(liftProtocol.getTaskNo()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - - }else if(wrkCharge.getWrkSts() == 55){//55.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴� - //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - - Short liftLev = liftProtocol.getLev(); - if (liftLev == null) { - return; - } - //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞� - if (liftLev.intValue() != chargeLocNoLev) { - return;//娌℃湁鍒拌揪鐩爣妤煎眰 - } - - //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 - Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙� - BasDevp basDevp = basDevpService.selectById(staNo); - if (basDevp == null) { - return;//绔欑偣涓嶅瓨鍦� - } - - //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); - if (commands == null) { - return;//鏈壘鍒拌矾寰� - } - - short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜 - Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮� - Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜 - //鑾峰彇鍛戒护 - ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, runDirection, startCode, 1400, 500); - commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶� - - //杩涜鍏呯數涓� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); - - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - assignCommand.setTaskMode((short) 9);//鍏呯數 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); - assignCommand.setCharge(true);//鍏呯數浠诲姟 - - //鍒涘缓鍏呯數鎸囦护 - ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 1);//寮�濮嬪厖鐢� - commands.add(command); - - //鎸囦护闆嗗垎閰� - assignCommand.setCommands(commands); - - wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬� - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - }else if (wrkCharge.getWrkSts() == 56) { - //鍏呯數涓� - //鍒ゆ柇灏忚溅鏄惁鍏呮弧鐢甸噺锛屾弧鐢�1000鎴栫數鍘�54V浠ヤ笂 - if (shuttleProtocol.getBatteryPower() >= 1000 || shuttleProtocol.getCurrentVoltage() >= 54000) { - //鍏呮弧锛屾柇寮�鍏呯數 - List<ShuttleCommand> commands = new ArrayList<>(); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - assignCommand.setTaskMode((short) 0); - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); - assignCommand.setCharge(true); - - //鍒涘缓鍏呯數鎸囦护 - ShuttleCommand command = shuttleThread.getChargeSwitchCommand((short) 2);//鏂紑鍏呯數 - commands.add(command); - - //鎸囦护闆嗗垎閰� - assignCommand.setCommands(commands); - - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); + if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) { + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); + } } } diff --git a/src/main/java/com/zy/core/enums/ShuttleChargeType.java b/src/main/java/com/zy/core/enums/ShuttleChargeType.java index 7a99275..13e94cd 100644 --- a/src/main/java/com/zy/core/enums/ShuttleChargeType.java +++ b/src/main/java/com/zy/core/enums/ShuttleChargeType.java @@ -4,7 +4,7 @@ public enum ShuttleChargeType { - FIRST(1, "1800102"), + FIRST(1, "1800101"), SECOND(2, "1800103"), ; diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java index eb577c1..438ff4a 100644 --- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java @@ -240,6 +240,7 @@ && this.pakMk.equals(true) && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL) && this.taskNo == 0 + && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id ; if (!res) { return res; diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index e05f7e2..7aeff9c 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -923,6 +923,10 @@ command = commands.get(i); for (Short qrCodeValue : qrCodeValues) { //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐� + if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) { + continue; + } + if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) { //瀛樺湪 step = i + 1; -- Gitblit v1.9.1