From 36c6d6b39e2b76080480c5bc90a412d711b76144 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期三, 19 六月 2024 15:54:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/Four-Way-Rack' into Four-Way-Rack

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java                |  102 ++++++++++++++++----
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java    |    9 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java                          |   36 -------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java                    |    1 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java              |    7 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java              |   20 +--
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java           |   77 +++++++--------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java |   28 ++--
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java                     |   14 +-
 9 files changed, 156 insertions(+), 138 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
index c8c57b0..810f4a3 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/LiftAction.java
@@ -114,7 +114,6 @@
 
                 //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
                 liftThread.setProtocolStatus(LiftProtocolStatusType.WAITING);
-                liftThread.commandFinished(taskNo);//璋冪敤瀹屾垚鍚庣画鎸囦护(閮ㄥ垎鎻愬崌鏈烘湁鍚庣画鎸囦护锛屽疄闄呮儏鍐电湅鏄惁鏈夌湡姝e疄鐜版柟娉�)
                 redisUtil.del(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo);
                 return false;//绂佹鍐嶄笅鍙戝懡浠�
             }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 47e9dc2..f6c96a9 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -56,12 +56,6 @@
 
     public List<Motion> generateMotion(Task task) {
         List<Motion> motionList = new ArrayList<>();
-//        switch (Objects.requireNonNull(WorkZoneType.query(task.getTaskSts() == TaskStsType.NEW_INBOUND.sts ? task.getOriginSite() : task.getDestSite()))) {
-//            case FIRST_ZONE:
-//                motionList = this.generateFirstZoneMotion(task);
-//                break;
-//            default:
-//        }
         motionList = this.generateFirstZoneMotion(task);
         return motionList;
     }
@@ -81,21 +75,86 @@
          * 5.绌挎杞﹀叆搴撹嚦鐩爣搴撲綅
          */
         if (task.getTaskSts() == TaskStsType.NEW_INBOUND.sts) {
-//            // lift
-//            LiftThread liftThread = liftDispatcher.queryLiftForTransport(task.getOriginSite());
-//            LiftProtocol liftProtocol = liftThread.getStatus();
-//            if (liftProtocol == null) {
-//                return motionList;
-//            }
+            // locNo
+            String destLoc = task.getDestLoc();
+
+            // shuttle
+            Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>()
+                    .eq(Device::getDeviceNo, task.getShuttleNo())
+                    .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val())
+                    .eq(Device::getHostId, task.getHostId())
+                    .eq(Device::getStatus, 1));
+            if (shuttleDevice == null) {
+                return motionList;
+            }
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue());
+            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
+                return motionList;
+            }
+            if (!shuttleThread.isIdle()) {
+                return motionList;
+            }
+
+            String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
+
+            //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑绌洪棽鍙崲灞傛彁鍗囨満
+            LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true);
+            if (liftThread == null) {
+                return motionList;
+            }
+            Device transferLiftDevice = liftThread.getDevice();
+
+            LiftProtocol liftProtocol = liftThread.getStatus();
+            if (liftProtocol == null || liftProtocol.getLiftNo() == null) {
+                return motionList;
+            }
+
+            //妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
+            boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice);
+            if (shuttleResult) {
+                //瀛樺湪浠诲姟锛岀姝㈣В鏋�
+                return motionList;
+            }
+
+            //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹�
+            boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo()));
+            if (liftResult) {
+                //瀛樺湪浠诲姟锛岀姝㈣В鏋�
+                return motionList;
+            }
+
+            //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 杩涙彁鍗囨満
+            ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+                    .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+                    .eq(ShuttleStandby::getDeviceLev, Utils.getLev(shuttleLocNo))
+                    .eq(ShuttleStandby::getStatus, 1));
+
+            //鑾峰彇灏忚溅寰呮満搴撲綅 ==> 鍑烘彁鍗囨満
+            ShuttleStandby shuttleStandbyFrom = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+                    .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+                    .eq(ShuttleStandby::getDeviceLev, Utils.getLev(destLoc))
+                    .eq(ShuttleStandby::getStatus, 1));
+            if (shuttleStandbyTo == null || shuttleStandbyFrom == null) {
+                return motionList;
+            }
+
+            //绌挎杞﹁繘鎻愬崌鏈哄簱浣嶅彿
+            String liftLocNoTo = shuttleStandbyTo.getDeviceLoc();
+
+            //绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿
+            String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
+
+            //绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
+            String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
+
+            //绌挎杞﹀嚭鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
+            String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc();
 
             // shuttle
 //            ShuttleThread shuttleThread = shuttleDispatcher.queryShuttleWhichConvenient(task, Integer.parseInt(liftThread.getStatus().getLiftNo()));
 //            ShuttleThread shuttleThread = shuttleDispatcher.queryShuttleWhichConvenient(task, 1);
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 6);
-            if (Cools.isEmpty(shuttleThread)) { return motionList; }
-            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
 //            String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
