From b2e9d1f13a8a88e2963f504926234589fa2d2787 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期五, 11 四月 2025 13:45:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/fyxc_shuttle_wcs' into fyxc_shuttle_wcs

---
 src/main/java/com/zy/core/thread/LiftThread.java                        |    2 
 src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java      |  647 ++++++++
 src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java  |  710 +++++++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java             | 2481 --------------------------------
 src/main/java/com/zy/core/model/LiftSlave.java                          |   14 
 src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java |  562 +++++++
 src/main/java/com/zy/core/thread/impl/NyLiftThread.java                 |    7 
 src/main/resources/application.yml                                      |   26 
 8 files changed, 1,956 insertions(+), 2,493 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 c43df73..8d1b18c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,22 +10,18 @@
 import com.zy.asrs.utils.NotifyUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.MapNode;
-import com.zy.common.model.NavigateNode;
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.model.enums.NavigationMapType;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.*;
 import com.zy.core.News;
-import com.zy.core.action.LiftAction;
 import com.zy.core.action.ShuttleAction;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.dispatcher.ShuttleDispatchUtils;
 import com.zy.core.enums.*;
 import com.zy.core.model.*;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftCommand;
 import com.zy.core.model.command.ShuttleAssignCommand;
 import com.zy.core.model.command.ShuttleCommand;
 import com.zy.core.model.protocol.*;
@@ -73,11 +69,7 @@
     @Autowired
     private ConfigService configService;
     @Autowired
-    private NavigateMapUtils navigateMapUtils;
-    @Autowired
     private NavigateMapData navigateMapData;
-    @Autowired
-    private NavigateUtils navigateUtils;
     @Autowired
     private ShuttleOperaUtils shuttleOperaUtils;
     @Autowired
@@ -87,8 +79,11 @@
     @Autowired
     private BasShuttleChargeService basShuttleChargeService;
     @Autowired
-    private BasLiftOptService basLiftOptService;
+    private TransportLiftInServiceImpl transportLiftInService;
     @Autowired
+    private TransportLiftOutServiceImpl transportLiftOutService;
+    @Autowired
+    private ShuttleMoveServiceImpl shuttleMoveService;
     private LiftAction liftAction;
     @Autowired
     private NoLiftInServiceImpl noLiftInService;
@@ -986,439 +981,6 @@
         return true;
     }
 
