From 15b5002fd412a5d33be5d5c6deb63b3d02c77c41 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期二, 23 九月 2025 14:35:39 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/model/command/LiftCommand.java    |   10 +++++
 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java  |   11 +++--
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   16 +++++++-
 src/main/java/com/zy/core/action/LiftAction.java            |    6 +-
 src/main/java/com/zy/core/enums/RedisKeyType.java           |    2 +
 src/main/java/com/zy/core/thread/impl/NyLiftThread.java     |   28 ++++++++++++-
 6 files changed, 60 insertions(+), 13 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 e1d18d0..d307a5c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1666,7 +1666,13 @@
             int targetLev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
             if (object == null || liftProtocol.getLev() != targetLev) {
                 //鑾峰彇鎻愬崌鏈哄懡浠�
-                LiftCommand liftCommand = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), targetLev);
+                LiftStaProtocol startSta = LiftUtils.getLiftStaByLev(liftProtocol.getLiftNo(), liftProtocol.getLev());
+                LiftStaProtocol targetSta = LiftUtils.getLiftStaByLev(liftProtocol.getLiftNo(), targetLev);
+                if (startSta == null || targetSta == null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛岀珯鐐规暟鎹笉瀛樺湪", wrkMast.getWrkNo(), wrkMast.getLiftNo());
+                    return false;
+                }
+                LiftCommand liftCommand = liftThread.getMoveCommand(commonService.getWorkNo(WrkIoType.PREVIEW_LIFT_MOVE.id), startSta.getSiteId(), targetSta.getSiteId());
                 ArrayList<LiftCommand> commands = new ArrayList<>();
                 commands.add(liftCommand);
 
@@ -1680,6 +1686,12 @@
                 liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満鍦▄}灞傦紝鎻愬崌鏈轰笉鍦ㄥ皬杞﹀眰锛岃皟搴︾Щ鍔ㄤ腑", wrkMast.getWrkNo(), liftProtocol.getLev(), wrkMast.getLiftNo());
                 redisUtil.set(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo(), "lift_moving", 60 * 3);
+                redisUtil.set(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo(), "lock", 8);
+                return false;
+            }
+
+            Object limitObj = redisUtil.get(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo());
+            if (limitObj != null) {
                 return false;
             }
 
@@ -1756,7 +1768,7 @@
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev());
+            LiftCommand liftCommand = liftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getSiteId(), liftSta.getSiteId());
             ArrayList<LiftCommand> commands = new ArrayList<>();
             commands.add(liftCommand);
 