-            String shuttleLocNo = "0100201";
 
 //            // conveyor
 //            DevpSlave devpSlave = conveyorDispatcher.queryByInBound(task.getSourceStaNo());
@@ -747,12 +806,13 @@
 
         String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
 
-        // lift
-        Device transferLiftDevice = Utils.getRecentTransferLift(shuttleLocNo, shuttleProtocol.getShuttleNo());
-        if (transferLiftDevice == null) {
+        //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑绌洪棽鍙崲灞傛彁鍗囨満
+        LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true);
+        if (liftThread == null) {
             return motionList;
         }
-        LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, transferLiftDevice.getId().intValue());
+        Device transferLiftDevice = liftThread.getDevice();
+
         LiftProtocol liftProtocol = liftThread.getStatus();
         if (liftProtocol == null || liftProtocol.getLiftNo() == null) {
             return motionList;
@@ -853,7 +913,7 @@
                     MotionCtgType.SHUTTLE_MOVE_TO_LIFT
             ));
 
-            // 鎻愬崌鏈烘惉杞� 鑷� 杈撻�佺嚎灞�
+            // 鎻愬崌鏈烘惉杞� 鑷� 鍏呯數灞�
             motionList.addAll(kernelService.liftMoveShuttle(
                     MotionDto.build((dto -> {
                         dto.setLiftNo(transferLiftDevice.getId().intValue());
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
index 0f6e51c..3471fbb 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
@@ -21,6 +21,7 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -67,7 +68,7 @@
         assignCommand.setTaskNo(motion.getTaskNo());
         assignCommand.setCommands(list);
 
-        LiftCommand command = new LiftCommand();
+        List<LiftCommand> command = new ArrayList<>();
         switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
             case LIFT_MOVE:
                 // 濡傛灉宸茬粡鍦ㄧ洰鏍囧眰锛岄偅杈瑰眰杩囨护
@@ -77,7 +78,7 @@
                 }
 
                 command = liftThread.getMoveCommand(motion.getTaskNo(), 0, Integer.parseInt(motion.getTarget()), LiftCommandModeType.MOVE);
-                list.add(command);
+                list.addAll(command);
                 return liftAction.assignWork(liftThread.getDevice(), assignCommand);
             case LIFT_WITH_GOODS:
 //                if (liftProtocol.getHasTray()) {
@@ -85,7 +86,7 @@
 //                }
 
                 command = liftThread.getPalletInOutCommand(motion.getTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), motion.getOriDrt(), motion.getTarDrt(), LiftCommandModeType.PALLET_INOUT);
-                list.add(command);
+                list.addAll(command);
                 return liftAction.assignWork(liftThread.getDevice(), assignCommand);
             case LIFT_WITH_SHUTTLE:
                 if (!liftProtocol.getHasCar()) {
@@ -93,7 +94,7 @@
                 }
 
                 command = liftThread.getMoveWithShuttleCommand(motion.getTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), LiftCommandModeType.MOVE_CAR);
-                list.add(command);
+                list.addAll(command);
                 return liftAction.assignWork(liftThread.getDevice(), assignCommand);
             case LIFT_WITH_GOODS_AND_SHUTTLE:
                 return false;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index 62e16cb..402c46e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -157,13 +157,13 @@
                     }
                 })) {
                     //閿佸畾鎻愬崌鏈�
-                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
+                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
 
                     LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                     liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                     liftAssignCommand.setTaskNo(motion.getTaskNo());
                     ArrayList<LiftCommand> list = new ArrayList<>();
-                    list.add(lockCommand);
+                    list.addAll(lockCommand);
                     liftAssignCommand.setCommands(list);
 
                     liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -205,7 +205,7 @@
                     }
                 })) {
                     //閿佸畾鎻愬崌鏈�
-                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
+                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
                     if (lockCommand == null) {
                         return false;
                     }
@@ -214,7 +214,7 @@
                     liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                     liftAssignCommand.setTaskNo(motion.getTaskNo());
                     ArrayList<LiftCommand> list = new ArrayList<>();
-                    list.add(lockCommand);
+                    list.addAll(lockCommand);
                     liftAssignCommand.setCommands(list);
 
                     liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -337,13 +337,13 @@
                     }
                 })) {
                     //瑙i攣鎻愬崌鏈�
-                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
+                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
 
                     LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                     liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                     liftAssignCommand.setTaskNo(motion.getTaskNo());
                     ArrayList<LiftCommand> list = new ArrayList<>();
-                    list.add(lockCommand);
+                    list.addAll(lockCommand);
                     liftAssignCommand.setCommands(list);
 
                     liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -352,7 +352,7 @@
 
                 //鍒ゆ柇灏忚溅鏄惁宸插埌浣�
                 if (liftProtocol.getHasCar()) {
-                    LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//鑾峰彇灏忚溅宸插埌浣嶅懡浠�
+                    List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//鑾峰彇灏忚溅宸插埌浣嶅懡浠�
                     if(signalCommand != null) {
                         boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo());
                         if (!hasKey) {
@@ -360,7 +360,7 @@
                             liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                             liftAssignCommand.setTaskNo(motion.getTaskNo());
                             ArrayList<LiftCommand> list = new ArrayList<>();
-                            list.add(signalCommand);
+                            list.addAll(signalCommand);
                             liftAssignCommand.setCommands(list);
                             liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
                             return false;
@@ -397,13 +397,13 @@
                     }
                 })) {
                     //瑙i攣鎻愬崌鏈�
-                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
+                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
 
                     LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                     liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                     liftAssignCommand.setTaskNo(motion.getTaskNo());
                     ArrayList<LiftCommand> list = new ArrayList<>();
-                    list.add(lockCommand);
+                    list.addAll(lockCommand);
                     liftAssignCommand.setCommands(list);
 
                     liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
@@ -412,7 +412,7 @@
 
                 //鍒ゆ柇灏忚溅鏄惁宸茬寮�
                 if (!liftProtocol.getHasCar()) {
-                    LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//鑾峰彇灏忚溅宸查┚绂诲懡浠�
+                    List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//鑾峰彇灏忚溅宸查┚绂诲懡浠�
                     if(signalCommand != null) {
                         boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo());
                         if (!hasKey) {
@@ -421,7 +421,7 @@
                             liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                             liftAssignCommand.setTaskNo(motion.getTaskNo());
                             ArrayList<LiftCommand> list = new ArrayList<>();
-                            list.add(signalCommand);
+                            list.addAll(signalCommand);
                             liftAssignCommand.setCommands(list);
                             liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
                             return false;
@@ -460,13 +460,13 @@
                     }
                 })) {
                     //瑙i攣鎻愬崌鏈�
-                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
+                    List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
 
                     LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
                     liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
                     liftAssignCommand.setTaskNo(motion.getTaskNo());
                     ArrayList<LiftCommand> list = new ArrayList<>();
-                    list.add(lockCommand);
+                    list.addAll(lockCommand);
                     liftAssignCommand.setCommands(list);
 
                     liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
index 1226aa3..3f2c412 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -20,6 +20,7 @@
 import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
 import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
 import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
 import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
 import com.zy.asrs.wcs.system.entity.Dict;
 import com.zy.asrs.wcs.system.service.DictService;
@@ -126,10 +127,12 @@
                     continue;
                 }
 
