From 6daf900a09adcca981f620744bf89851654d88e0 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 05 八月 2025 09:58:08 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/action/ForkLiftAction.java |   58 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/core/action/ForkLiftAction.java b/src/main/java/com/zy/core/action/ForkLiftAction.java
index 3c412e4..5866f9c 100644
--- a/src/main/java/com/zy/core/action/ForkLiftAction.java
+++ b/src/main/java/com/zy/core/action/ForkLiftAction.java
@@ -12,9 +12,7 @@
 import com.zy.core.enums.RedisKeyType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.CommandResponse;
-import com.zy.core.model.command.ForkLiftCommand;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftRedisCommand;
+import com.zy.core.model.command.*;
 import com.zy.core.model.protocol.ForkLiftProtocol;
 import com.zy.core.thread.ForkLiftThread;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +31,7 @@
     @Autowired
     private BasLiftOptService basLiftOptService;
 
-    public synchronized boolean assignWork(Integer liftNo, LiftAssignCommand assignCommand) {
+    public synchronized boolean assignWork(Integer liftNo, ForkLiftAssignCommand assignCommand) {
         ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
         if (forkLiftThread == null) {
             return false;
@@ -44,14 +42,14 @@
             return false;
         }
 
-        LiftRedisCommand redisCommand = new LiftRedisCommand();
+        ForkLiftRedisCommand redisCommand = new ForkLiftRedisCommand();
         redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
         redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
         redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
         redisCommand.setAssignCommand(assignCommand);//鍛戒护
         //浠诲姟鏁版嵁淇濆瓨鍒皉edis
         if (redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand))) {
-            forkLiftThread.setSyncTaskNo(assignCommand.getTaskNo().intValue());
+            forkLiftThread.setSyncTaskNo(assignCommand.getTaskNo());
             return true;
         }
         return false;
@@ -63,12 +61,12 @@
             return false;
         }
 
-        WrkMast wrkMast = wrkMastService.selectByWorkNo(taskNo);
-        if (wrkMast == null) {
-            return false;
-        }
+//        WrkMast wrkMast = wrkMastService.selectByWorkNo(taskNo);
+//        if (wrkMast == null) {
+//            return false;
+//        }
 
-        LiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), LiftRedisCommand.class);
+        ForkLiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), ForkLiftRedisCommand.class);
         if (redisCommand == null) {
             return false;
         }
@@ -88,7 +86,7 @@
             return false;
         }
 
-        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
+        ForkLiftAssignCommand assignCommand = redisCommand.getAssignCommand();
         int commandStep = redisCommand.getCommandStep();
 
         if (commandStep == 0) {
@@ -96,7 +94,7 @@
             ForkLiftCommand command = commands.get(commandStep);
 
             //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
-            if (!forkLiftThread.isIdle()) {
+            if (!forkLiftThread.isDeviceIdle()) {
                 return false;
             }
 
@@ -148,8 +146,42 @@
             response = forkLiftThread.pickAndPut(command);
         } else if (command.getMode().intValue() == ForkLiftTaskModeType.SHUTTLE_SWITCH.id) {
             response = forkLiftThread.shuttleSwitch(command);
+        } else if (command.getMode().intValue() == ForkLiftTaskModeType.MOVE.id) {
+            response = forkLiftThread.move(command);
         }
         return response;
     }
 
+    //鐢宠鎻愬崌鏈鸿祫婧�
+    public synchronized boolean applyForkLift(Integer liftNo, Integer waitBindTaskNo) {
+        ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
+        if (forkLiftThread == null) {
+            return false;
+        }
+        ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+        if (forkLiftProtocol == null) {
+            return false;
+        }
+        if (!forkLiftThread.isIdle()) {
+            return false;
+        }
+
+        List<WrkMast> wrkMasts = wrkMastService.selectLiftWrkMast(liftNo);
+        if (!wrkMasts.isEmpty()) {
+            return false;
+        }
+
+        if (waitBindTaskNo != null) {
+            WrkMast wrkMast = wrkMastService.selectByWorkNo(waitBindTaskNo);
+            if (wrkMast == null) {
+                return false;
+            }
+
+            wrkMast.setLiftNo(liftNo);
+            wrkMast.setModiTime(new Date());
+            wrkMastService.updateById(wrkMast);
+        }
+        return true;
+    }
+
 }

--
Gitblit v1.9.1