-//    /**
-//     * 璐у弶鎻愬崌鏈轰换鍔�
-//     */
-//    public synchronized void forkLiftIoExecute() {
-//        try {
-//            //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-//            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                    .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts));
-//            if (wrkMasts.isEmpty()) {
-//                return;
-//            }
-//
-//            for (WrkMast wrkMast : wrkMasts) {
-//                Integer liftNo = wrkMast.getLiftNo();
-//                if (liftNo == null) {
-//                    //鏈垎閰嶆彁鍗囨満
-//                    Integer staNo = wrkMast.getIoType() == WrkIoType.IN.id ? wrkMast.getSourceStaNo() : wrkMast.getStaNo();
-//                    liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
-//                    if(liftNo == null) {
-//                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-//                        continue;
-//                    }
-//
-//                    ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-//                    if (forkLiftThread == null) {
-//                        continue;
-//                    }
-//                    ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//                    if (forkLiftProtocol == null) {
-//                        continue;
-//                    }
-//
-//                    if (!forkLiftThread.isIdle()) {
-//                        News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
-//                        continue;
-//                    }
-//
-//                    //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-//                    WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-//                    if (liftWrkMast != null) {
-//                        if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-//                            News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                            continue;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-//                        }
-//                    }
-//
-//                    wrkMast.setLiftNo(liftNo);
-//                    wrkMast.setModiTime(new Date());
-//                    wrkMastService.updateById(wrkMast);
-//                    continue;
-//                }
-//
-//                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-//                if (forkLiftThread == null) {
-//                    continue;
-//                }
-//                ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//                if (forkLiftProtocol == null) {
-//                    continue;
-//                }
-//
-//                if (!forkLiftThread.isIdle()) {
-//                    News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
-//                    continue;
-//                }
-//
-//                boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
-//                if (!stepIn) {
-//                    continue;
-//                }
-//
-//                boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
-//                if (!stepOut) {
-//                    continue;
-//                }
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
-
-//    /**
-//     * 鎻愬崌鏈哄叆搴�
-//     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-//     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-//     */
-//    private boolean liftIoExecuteStepIn(WrkMast wrkMast) {
-//        //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------//
-//        Date now = new Date();
-//
-//        //1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-//        if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
-//            //鑾峰彇鐩爣杈撻�佺珯
-//            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-//            if (liftSta == null) {
-//                return false;//鎵句笉鍒扮珯鐐�
-//            }
-//
-//            if (liftSta.getHasTray()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
-//                return false;
-//            }
-//
-//            if (liftSta.getHasCar()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
-//                return false;
-//            }
-//
-//            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
-//            if (forkLiftThread == null) {
-//                return false;
-//            }
-//            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//            if (forkLiftProtocol == null) {
-//                return false;
-//            }
-//            if (!forkLiftThread.isIdle()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-//                return false;
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡叆搴撴ā寮�
-//            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡叆搴撴ā寮忥紝绂佹鍏ュ簱", wrkMast.getWrkNo());
-//                return false;
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-//            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-//            if (liftWrkMast != null) {
-//                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-//                }
-//            }
-//
-//            //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
-//            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev());
-//            if (!checkLevHasShuttle) {
-//                if (wrkMast.getShuttleNo() != null) {
-//                    return false;
-//                }
-//
-//                //鑾峰彇灏忚溅寰呮満浣�
-//                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-//                if (standbyLocNo == null) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-//                    return false;
-//                }
-//
-//                //璋冨害灏忚溅鍘诲緟鏈轰綅
-//                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo);
-//                if (!dispatchShuttle) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
-//                    return false;
-//                }
-//                return false;
-//            }
-//
-//            //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿叆搴�
-//            boolean inMission = ForkLiftUtils.queryInMission(wrkMast.getSourceStaNo(), liftSta.getLiftNo(), wrkMast.getWmsWrkNo());
-//            if (!inMission) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍏ュ簱", wrkMast.getWrkNo());
-//                return false;
-//            }
-//
-//            //鑾峰彇鎻愬崌鏈哄懡浠�
-//            List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev());
-//            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-//            commands.addAll(liftCommands);
-//
-//            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-//            LiftAssignCommand assignCommand = new LiftAssignCommand();
-//            assignCommand.setCommands(commands);
-//            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-//            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-//            assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-//
-//            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
-//            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-//            wrkMast.setModiTime(now);
-//            if (wrkMastService.updateById(wrkMast)) {
-//                //涓嬪彂浠诲姟
-//                forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-//            }
-//            return false;
-//        }
-//        return true;
-//    }
-
-//    /**
-//     * 鎻愬崌鏈轰换鍔�
-//     */
-//    public synchronized void liftIoExecute() {
-//        try {
-//            //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-//            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                    .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts));
-//            if (wrkMasts.isEmpty()) {
-//                return;
-//            }
-//
-//            for (WrkMast wrkMast : wrkMasts) {
-//                Integer liftNo = wrkMast.getLiftNo();
-//                if (liftNo == null) {
-//                    //鏈垎閰嶆彁鍗囨満
-//                    Integer staNo = wrkMast.getIoType() == WrkIoType.IN.id ? wrkMast.getSourceStaNo() : wrkMast.getStaNo();
-//                    liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
-//                    if(liftNo == null) {
-//                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-//                        continue;
-//                    }
-//
-//                    ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-//                    if (forkLiftThread == null) {
-//                        continue;
-//                    }
-//                    ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//                    if (forkLiftProtocol == null) {
-//                        continue;
-//                    }
-//
-//                    if (!forkLiftThread.isIdle()) {
-//                        News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
-//                        continue;
-//                    }
-//
-//                    //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-//                    WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-//                    if (liftWrkMast != null) {
-//                        if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-//                            News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                            continue;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-//                        }
-//                    }
-//
-//                    wrkMast.setLiftNo(liftNo);
-//                    wrkMast.setModiTime(new Date());
-//                    wrkMastService.updateById(wrkMast);
-//                    continue;
-//                }
-//
-//                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-//                if (forkLiftThread == null) {
-//                    continue;
-//                }
-//                ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//                if (forkLiftProtocol == null) {
-//                    continue;
-//                }
-//
-//                if (!forkLiftThread.isIdle()) {
-//                    News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
-//                    continue;
-//                }
-//
-//                boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
-//                if (!stepIn) {
-//                    continue;
-//                }
-//
-//                boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
-//                if (!stepOut) {
-//                    continue;
-//                }
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
-
-//    /**
-//     * 鎻愬崌鏈哄嚭搴�
-//     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-//     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-//     */
-//    private boolean liftIoExecuteStepOut(WrkMast wrkMast) {
-//        //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------//
-//        //103.灏忚溅鎼繍瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑
-//        if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) {
-//            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-//            if (shuttleThread == null) {
-//                return false;
-//            }
-//            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-//            if(shuttleProtocol == null) {
-//                return false;
-//            }
-//
-//            //鑾峰彇婧愮珯
-//            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
-//            if (liftSta == null) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-//                return false;//鎵句笉鍒扮珯鐐�
-//            }
-//
-//            if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
-//                //灏忚溅杩樺湪杈撻�佺珯鐐�
-//                //鑾峰彇灏忚溅寰呮満浣�
-//                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-//                if(standbyLocNo == null) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-//                    return false;
-//                }
-//                //璋冨害灏忚溅鍘诲緟鏈轰綅
-//                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo, wrkMast.getShuttleNo());
-//                if (!dispatchShuttle) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo());
-//                    return false;
-//                }
-//            }
-//
-//            if (liftSta.getHasCar()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo());
-//                return false;
-//            }
-//
-//            if (!liftSta.getHasTray()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏃犳墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo());
-//                return false;
-//            }
-//
-//            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
-//            if (forkLiftThread == null) {
-//                return false;
-//            }
-//            ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-//            if (forkLiftProtocol == null) {
-//                return false;
-//            }
-//            if (!forkLiftThread.isIdle()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftSta.getLiftNo());
-//                return false;
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮�
-//            if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo());
-//                return false;
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-//            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-//            if (liftWrkMast != null) {
-//                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-//                }
-//            }
-//
-//            //璇锋眰涓婄骇绯荤粺锛屾槸鍚﹀厑璁稿嚭搴�
-//            boolean outMission = ForkLiftUtils.queryOutMission(wrkMast.getStaNo());
-//            if (!outMission) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屼笂绾х郴缁熶笉鍏佽鍑哄簱", wrkMast.getWrkNo());
-//                return false;
-//            }
-//
-//            //鑾峰彇鎻愬崌鏈哄懡浠�
-//            List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo());
-//            ArrayList<ForkLiftCommand> commands = new ArrayList<>();
-//            commands.addAll(liftCommands);
-//
-//            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-//            LiftAssignCommand assignCommand = new LiftAssignCommand();
-//            assignCommand.setCommands(commands);
-//            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-//            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-//            assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-//
-//            wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
-//            wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
-//            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-//            wrkMast.setModiTime(new Date());
-//            if (wrkMastService.updateById(wrkMast)) {
-//                //涓嬪彂浠诲姟
-//                forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-//            }
-//            return false;
-//        }
-//        return true;
-//    }
-
-    /**
-     * 璐у弶鎻愬崌鏈轰换鍔″畬鎴�
-     */
-    public synchronized void forkLiftFinished() {
-        try {
-            for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) {
-                //鑾峰彇鎻愬崌鏈轰俊鎭�
-                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId());
-                ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-                if (forkLiftProtocol == null) {
-                    continue;
-                }
-
-                //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂�
-                if (forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.WAITING.id
-                        && forkLiftProtocol.getWrkNo() != 0
-                ) {
-                    //灏嗕换鍔℃。鏍囪涓哄畬鎴�
-                    WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo());
-                    if (wrkMast != null) {
-                        if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) {
-                            //3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts);
-                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                            forkLiftThread.setSyncTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) {
-                            //104.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚
-                            wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
-                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                            forkLiftThread.setSyncTaskNo(0);
-                        } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) {
-                            //306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴�
-                            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);
-                            forkLiftThread.setSyncTaskNo(0);
-                        }
-
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastService.updateById(wrkMast)) {
-                            forkLiftThread.reset();
-                            News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo());
-                        } else {
-                            News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo());
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
     /**
      * 鎻愬崌鏈轰换鍔″畬鎴�
      */
@@ -1972,7 +1534,7 @@
                 } else if ("TRANSPORT_DEVP".equals(wrkMast.getMk())) {
                     noLiftInService.shuttleMoveExecute(wrkMast);
                 } else {
-                    this.shuttleMoveExecuteMove(wrkMast);
+                    shuttleMoveService.shuttleMoveExecuteMove(wrkMast);
                 }
             }
         } catch (Exception e) {
@@ -2017,2043 +1579,14 @@
         String liftLocNo = liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo()));
         if (Utils.getRow(liftLocNo) == Utils.getRow(wrkMast.getSourceLocNo()) && Utils.getBay(liftLocNo) == Utils.getBay(wrkMast.getSourceLocNo())) {
             //鍙栬揣浣嶇疆鏄彁鍗囨満
-            this.shuttleMoveExecuteTransportLiftTake(wrkMast);
+            transportLiftInService.shuttleMoveExecuteTransportLiftTake(wrkMast);
         } else {
             //鏀捐揣浣嶇疆鏄彁鍗囨満
-            this.shuttleMoveExecuteTransportLiftPut(wrkMast);
+            transportLiftOutService.shuttleMoveExecuteTransportLiftPut(wrkMast);
         }
     }
 