-                Device recentTransferLift = Utils.getRecentTransferLift(locNo, Integer.parseInt(device.getDeviceNo()));
-                if (recentTransferLift == null) {
+                //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑绌洪棽鍙崲灞傛彁鍗囨満
+                LiftThread liftThread = liftDispatcher.searchIdleLift(locNo, task.getHostId(), true);
+                if (liftThread == null) {
                     continue;
                 }
+                Device recentTransferLift = liftThread.getDevice();
 
                 //鑾峰彇灏忚溅妤煎眰鎻愬崌鏈哄緟鏈轰綅
                 ShuttleStandby shuttleStandby = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
index 6c3b59b..d03039a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
@@ -207,40 +207,4 @@
         return true;//鏈変换鍔$粦瀹�
     }
 
-    /**
-     * 鑾峰彇璺濈鐩爣搴撲綅鏈�杩戠殑鎻愬崌鏈�
-     */
-    public static Device getRecentTransferLift(String locNo, Integer shuttleNo) {
-        BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
-        DeviceService deviceService = SpringUtils.getBean(DeviceService.class);
-        if (basLiftService == null) {
-            return null;
-        }
-
-        Integer distance = Integer.MAX_VALUE;
-        Long liftDeviceId = null;
-        for (BasLift basLift : basLiftService.list(new LambdaQueryWrapper<BasLift>()
-                .eq(BasLift::getStatus, 1)
-                .eq(BasLift::getTransfer, 1))) {
-            int lev = Utils.getLev(locNo);
-            String liftLocNo = Utils.getLocNo(basLift.getRow(), basLift.getBay(), lev);
-            List<NavigateNode> nodeList = NavigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(locNo)));
-            Integer originPathAllDistance = NavigateUtils.getOriginPathAllDistance(nodeList);//鎬昏窛绂�
-            if (originPathAllDistance < distance) {
-                distance = originPathAllDistance;
-                liftDeviceId = basLift.getDeviceId();
-            }
-        }
-
-        if (liftDeviceId == null) {
-            return null;
-        }
-
-        Device device = deviceService.getById(liftDeviceId);
-        if (device == null) {
-            return null;
-        }
-        return device;
-    }
-
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
index 775572c..58ea574 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/LiftThread.java
@@ -8,6 +8,8 @@
 import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType;
 import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol;
 