diff --git a/src/main/java/com/zy/core/action/LiftAction.java b/src/main/java/com/zy/core/action/LiftAction.java
index 81a20b7..0626be0 100644
--- a/src/main/java/com/zy/core/action/LiftAction.java
+++ b/src/main/java/com/zy/core/action/LiftAction.java
@@ -129,15 +129,15 @@
 
             LiftCommand lastCommand = commands.get(commandStep - 1);
             if (lastCommand.getMode() == LiftTaskModeType.PICK_PUT.id) {
-                if (liftProtocol.getLev() == lastCommand.getPut()) {
+                if (liftProtocol.getLev() == lastCommand.getPutLev()) {
                     lastCommand.setComplete(true);
                 }
             } else if (lastCommand.getMode() == LiftTaskModeType.SHUTTLE_SWITCH.id) {
-                if (liftProtocol.getLev() == lastCommand.getPut()) {
+                if (liftProtocol.getLev() == lastCommand.getPutLev()) {
                     lastCommand.setComplete(true);
                 }
             } else if (lastCommand.getMode() == LiftTaskModeType.MOVE.id) {
-                if (liftProtocol.getLev() == lastCommand.getPut()) {
+                if (liftProtocol.getLev() == lastCommand.getPutLev()) {
                     lastCommand.setComplete(true);
                 }
             }
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 5724567..4b69139 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -24,6 +24,8 @@
 
     //鎻愬崌鏈虹Щ鍔ㄨ嚦灏忚溅灞傞鐜�
     LIFT_MOVE_TO_SHUTTLE_LIMIT("lift_move_to_shuttle_LIMIT_"),
+    //浠诲姟杩愯闄愬埗
+    TASK_RUN_LIMIT("task_run_limit_"),
 
     //浜ょ淇℃伅
     TRAFFIC_CONTROL_MAP("traffic_control_map"),
diff --git a/src/main/java/com/zy/core/model/command/LiftCommand.java b/src/main/java/com/zy/core/model/command/LiftCommand.java
index e3d5fd2..44c24a5 100644
--- a/src/main/java/com/zy/core/model/command/LiftCommand.java
+++ b/src/main/java/com/zy/core/model/command/LiftCommand.java
@@ -30,11 +30,21 @@
     private Integer pick;
 
     /**
+     * 鍙栬揣灞�
+     */
+    private Integer pickLev;
+
+    /**
      * 鏀捐揣鏁版嵁
      */
     private Integer put;
 
     /**
+     * 鏀捐揣灞�
+     */
+    private Integer putLev;
+
+    /**
      * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴�
      */
     private Boolean complete = false;
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 d531239..1af1ca3 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -3,13 +3,10 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLift;
 import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.BasLiftService;
 import com.zy.asrs.service.DeviceDataLogService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.ExecuteSupport;
@@ -395,6 +392,7 @@
                 || this.liftProtocol.getPlcTaskNo() == null
                 || this.liftProtocol.getProtocolStatus() == null
                 || this.liftProtocol.getModel() == null
+                || this.liftProtocol.getDeviceStatus() == null
                 || this.liftProtocol.getErrorCode() == null
                 || this.liftProtocol.getExtend() == null
         ) {
@@ -407,6 +405,7 @@
 //                && this.liftProtocol.getPlcTaskNo() == 0
                 && this.liftProtocol.getTaskNo() == 0
                 && this.liftProtocol.getModel() == 2
+                && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id
                 && this.liftProtocol.getErrorCode() == 0
                 && !extend.getFrontOverrun()
                 && !extend.getBackOverrun()
@@ -434,6 +433,7 @@
 
         if (this.liftProtocol.getProtocolStatus() == null
                 || this.liftProtocol.getModel() == null
+                || this.liftProtocol.getDeviceStatus() == null
                 || this.liftProtocol.getErrorCode() == null
                 || this.liftProtocol.getExtend() == null
         ) {
@@ -444,6 +444,7 @@
 
         boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
                 && this.liftProtocol.getModel() == 2
+                && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id
                 && this.liftProtocol.getErrorCode() == 0
                 && !extend.getFrontOverrun()
                 && !extend.getBackOverrun()
@@ -495,6 +496,10 @@
         command.setPick(pick);
         command.setPut(put);
 
+        LiftStaProtocol pickSta = findSta(pick);
+        LiftStaProtocol putSta = findSta(put);
+        command.setPickLev(pickSta.getLev());
+        command.setPutLev(putSta.getLev());
         return command;
     }
 
@@ -507,6 +512,10 @@
         command.setPick(pick);
         command.setPut(put);
 
+        LiftStaProtocol pickSta = findSta(pick);
+        LiftStaProtocol putSta = findSta(put);
+        command.setPickLev(pickSta.getLev());
+        command.setPutLev(putSta.getLev());
         return command;
     }
 
@@ -519,6 +528,10 @@
         command.setPick(pick);
         command.setPut(put);
 
+        LiftStaProtocol pickSta = findSta(pick);
+        LiftStaProtocol putSta = findSta(put);
+        command.setPickLev(pickSta.getLev());
+        command.setPutLev(putSta.getLev());
         return command;
     }
 
@@ -643,6 +656,15 @@
         }
     }
 
+    private LiftStaProtocol findSta(Integer staNo) {
+        for (LiftStaProtocol liftStaProtocol : this.liftStaProtocols) {
+            if (liftStaProtocol.getSiteId().equals(staNo)) {
+                return liftStaProtocol;
+            }
+        }
+        return null;
+    }
+
     /**
      * 鎵╁睍瀛楁
      */
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index 44f6187..1ac69f0 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -1055,11 +1055,12 @@
 
         Integer taskId = getTaskId();
         HashMap<String, Object> body = new HashMap<>();
-        if (moveIn) {
-            body.put("requestType", "intoLift");//杩涙彁鍗囨満
-        } else {
-            body.put("requestType", "outLift");//鍑烘彁鍗囨満
-        }
+//        if (moveIn) {
+//            body.put("requestType", "intoLift");//杩涙彁鍗囨満
+//        } else {
+//            body.put("requestType", "outLift");//鍑烘彁鍗囨満
+//        }
+        body.put("requestType", "move");//绉诲姩鍛戒护
         body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈�
         body.put("path", path);
         request.setBody(body);

--
Gitblit v1.9.1