-    private void shuttleMoveExecuteTransportLiftTake(WrkMast wrkMast) {
-        boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
-        if (!stepMoveSta) {
-            return;
-        }
-
-        boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
-        if (!stepLiftToShuttleLev) {
-            return;
-        }
-
-        boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
-        if (!stepIntoLift) {
-            return;
-        }
-
-        boolean stepLiftToTargetLev = this.shuttleMoveExecuteTransportLiftStepLiftToTargetLev(wrkMast);//鎻愬崌鏈哄埌鏀捐揣灞�
-        if (!stepLiftToTargetLev) {
-            return;
-        }
-
-        boolean stepOutLift = this.shuttleMoveExecuteTransportLiftStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
-        if (!stepOutLift) {
-            return;
-        }
-
-        boolean stepMoveLoc = this.shuttleMoveExecuteTransportLiftStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-        if (!stepMoveLoc) {
-            return;
-        }
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鍛煎彨灏忚溅鑷冲彇璐х偣
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepCallShuttle(WrkMast wrkMast) {
-        Date now = new Date();
-        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                //灏忚溅鍦ㄥ彇璐х偣
-                wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
-                wrkMast.setModiTime(now);
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo(), null, true);
-            if (!dispatchShuttle) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMastService.updateById(wrkMast);
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftOutStepMoveSta(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鑷崇珯鐐�  鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
-        if (wrkMast.getWrkSts() == WrkStsType.CALL_SHUTTLE_TO_TAKE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪鍙栬揣鐐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-            if (liftThread == null) {
-                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            List<ShuttleCommand> commands = new ArrayList<>();
-            Integer mapType = NavigationMapType.DFX.id;
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
-            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
-            if (moveCommands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞瑙i攣澶辫触
-            }
-            commands.addAll(moveCommands);
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-            commands.addAll(0, liftCommand);
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftThread liftThread = null;
-            LiftProtocol liftProtocol = null;
-            if (wrkMast.getLiftNo() == null) {
-                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-                if (liftThread == null) {
-                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-                }
-
-                liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-
-                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
-                if (liftWrkMast != null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-
-                wrkMast.setModiTime(now);
-                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return false;
-            } else {
-                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-                if (liftThread == null) {
-                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-
-                liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-            if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鎻愬崌鏈哄湪灏忚溅妤煎眰
-                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
-                wrkMast.setModiTime(now);
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            //璋冨害鎻愬崌鏈�
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
-            LiftCommand liftCommand = liftCommands.get(0);
-
-            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
-            wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftOutStepIntoLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-            commands.addAll(liftCommand);
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftOutStepOutLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (!liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    private void shuttleMoveExecuteTransportLiftPut(WrkMast wrkMast) {
-        boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepCallShuttle(wrkMast);//鍛煎彨灏忚溅鑷冲彇璐х偣
-        if (!stepMoveSta) {
-            return;
-        }
-
-        boolean stepTransportLiftOutStepMoveSta = this.shuttleMoveExecuteTransportLiftOutStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
-        if (!stepTransportLiftOutStepMoveSta) {
-            return;
-        }
-
-        boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
-        if (!stepLiftToShuttleLev) {
-            return;
-        }
-
-        boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftOutStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
-        if (!stepIntoLift) {
-            return;
-        }
-
-        boolean stepOutLift = this.shuttleMoveExecuteTransportLiftOutStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
-        if (!stepOutLift) {
-            return;
-        }
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepMoveSta(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-            if (liftThread == null) {
-                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            List<ShuttleCommand> commands = new ArrayList<>();
-            Integer mapType = NavigationMapType.NORMAL.id;
-
-            if (shuttleProtocol.getCurrentLocNo().equals(liftStandByLocNo)) {
-                //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
-                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts);//  灏忚溅绉诲姩鑷崇珯鐐� ==> 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
-                wrkMast.setModiTime(now);
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
-                //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
-                List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
-                if (moveCommands == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                    return false;//璺緞瑙i攣澶辫触
-                }
-                commands.addAll(moveCommands);
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 322.灏忚溅绉诲姩鑷崇珯鐐�
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftThread liftThread = null;
-            LiftProtocol liftProtocol = null;
-            if (wrkMast.getLiftNo() == null) {
-                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-                if (liftThread == null) {
-                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-                }
-
-                liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-
-                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
-                if (liftWrkMast != null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-
-                wrkMast.setModiTime(now);
-                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return false;
-            } else {
-                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-                if (liftThread == null) {
-                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-
-                liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-            if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鎻愬崌鏈哄湪灏忚溅妤煎眰
-                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
-                wrkMast.setModiTime(now);
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            //璋冨害鎻愬崌鏈�
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
-            LiftCommand liftCommand = liftCommands.get(0);
-
-            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
-            wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepIntoLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌鏀捐揣灞�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepLiftToTargetLev(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟鏈粦瀹氭彁鍗囨満", wrkMast.getWrkNo());
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (!liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            if (liftProtocol.getLev() == Utils.getLev(wrkMast.getLocNo())) {
-                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts);//  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴�
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMast.setModiTime(now);
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            //璋冨害鎻愬崌鏈�
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<LiftCommand> liftCommands = liftThread.getMoveWithShuttleCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
-            LiftCommand liftCommand = liftCommands.get(0);
-
-            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
-            wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepOutLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (!liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-            if (liftProtocol.getLev() != Utils.getLev(wrkMast.getLocNo())) {
-                //鎻愬崌鏈轰笉鍦ㄦ斁璐у眰
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼笉鍦ㄦ斁璐у眰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;
-            }
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-                ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-                assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-                assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
-                assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-                assignCommand.setAuto(true);//鑷姩妯″紡
-                assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-                assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-                //鏇存柊灏忚溅鍧愭爣
-                ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
-                ArrayList<ShuttleCommand> commands = new ArrayList<>();
-                commands.add(command);
-
-                assignCommand.setCommands(commands);
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-            commands.addAll(0, liftCommand);
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteTransportLiftStepMoveLoc(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-            List<ShuttleCommand> commands = new ArrayList<>();
-            Integer mapType = NavigationMapType.DFX.id;
-
-            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
-            if (moveCommands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞璁$畻澶辫触
-            }
-            commands.addAll(moveCommands);
-
-            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
-            if (liftCommand == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-            commands.addAll(liftCommand);
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
-            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
-                wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-                wrkMast.setModiTime(now);
-                if (wrkMastService.updateById(wrkMast)) {
-                    //涓嬪彂浠诲姟
-                    return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-                }
-                return false;
-            }
-
-            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-            if (liftThread == null) {
-                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-            }
-
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            List<ShuttleCommand> commands = new ArrayList<>();
-            Integer mapType = NavigationMapType.NORMAL.id;
-
-            if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
-                //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
-                List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
-                if (moveCommands == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                    return false;//璺緞瑙i攣澶辫触
-                }
-                commands.addAll(moveCommands);
-            } else {
-                //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
-                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);//  302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
-                wrkMast.setModiTime(now);
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
-            wrkMast.setModiTime(now);
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-                return false;
-            }
-            return false;
-        }
-        return true;
-    }
-
-//    /**
-//     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
-//     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-//     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-//     */
-//    private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
-//        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
-//        Date now = new Date();
-//
-//        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
-//        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
-//            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-//            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-//            if (shuttleThread == null) {
-//                return false;
-//            }
-//            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-//            if (shuttleProtocol == null) {
-//                return false;
-//            }
-//
-//            //灏忚溅澶勪簬绌洪棽鐘舵��
-//            if (!shuttleThread.isIdle()) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                return false;
-//            }
-//
-//            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-//            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-//            if (liftThread == null) {
-//                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-//                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-//            }
-//
-//            LiftProtocol liftProtocol = liftThread.getStatus();
-//            if (liftProtocol == null) {
-//                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-//                return false;
-//            }
-//
-//            //鑾峰彇鎻愬崌鏈轰綅
-//            String liftLocNo = liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-//            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
-//            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
-//
-//            if (!liftLocNo.equals(wrkMast.getLocNo()) && !liftLocNo.equals(shuttleProtocol.getCurrentLocNo())) {
-//                if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-//                    //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
-//                    wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-//                    wrkMast.setModiTime(now);
-//                    if (wrkMastService.updateById(wrkMast)) {
-//                        //涓嬪彂浠诲姟
-//                        return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-//                    }
-//                    return false;
-//                }
-//            }
-//
-//            if (liftLocNo.equals(shuttleProtocol.getCurrentLocNo())) {
-//                //灏忚溅鍦ㄦ彁鍗囨満鍐�
-//                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);// 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 310.鎻愬崌鏈烘惉杩愬畬鎴�
-//                wrkMast.setModiTime(now);
-//                if (wrkMastService.updateById(wrkMast)) {
-//                    //涓嬪彂浠诲姟
-//                    return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-//                }
-//                return false;
-//            }
-//
-//            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-//            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-//            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-//            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-//            assignCommand.setAuto(true);//鑷姩妯″紡
-//
-//            List<ShuttleCommand> commands = new ArrayList<>();
-//            Integer mapType = NavigationMapType.NORMAL.id;
-//            //鎼繍璐х墿浠诲姟
-//            if ("TRANSPORT".equals(wrkMast.getMk())) {
-//                mapType = NavigationMapType.DFX.id;
-//
-//                List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
-//                if (liftCommand == null) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                    return false;
-//                }
-//                commands.addAll(liftCommand);
-//            }
-//
-//            if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
-//                //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
-//                List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
-//                if (moveCommands == null) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                    return false;//璺緞瑙i攣澶辫触
-//                }
-//                commands.addAll(moveCommands);
-//            }else {
-//                //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
-//                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);//  302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
-//                wrkMast.setModiTime(now);
-//                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-//                wrkMastService.updateById(wrkMast);
-//                return false;
-//            }
-//
-//            assignCommand.setCommands(commands);
-//
-//            wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
-//            wrkMast.setModiTime(now);
-//            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-//            if (wrkMastService.updateById(wrkMast)) {
-//                //涓嬪彂浠诲姟
-//                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
-//                return false;
-//            }
-//            return false;
-//        }
-//        return true;
-//    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-        Date now = new Date();
-        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) {
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            LiftThread liftThread = null;
-            LiftProtocol liftProtocol = null;
-            if (wrkMast.getLiftNo() == null) {
-                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-                if (liftThread == null) {
-                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-                }
-
-                liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-
-                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
-                if (liftWrkMast != null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-
-                wrkMast.setModiTime(now);
-                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-                wrkMastService.updateById(wrkMast);
-                return false;
-            } else {
-                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-                if (liftThread == null) {
-                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-
-                liftProtocol = liftThread.getStatus();
-                if (liftProtocol == null) {
-                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-                    return false;
-                }
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            if (!liftThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
-                //璋冨害鎻愬崌鏈�
-
-                //鑾峰彇鎻愬崌鏈哄懡浠�
-                List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
-                LiftCommand liftCommand = liftCommands.get(0);
-
-                int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-                liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
-                ArrayList<LiftCommand> commands = new ArrayList<>();
-                commands.add(liftCommand);
-
-                //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-                LiftAssignCommand assignCommand = new LiftAssignCommand();
-                assignCommand.setCommands(commands);
-                assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-                assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-                assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
-            }
-
-            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-            List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
-            if (targetNodes == null) {
-                return false;//鏈幏鍙栧埌鑺傜偣
-            }
-            boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
-            if (!checkPathIsAvailable) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
-            }
-            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
-            boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-            if (!result2) {
-                News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞閿佸畾澶辫触
-            }
-            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-
-            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-            if (commands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-                return false;
-            }
-            return false;
-        }
-
-        return true;
-    }
-
-//    /**
-//     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
-//     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-//     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-//     */
-//    private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
-//        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
-//        Date now = new Date();
-//
-//        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-//        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) {
-//            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-//            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-//            if (shuttleThread == null) {
-//                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                return false;
-//            }
-//
-//            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-//            if (shuttleProtocol == null) {
-//                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                return false;
-//            }
-//
-//            LiftThread liftThread = null;
-//            LiftProtocol liftProtocol = null;
-//            if (wrkMast.getLiftNo() == null) {
-//                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
-//                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
-//                if (liftThread == null) {
-//                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
-//                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
-//                }
-//
-//                liftProtocol = liftThread.getStatus();
-//                if (liftProtocol == null) {
-//                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-//                    return false;
-//                }
-//
-//                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-//                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
-//                if (liftWrkMast != null) {
-//                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-//                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-//                }
-//
-//                wrkMast.setModiTime(now);
-//                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
-//                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-//                wrkMastService.updateById(wrkMast);
-//                return false;
-//            }else {
-//                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-//                if (liftThread == null) {
-//                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
-//                    return false;
-//                }
-//
-//                liftProtocol = liftThread.getStatus();
-//                if (liftProtocol == null) {
-//                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
-//                    return false;
-//                }
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-//            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-//            if (liftWrkMast != null) {
-//                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-//                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-//                }
-//            }
-//
-//            if (!liftThread.isIdle()) {
-//                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-//                return false;
-//            }
-//
-//            //灏忚溅澶勪簬绌洪棽鐘舵��
-//            if (!shuttleThread.isIdle()) {
-//                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                return false;
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-//            if (liftProtocol.getHasCar()) {
-//                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-//                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-//            }
-//
-//            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
-//            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
-//                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
-//                //璋冨害鎻愬崌鏈�
-//
-//                //鑾峰彇鎻愬崌鏈哄懡浠�
-//                List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
-//                LiftCommand liftCommand = liftCommands.get(0);
-//
-//                int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-//                liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-//
-//                ArrayList<LiftCommand> commands = new ArrayList<>();
-//                commands.add(liftCommand);
-//
-//                //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-//                LiftAssignCommand assignCommand = new LiftAssignCommand();
-//                assignCommand.setCommands(commands);
-//                assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-//                assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-//                assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-//
-//                //涓嬪彂浠诲姟
-//                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-//                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
-//            }
-//
-//            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-//                //璺ㄥ眰閿佸畾璺緞
-//                //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-//                List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
-//                if (targetNodes == null) {
-//                    return false;//鏈幏鍙栧埌鑺傜偣
-//                }
-//                boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
-//                if (!checkPathIsAvailable) {
-//                    News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                    return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
-//                }
-//                //灏濊瘯閿佸畾鐩爣绔欒矾寰�
-//                boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-//                if (!result2) {
-//                    News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                    return false;//璺緞閿佸畾澶辫触
-//                }
-//                //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-//            }
-//
-//            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-//            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-//            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-//            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-//            assignCommand.setAuto(true);//鑷姩妯″紡
-//
-//            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
-//            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-//            if (commands == null) {
-//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-//                return false;
-//            }
-//
-//            assignCommand.setCommands(commands);
-//
-//            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
-//            wrkMast.setModiTime(now);
-//            if (wrkMastService.updateById(wrkMast)) {
-//                //涓嬪彂浠诲姟
-//                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-//                //瑙﹀彂閫氱煡
-//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
-//                return false;
-//            }
-//            return false;
-//        }
-//
-//        return true;
-//    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
-        Date now = new Date();
-
-        //鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) {
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                return false;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-            if (!liftThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-            if (liftWrkMast != null) {
-                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                }
-            }
-
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
-            if (!liftProtocol.getHasCar()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                return false;
-            }
-
-            //鑾峰彇鎻愬崌鏈哄懡浠�
-            List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), Utils.getLev(wrkMast.getSourceLocNo()), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
-            LiftCommand liftCommand = liftCommands.get(0);
-
-            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
-            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
-
-            ArrayList<LiftCommand> commands = new ArrayList<>();
-            commands.add(liftCommand);
-
-            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
-            LiftAssignCommand assignCommand = new LiftAssignCommand();
-            assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
-            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.LIFT_MOVE_SHUTTLE);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) {
-        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
-        Date now = new Date();
-
-        //鎻愬崌鏈烘惉杩愪腑  307.鎻愬崌鏈烘惉杩愬畬鎴� ==> 308.灏忚溅杩佸嚭鎻愬崌鏈轰腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) {
-            if (wrkMast.getLiftNo() == null) {
-                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
-                return false;
-            }
-
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-            if (liftThread == null) {
-                return false;
-            }
-            LiftProtocol liftProtocol = liftThread.getStatus();
-            if (liftProtocol == null) {
-                return false;
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-                ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-                assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-                assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
-                assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-                assignCommand.setAuto(true);//鑷姩妯″紡
-                assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-                assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-                //鏇存柊灏忚溅鍧愭爣
-                ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
-                ArrayList<ShuttleCommand> commands = new ArrayList<>();
-                commands.add(command);
-
-                assignCommand.setCommands(commands);
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                return false;
-            }
-
-            //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
-            List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
-
-            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
-                return false;//灏忚溅鏈埌杈剧洰鏍囧眰
-            }
-
-            //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
-            if (targetNodes == null) {
-                return false;//鏈幏鍙栧埌鑺傜偣
-            }
-
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-            ArrayList<ShuttleCommand> commands = new ArrayList<>();
-            int targetLev = Utils.getLev(wrkMast.getLocNo());
-            //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
-            ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
-            for (NavigateNode node : targetNodes) {
-                whiteList.add(new int[]{node.getX(), node.getY()});
-            }
-
-            //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护
-            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(liftThread.getLiftLocNo(targetLev), liftThread.getLiftStandByLocNo(targetLev), NavigationMapType.NORMAL.id, whiteList, assignCommand, shuttleThread);
-            if (moveCommands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            commands.addAll(moveCommands);
-            assignCommand.setCommands(commands);
-
-            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
-
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-                //瑙﹀彂閫氱煡
-                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_OUT_LIFT);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
-     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
-     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
-     */
-    private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
-        //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
-        Date now = new Date();
-
-        //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) {
-
-            List<NavigateNode> targetNodes = null;
-            if (wrkMast.getLiftNo() != null) {
-                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-                if (liftWrkMast != null) {
-                    if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                        News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                        return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                    }
-                }
-
-                LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
-                if (liftThread == null) {
-                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                    return false;
-                }
-
-                //灏忚溅鐩爣灏辨槸鎻愬崌鏈轰綅缃紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
-                if (liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo())).equals(wrkMast.getLocNo())) {
-                    wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
-                    wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                    wrkMast.setModiTime(now);
-                    wrkMastService.updateById(wrkMast);
-                    return false;
-                }
-
-//                //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
-//                targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
-            }
-
-            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-            if (shuttleThread == null) {
-                return false;
-            }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
-            if (shuttleProtocol == null) {
-                return false;
-            }
-
-            //灏忚溅澶勪簬绌洪棽鐘舵��
-            if (!shuttleThread.isIdle()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;
-            }
-
-            //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
-            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
-                wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
-                wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                wrkMast.setModiTime(now);
-                wrkMastService.updateById(wrkMast);
-                return false;
-            }
-
-            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
-            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
-            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
-
-            List<ShuttleCommand> commands = new ArrayList<>();
-            List<ShuttleCommand> liftCommand = null;
-            Integer mapType = NavigationMapType.NORMAL.id;
-
-            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
-            if (moveCommands == null) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                return false;//璺緞璁$畻澶辫触
-            }
-
-            commands.addAll(moveCommands);
-
-            assignCommand.setCommands(commands);
 
-            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-            wrkMast.setModiTime(now);
 
-            if (wrkMastService.updateById(wrkMast)) {
-                //涓嬪彂浠诲姟
-                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
-            }
-        }
-        return true;
-    }
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java
new file mode 100644
index 0000000..1823d53
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/ShuttleMoveServiceImpl.java
@@ -0,0 +1,647 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.NotifyUtils;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.NavigateNode;
+import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.LiftUtils;
+import com.zy.common.utils.NavigateMapUtils;
+import com.zy.common.utils.NavigateUtils;
+import com.zy.common.utils.ShuttleOperaUtils;
+import com.zy.core.News;
+import com.zy.core.action.LiftAction;
+import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.ShuttleTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.LiftThread;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class ShuttleMoveServiceImpl {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private ShuttleOperaUtils shuttleOperaUtils;
+    @Autowired
+    private ShuttleAction shuttleAction;
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private LiftAction liftAction;
+    @Autowired
+    private NavigateUtils navigateUtils;
+    @Autowired
+    private NavigateMapUtils navigateMapUtils;
+    @Autowired
+    private NotifyUtils notifyUtils;
+
+    public void shuttleMoveExecuteMove(WrkMast wrkMast) {
+        boolean stepMoveSta = this.shuttleMoveExecuteStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+        if (!stepMoveSta) {
+            return;
+        }
+
+        boolean stepIntoLift = this.shuttleMoveExecuteStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+        if (!stepIntoLift) {
+            return;
+        }
+
+        boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑
+        if (!stepLiftMove) {
+            return;
+        }
+
+        boolean updateShuttleLocation = this.shuttleMoveExecuteStepUpdateShuttleLocation(wrkMast);//鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
+        if (!updateShuttleLocation) {
+            return;
+        }
+
+        boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+        if (!stepMoveLoc) {
+            return;
+        }
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteStepMoveSta(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
+        Date now = new Date();
+
+        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
+        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+                //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴�
+                wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+                wrkMast.setModiTime(now);
+                if (wrkMastService.updateById(wrkMast)) {
+                    //涓嬪彂浠诲姟
+                    return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+                }
+                return false;
+            }
+
+            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+            if (liftThread == null) {
+                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), true);
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            List<ShuttleCommand> commands = new ArrayList<>();
+            Integer mapType = NavigationMapType.NORMAL.id;
+
+            if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
+                //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+                List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+                if (moveCommands == null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                    return false;//璺緞瑙i攣澶辫触
+                }
+                commands.addAll(moveCommands);
+            } else {
+                //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
+                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE.sts);//  302.灏忚溅绉诲姩鑷崇珯鐐� ==> 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
+                wrkMast.setModiTime(now);
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
+            wrkMast.setModiTime(now);
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                //瑙﹀彂閫氱煡
+                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
+                return false;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftThread liftThread = null;
+            LiftProtocol liftProtocol = null;
+            if (wrkMast.getLiftNo() == null) {
+                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+                if (liftThread == null) {
+                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+
+                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+                if (liftWrkMast != null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+
+                wrkMast.setModiTime(now);
+                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return false;
+            } else {
+                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+                if (liftThread == null) {
+                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+                //璋冨害鎻愬崌鏈�
+
+                //鑾峰彇鎻愬崌鏈哄懡浠�
+                List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
+                LiftCommand liftCommand = liftCommands.get(0);
+
+                int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+                liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+                ArrayList<LiftCommand> commands = new ArrayList<>();
+                commands.add(liftCommand);
+
+                //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+                LiftAssignCommand assignCommand = new LiftAssignCommand();
+                assignCommand.setCommands(commands);
+                assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+                assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+                assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+                //涓嬪彂浠诲姟
+                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+            }
+
+//            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+//            List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
+//            if (targetNodes == null) {
+//                return false;//鏈幏鍙栧埌鑺傜偣
+//            }
+//            boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
+//            if (!checkPathIsAvailable) {
+//                News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
+//            }
+//            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
+//            boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
+//            if (!result2) {
+//                News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+//                return false;//璺緞閿佸畾澶辫触
+//            }
+//            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+            if (commands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 304.灏忚溅杩佸叆鎻愬崌鏈轰腑
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                //瑙﹀彂閫氱煡
+                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愪腑
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) {
+        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
+        Date now = new Date();
+
+        //鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) {
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
+                return false;
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                return false;
+            }
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                return false;
+            }
+            if (!liftThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (!liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鑾峰彇鎻愬崌鏈哄懡浠�
+            List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), Utils.getLev(wrkMast.getSourceLocNo()), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
+            LiftCommand liftCommand = liftCommands.get(0);
+
+            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+            ArrayList<LiftCommand> commands = new ArrayList<>();
+            commands.add(liftCommand);
+
+            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+            LiftAssignCommand assignCommand = new LiftAssignCommand();
+            assignCommand.setCommands(commands);
+            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+                //瑙﹀彂閫氱煡
+                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.LIFT_MOVE_SHUTTLE);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-鎻愬崌鏈烘惉杩愬畬鎴愭洿鏂板皬杞﹀潗鏍�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) {
+        //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------//
+        Date now = new Date();
+
+        //鎻愬崌鏈烘惉杩愪腑  307.鎻愬崌鏈烘惉杩愬畬鎴� ==> 308.灏忚溅杩佸嚭鎻愬崌鏈轰腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) {
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝鏁版嵁寮傚父锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
+                return false;
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                return false;
+            }
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                return false;
+            }
+
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+                ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+                assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+                assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
+                assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+                assignCommand.setAuto(true);//鑷姩妯″紡
+                assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+                assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+                //鏇存柊灏忚溅鍧愭爣
+                ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
+                ArrayList<ShuttleCommand> commands = new ArrayList<>();
+                commands.add(command);
+
+                assignCommand.setCommands(commands);
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                return false;
+            }
+
+            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+                return false;//灏忚溅鏈埌杈剧洰鏍囧眰
+            }
+
+//            //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
+//            List<NavigateNode> targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
+//            //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
+//            if (targetNodes == null) {
+//                return false;//鏈幏鍙栧埌鑺傜偣
+//            }
+
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+            ArrayList<ShuttleCommand> commands = new ArrayList<>();
+            int targetLev = Utils.getLev(wrkMast.getLocNo());
+            //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
+            ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
+//            for (NavigateNode node : targetNodes) {
+//                whiteList.add(new int[]{node.getX(), node.getY()});
+//            }
+
+            //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护
+            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(liftThread.getLiftLocNo(targetLev), liftThread.getLiftStandByLocNo(targetLev, false), NavigationMapType.NORMAL.id, whiteList, assignCommand, shuttleThread);
+            if (moveCommands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            commands.addAll(moveCommands);
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                //瑙﹀彂閫氱煡
+                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_OUT_LIFT);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
+        Date now = new Date();
+
+        //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) {
+
+            List<NavigateNode> targetNodes = null;
+            if (wrkMast.getLiftNo() != null) {
+                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+                if (liftWrkMast != null) {
+                    if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                        News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                        return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                    }
+                }
+
+                LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+                if (liftThread == null) {
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;
+                }
+
+                //灏忚溅鐩爣灏辨槸鎻愬崌鏈轰綅缃紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
+                if (liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo())).equals(wrkMast.getLocNo())) {
+                    wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
+                    wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+                    wrkMast.setModiTime(now);
+                    wrkMastService.updateById(wrkMast);
+                    return false;
+                }
+
+//                //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
+//                targetNodes = liftThread.getLiftStaNodes(Utils.getLev(wrkMast.getLocNo()));
+            }
+
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
+            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+                wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚
+                wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+                wrkMast.setModiTime(now);
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+            List<ShuttleCommand> commands = new ArrayList<>();
+            List<ShuttleCommand> liftCommand = null;
+            Integer mapType = NavigationMapType.NORMAL.id;
+
+            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
+            if (moveCommands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;//璺緞璁$畻澶辫触
+            }
+
+            commands.addAll(moveCommands);
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
+            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+            }
+        }
+        return true;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java
new file mode 100644
index 0000000..e2dd25a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TransportLiftInServiceImpl.java
@@ -0,0 +1,710 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.LiftUtils;
+import com.zy.common.utils.ShuttleOperaUtils;
+import com.zy.core.News;
+import com.zy.core.action.LiftAction;
+import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.ShuttleTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.LiftThread;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class TransportLiftInServiceImpl {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private ShuttleOperaUtils shuttleOperaUtils;
+    @Autowired
+    private ShuttleAction shuttleAction;
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private LiftAction liftAction;
+
+    public void shuttleMoveExecuteTransportLiftTake(WrkMast wrkMast) {
+        boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+        if (!stepMoveSta) {
+            return;
+        }
+
+        boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
+        if (!stepLiftToShuttleLev) {
+            return;
+        }
+
+        boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+        if (!stepIntoLift) {
+            return;
+        }
+
+        boolean stepLiftToTargetLev = this.shuttleMoveExecuteTransportLiftStepLiftToTargetLev(wrkMast);//鎻愬崌鏈哄埌鏀捐揣灞�
+        if (!stepLiftToTargetLev) {
+            return;
+        }
+
+        boolean stepOutLift = this.shuttleMoveExecuteTransportLiftStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
+        if (!stepOutLift) {
+            return;
+        }
+
+        boolean stepMoveLoc = this.shuttleMoveExecuteTransportLiftStepMoveLoc(wrkMast);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+        if (!stepMoveLoc) {
+            return;
+        }
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepMoveSta(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
+        Date now = new Date();
+
+        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
+        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+            if (liftThread == null) {
+                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), true);
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            List<ShuttleCommand> commands = new ArrayList<>();
+            Integer mapType = NavigationMapType.NORMAL.id;
+
+            if (shuttleProtocol.getCurrentLocNo().equals(liftStandByLocNo)) {
+                //灏忚溅鍦ㄥ緟鏈轰綅锛岀洿鎺ョЩ鍔ㄥ畬鎴�
+                wrkMast.setWrkSts(WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts);//  灏忚溅绉诲姩鑷崇珯鐐� ==> 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�
+                wrkMast.setModiTime(now);
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
+                //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+                List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+                if (moveCommands == null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                    return false;//璺緞瑙i攣澶辫触
+                }
+                commands.addAll(moveCommands);
+            }
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 322.灏忚溅绉诲姩鑷崇珯鐐�
+            wrkMast.setModiTime(now);
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+//                //瑙﹀彂閫氱煡
+//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING);
+                return false;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepLiftToShuttleLev(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftThread liftThread = null;
+            LiftProtocol liftProtocol = null;
+            if (wrkMast.getLiftNo() == null) {
+                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+                if (liftThread == null) {
+                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+
+                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+                if (liftWrkMast != null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+
+                wrkMast.setModiTime(now);
+                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return false;
+            } else {
+                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+                if (liftThread == null) {
+                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (!liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+            if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+                //鎻愬崌鏈哄湪灏忚溅妤煎眰
+                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
+                wrkMast.setModiTime(now);
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            //璋冨害鎻愬崌鏈�
+            //鑾峰彇鎻愬崌鏈哄懡浠�
+            List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
+            LiftCommand liftCommand = liftCommands.get(0);
+
+            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+            ArrayList<LiftCommand> commands = new ArrayList<>();
+            commands.add(liftCommand);
+
+            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+            LiftAssignCommand assignCommand = new LiftAssignCommand();
+            assignCommand.setCommands(commands);
+            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+            wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+//                //瑙﹀彂閫氱煡
+//                notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepIntoLift(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
+                return false;
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (!liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+            }
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+            if (commands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+//                //瑙﹀彂閫氱煡
+//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌鏀捐揣灞�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepLiftToTargetLev(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟鏈粦瀹氭彁鍗囨満", wrkMast.getWrkNo());
+                return false;
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (!liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (!liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            if (liftProtocol.getLev() == Utils.getLev(wrkMast.getLocNo())) {
+                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts);//  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴�
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMast.setModiTime(now);
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            //璋冨害鎻愬崌鏈�
+            //鑾峰彇鎻愬崌鏈哄懡浠�
+            List<LiftCommand> liftCommands = liftThread.getMoveWithShuttleCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(wrkMast.getLocNo()), LiftCommandModeType.MOVE);
+            LiftCommand liftCommand = liftCommands.get(0);
+
+            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+            ArrayList<LiftCommand> commands = new ArrayList<>();
+            commands.add(liftCommand);
+
+            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+            LiftAssignCommand assignCommand = new LiftAssignCommand();
+            assignCommand.setCommands(commands);
+            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_TARGET_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 鎻愬崌鏈鸿嚦鏀捐揣灞�
+            wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+//                //瑙﹀彂閫氱煡
+//                notifyUtils.notify(String.valueOf(SlaveType.Lift), liftProtocol.getLiftNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepOutLift(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_TARGET_COMPLETE_TRANSPORT_LIFT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (!liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (!liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+            if (liftProtocol.getLev() != Utils.getLev(wrkMast.getLocNo())) {
+                //鎻愬崌鏈轰笉鍦ㄦ斁璐у眰
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼笉鍦ㄦ斁璐у眰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;
+            }
+
+            if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+                ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+                assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+                assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣
+                assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+                assignCommand.setAuto(true);//鑷姩妯″紡
+                assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+                assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+                //鏇存柊灏忚溅鍧愭爣
+                ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo());
+                ArrayList<ShuttleCommand> commands = new ArrayList<>();
+                commands.add(command);
+
+                assignCommand.setCommands(commands);
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                return false;
+            }
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), false);
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
+            if (commands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
+            if (liftCommand == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+            commands.addAll(0, liftCommand);
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+//                //瑙﹀彂閫氱煡
+//                notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING_IN_LIFT);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepMoveLoc(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------//
+        Date now = new Date();
+
+        //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE_TRANSPORT_LIFT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
+
+            List<ShuttleCommand> commands = new ArrayList<>();
+            Integer mapType = NavigationMapType.DFX.id;
+
+            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
+            if (moveCommands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;//璺緞璁$畻澶辫触
+            }
+            commands.addAll(moveCommands);
+
+            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
+            if (liftCommand == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+            commands.addAll(liftCommand);
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE_TRANSPORT_LIFT.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 灏忚溅鏀捐揣涓�
+            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+            }
+        }
+        return true;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java
new file mode 100644
index 0000000..a55af16
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java
@@ -0,0 +1,562 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.LiftUtils;
+import com.zy.common.utils.ShuttleOperaUtils;
+import com.zy.core.News;
+import com.zy.core.action.LiftAction;
+import com.zy.core.action.ShuttleAction;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.dispatcher.ShuttleDispatchUtils;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.ShuttleTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.WrkStsType;
+import com.zy.core.model.command.LiftAssignCommand;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.command.ShuttleAssignCommand;
+import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.thread.LiftThread;
+import com.zy.core.thread.ShuttleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class TransportLiftOutServiceImpl {
+
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private ShuttleOperaUtils shuttleOperaUtils;
+    @Autowired
+    private ShuttleAction shuttleAction;
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private LiftAction liftAction;
+    @Autowired
+    private ShuttleDispatchUtils shuttleDispatchUtils;
+
+    public void shuttleMoveExecuteTransportLiftPut(WrkMast wrkMast) {
+        boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepCallShuttle(wrkMast);//鍛煎彨灏忚溅鑷冲彇璐х偣
+        if (!stepMoveSta) {
+            return;
+        }
+
+        boolean stepTransportLiftOutStepMoveSta = this.shuttleMoveExecuteTransportLiftOutStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐�
+        if (!stepTransportLiftOutStepMoveSta) {
+            return;
+        }
+
+        boolean stepLiftToShuttleLev = this.shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(wrkMast);//鎻愬崌鏈哄埌灏忚溅灞�
+        if (!stepLiftToShuttleLev) {
+            return;
+        }
+
+        boolean stepIntoLift = this.shuttleMoveExecuteTransportLiftOutStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈�
+        if (!stepIntoLift) {
+            return;
+        }
+
+        boolean stepOutLift = this.shuttleMoveExecuteTransportLiftOutStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈�
+        if (!stepOutLift) {
+            return;
+        }
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-鍛煎彨灏忚溅鑷冲彇璐х偣
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftStepCallShuttle(WrkMast wrkMast) {
+        Date now = new Date();
+        //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
+        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+                //灏忚溅鍦ㄥ彇璐х偣
+                wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
+                wrkMast.setModiTime(now);
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo(), null, true);
+            if (!dispatchShuttle) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            wrkMast.setWrkSts(WrkStsType.CALL_SHUTTLE_TO_TAKE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
+            wrkMast.setModiTime(now);
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMastService.updateById(wrkMast);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅绉诲姩鍒扮珯鐐�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftOutStepMoveSta(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------//
+        Date now = new Date();
+
+        //灏忚溅绉诲姩鑷崇珯鐐�  鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
+        if (wrkMast.getWrkSts() == WrkStsType.CALL_SHUTTLE_TO_TAKE.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪鍙栬揣鐐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+            if (liftThread == null) {
+                News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+                return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), true);
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            List<ShuttleCommand> commands = new ArrayList<>();
+            Integer mapType = NavigationMapType.DFX.id;
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+            if (moveCommands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;//璺緞瑙i攣澶辫触
+            }
+            commands.addAll(moveCommands);
+
+            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
+            if (liftCommand == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+            commands.addAll(0, liftCommand);
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_SITE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鍛煎彨灏忚溅鑷冲彇璐х偣 ==> 灏忚溅绉诲姩鑷崇珯鐐逛腑
+            wrkMast.setModiTime(now);
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                return false;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-鎻愬崌鏈哄埌灏忚溅灞�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftOutStepLiftToShuttleLev(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftThread liftThread = null;
+            LiftProtocol liftProtocol = null;
+            if (wrkMast.getLiftNo() == null) {
+                //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
+                liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
+                if (liftThread == null) {
+                    News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
+                    return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈�
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+
+                //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+                if (liftWrkMast != null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+
+                wrkMast.setModiTime(now);
+                wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return false;
+            } else {
+                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+                if (liftThread == null) {
+                    News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                    return false;
+                }
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+            if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+                //鎻愬崌鏈哄湪灏忚溅妤煎眰
+                wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴�
+                wrkMast.setModiTime(now);
+                wrkMastService.updateById(wrkMast);
+                return false;
+            }
+
+            //璋冨害鎻愬崌鏈�
+            //鑾峰彇鎻愬崌鏈哄懡浠�
+            List<LiftCommand> liftCommands = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), LiftCommandModeType.MOVE);
+            LiftCommand liftCommand = liftCommands.get(0);
+
+            int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿
+            liftCommand.setTaskNo(deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
+
+            ArrayList<LiftCommand> commands = new ArrayList<>();
+            commands.add(liftCommand);
+
+            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+            LiftAssignCommand assignCommand = new LiftAssignCommand();
+            assignCommand.setCommands(commands);
+            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+            assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue());
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_TO_SHUTTLE_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞�
+            wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+            wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftOutStepIntoLift(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_TO_SHUTTLE_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo());
+                return false;
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
+            if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
+                //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+            }
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+            if (commands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+            List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false);
+            if (liftCommand == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+            commands.addAll(liftCommand);
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean shuttleMoveExecuteTransportLiftOutStepOutLift(WrkMast wrkMast) {
+        //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------//
+        Date now = new Date();
+        //灏忚溅绉诲姩鍒版彁鍗囨満涓�  灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE_TRANSPORT_LIFT_OUT.sts) {
+            //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            if (wrkMast.getLiftNo() == null) {
+                News.info("{}浠诲姟锛屾彁鍗囨満鏈粦瀹氾紝绂佹娲惧彂", wrkMast.getWrkNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            if (liftWrkMast != null) {
+                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                }
+            }
+
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            if (!liftThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                return false;
+            }
+
+            //灏忚溅澶勪簬绌洪棽鐘舵��
+            if (!shuttleThread.isIdle()) {
+                News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (!liftProtocol.getHasCar()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
+            if (!liftProtocol.getHasTray()) {
+                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
+            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
+            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
+            assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟
+            assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setAuto(true);//鑷姩妯″紡
+
+            //鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+            String liftStandByLocNo = liftThread.getLiftStandByLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo()), false);
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満琛岃蛋鍛戒护
+            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, NavigationMapType.DFX.id, assignCommand, shuttleThread);
+            if (commands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;
+            }
+
+            assignCommand.setCommands(commands);
+
+            wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_TRANSPORT_LIFT_OUT.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦鏀捐揣灞傚畬鎴� ==> 灏忚溅杩佸嚭鎻愬崌鏈轰腑
+            wrkMast.setModiTime(now);
+            if (wrkMastService.updateById(wrkMast)) {
+                //涓嬪彂浠诲姟
+                shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+                return false;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/LiftSlave.java b/src/main/java/com/zy/core/model/LiftSlave.java
index 16780c2..8b13130 100644
--- a/src/main/java/com/zy/core/model/LiftSlave.java
+++ b/src/main/java/com/zy/core/model/LiftSlave.java
@@ -20,11 +20,17 @@
     //鍒�
     private Integer bay;
 
-    //寰呮満浣嶆帓
-    private Integer standByRow;
+    //寰呮満浣嶆帓-in
+    private Integer standByInRow;
 
-    //寰呮満浣嶅垪
-    private Integer standByBay;
+    //寰呮満浣嶅垪-in
+    private Integer standByInBay;
+
+    //寰呮満浣嶆帓-out
+    private Integer standByOutRow;
+
+    //寰呮満浣嶅垪-out
+    private Integer standByOutBay;
 
     //绔欑偣鎺�
     private Integer staRow;
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index e8a7e30..cdfb73c 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -47,7 +47,7 @@
 
     String getLiftLocNo(int lev);//鑾峰彇鎻愬崌鏈轰綅缃�
 
-    String getLiftStandByLocNo(int lev);//鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+    String getLiftStandByLocNo(int lev, boolean in);//鑾峰彇鎻愬崌鏈哄緟鏈轰綅
 
     List<NavigateNode> getLiftStaNodes(int lev);
 
diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index 77a5e0d..24eac5e 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -441,8 +441,11 @@
     }
 
     @Override
-    public String getLiftStandByLocNo(int lev) {
-        return Utils.getLocNo(slave.getStandByRow(), slave.getStandByBay(), lev);
+    public String getLiftStandByLocNo(int lev, boolean in) {
+        if (in) {
+            return Utils.getLocNo(slave.getStandByInRow(), slave.getStandByInBay(), lev);
+        }
+        return Utils.getLocNo(slave.getStandByOutRow(), slave.getStandByOutBay(), lev);
     }
 
     @Override
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 7d70dc0..975905c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -13,7 +13,7 @@
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://127.0.0.1:3306/fyxc_shuttle?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
-    password: zhangchao
+    password: root
   mvc:
     static-path-pattern: /**
   redis:
@@ -44,16 +44,16 @@
 
 # 涓嬩綅鏈洪厤缃�
 wcs-slave:
-  #  # 鍥涘悜绌挎杞�1
-  #  shuttle[0]:
-  #    id: 1
-  #    ip: 192.168.10.81
-  #    port: 8888
-  #    rack: 0
-  #    slot: 0
-  #    threadImpl: NyShuttleThread
-  # 鍥涘悜绌挎杞�2
+  # 鍥涘悜绌挎杞�1
   shuttle[0]:
+    id: 1
+    ip: 192.168.10.81
+    port: 8888
+    rack: 0
+    slot: 0
+    threadImpl: NyShuttleThread
+  # 鍥涘悜绌挎杞�2
+  shuttle[1]:
     id: 2
     ip: 192.168.10.83
     port: 8888
@@ -68,8 +68,10 @@
     threadImpl: NyLiftThread
     row: 2
     bay: 3
-    standByRow: 2
-    standByBay: 1
+    standByInRow: 2
+    standByInBay: 1
+    standByOutRow: 2
+    standByOutBay: 2
     staRow: 2
     staBay: 1
   devp[0]:

--
Gitblit v1.9.1