+import java.util.List;
+
 public interface LiftThread extends ThreadHandler{
 
     LiftProtocol getStatus();//鑾峰彇鎻愬崌鏈虹姸鎬�
@@ -38,17 +40,15 @@
 
     boolean isLock(ExecuteSupport support);
 
-    boolean commandFinished(Integer taskNo);
-
     //***************鑾峰彇鍛戒护*****************
-    LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//鎻愬崌鏈虹Щ鍔�
+    List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//鎻愬崌鏈虹Щ鍔�
 
-    LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//杞借溅绉诲姩
+    List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//杞借溅绉诲姩
 
-    LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode);//鎵樼洏鍑哄叆
+    List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode);//鎵樼洏鍑哄叆
 
-    LiftCommand getLockCommand(Integer taskNo, Boolean lock);//閿佸畾/瑙i攣鎻愬崌鏈�
+    List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock);//閿佸畾/瑙i攣鎻愬崌鏈�
 
-    LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal);//灏忚溅宸插埌浣�/宸查┒绂讳俊鍙�
+    List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal);//灏忚溅宸插埌浣�/宸查┒绂讳俊鍙�
 
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
index 7b75405..bdedee3 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
@@ -374,12 +374,7 @@
     }
 
     @Override
-    public boolean commandFinished(Integer taskNo) {
-        return false;
-    }
-
-    @Override
-    public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
+    public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
         /**
          * 浠诲姟绫诲瀷
          * 1=绉绘墭鐩橈紱鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囩珯鍙�
@@ -407,26 +402,29 @@
         command.setMode(LiftCommandModeType.MOVE.id);
         command.setOriginLev(sourceLev);
         command.setTargetLev(targetLev);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        return list;
     }
 
     @Override
-    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
+    public List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
         return getMoveCommand(taskNo, sourceLev, targetLev, mode);
     }
 
     @Override
-    public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
+    public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
         return getMoveCommand(taskNo, sourceLev, targetLev, mode);
     }
 
     @Override
-    public LiftCommand getLockCommand(Integer taskNo, Boolean lock) {
+    public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) {
         return null;
     }
 
     @Override
-    public LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal) {
+    public List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal) {
         return null;
     }
 
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
index 3ca11e8..eca2c2e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
@@ -27,8 +27,10 @@
 
 import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 
 @Slf4j
 @SuppressWarnings("all")
@@ -406,36 +408,6 @@
         return extend.getLock();
     }
 
-    @Override
-    public boolean commandFinished(Integer taskNo) {
-        try {
-            LiftCommand command = getTaskClearCommand();
-            String loginToken = requestLoginToken();
-            if (loginToken == null) {
-                return false;
-            }
-
-            HashMap<String, Object> headers = new HashMap<>();
-            headers.put("Authorization", "Bearer " + loginToken);
-
-            String response = new HttpHandler.Builder()
-                    .setUri(API_URL)
-                    .setPath("/RDS/lifterOperation")
-                    .setHeaders(headers)
-                    .setJson(command.getBody())
-                    .build()
-                    .doPost();
-            JSONObject jsonObject = JSON.parseObject(response);
-            Integer code = jsonObject.getInteger("code");
-            if (code.equals(200)) {
-                return true;
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
     //***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
 
     //璇锋眰鐧诲綍
@@ -500,7 +472,7 @@
 
     //绌鸿浇绉诲姩
     @Override
-    public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
+    public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
         int taskMode = 3;//绌鸿浇绉诲姩
 
         HashMap<String, Object> body = new HashMap<>();
@@ -520,12 +492,16 @@
         command.setMode(LiftCommandModeType.MOVE.id);
         command.setOriginLev(0);
         command.setTargetLev(targetLev);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        list.addAll(getTaskClearCommand());
+        return list;
     }
 
     //杞借溅绉诲姩
     @Override
-    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
+    public List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterTask");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -543,12 +519,16 @@
         command.setMode(LiftCommandModeType.MOVE.id);
         command.setOriginLev(sourceLev);
         command.setTargetLev(targetLev);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        list.addAll(getTaskClearCommand());
+        return list;
     }
 
     //鎵樼洏鍑哄叆
     @Override
-    public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
+    public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterTask");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -568,12 +548,16 @@
         command.setTargetLev(targetLev);
         command.setOriginSta(originSta);
         command.setTargetSta(targetSta);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        list.addAll(getTaskClearCommand());
+        return list;
     }
 
     //閿佸畾/瑙i攣鎻愬崌鏈�
     @Override
-    public LiftCommand getLockCommand(Integer taskNo, Boolean lock) {
+    public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterOperation");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -586,12 +570,15 @@
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
         command.setBody(JSON.toJSONString(body));
         command.setMode(lock ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        return list;
     }
 
     //灏忚溅宸插埌浣�/宸查┒绂讳俊鍙�
     @Override
-    public LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal) {
+    public List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterOperation");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -603,11 +590,14 @@
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
         command.setBody(JSON.toJSONString(body));
         command.setMode(signal ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        return list;
     }
 
     //鑾峰彇鎻愬崌鏈轰换鍔℃竻闄ゅ懡浠�
-    private LiftCommand getTaskClearCommand() {
+    private List<LiftCommand> getTaskClearCommand() {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterOperation");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -618,7 +608,10 @@
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
         command.setBody(JSON.toJSONString(body));
         command.setMode(LiftCommandModeType.RESET.id);
-        return command;
+
+        ArrayList<LiftCommand> list = new ArrayList<>();
+        list.add(command);
+        return list;
     }
 
     /**

--
Gitblit v1.9.1