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