From f305e5244e059c5e43566412f69b180e2e790026 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 05 三月 2026 19:11:43 +0800
Subject: [PATCH] #双工位堆垛机任务下发控制优化

---
 src/main/java/com/zy/asrs/controller/DualCrnController.java |   62 ++++++++++++++++++++++++++-----
 1 files changed, 52 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/DualCrnController.java b/src/main/java/com/zy/asrs/controller/DualCrnController.java
index 1d9123d..48cb7b8 100644
--- a/src/main/java/com/zy/asrs/controller/DualCrnController.java
+++ b/src/main/java/com/zy/asrs/controller/DualCrnController.java
@@ -5,11 +5,14 @@
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.domain.param.DualCrnCommandParam;
+import com.zy.asrs.domain.param.DualCrnUpdateTaskNoParam;
 import com.zy.asrs.domain.vo.DualCrnStateTableVo;
 import com.zy.asrs.entity.BasDualCrnp;
 import com.zy.asrs.service.BasDualCrnpService;
+import com.zy.common.utils.RedisUtil;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.RedisKeyType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.DualCrnCommand;
@@ -21,6 +24,7 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -30,6 +34,8 @@
 
     @Autowired
     private BasDualCrnpService basDualCrnpService;
+    @Autowired
+    private RedisUtil redisUtil;
 
     @PostMapping("/dualcrn/table/crn/state")
     @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満淇℃伅琛�")
@@ -50,6 +56,8 @@
             }
             vo.setTaskNo(p.getTaskNo());
             vo.setTaskNoTwo(p.getTaskNoTwo());
+            vo.setDeviceTaskNo(p.getDeviceTaskNo());
+            vo.setDeviceTaskNoTwo(p.getDeviceTaskNoTwo());
             vo.setMode(p.getModeType() == null ? "-" : p.getModeType().desc);
             vo.setStatus(p.getStatusType() == null ? "-" : p.getStatusType().desc);
             vo.setStatusTwo(p.getStatusTypeTwo() == null ? "-" : p.getStatusTypeTwo().desc);
@@ -61,15 +69,18 @@
             vo.setForkOffsetTwo(p.getForkPosTypeTwo() == null ? "-" : p.getForkPosTypeTwo().desc);
             vo.setLiftPos(p.getLiftPosType() == null ? "-" : p.getLiftPosType().desc);
             vo.setWalkPos(p.getWalkPos() != null && p.getWalkPos() == 0 ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
-            vo.setTaskReceive(p.getTaskReceive() != null && p.getTaskReceive() == 1 ? "鎺ユ敹" : "鏃犱换鍔�");
-            vo.setTaskReceiveTwo(p.getTaskReceiveTwo() != null && p.getTaskReceiveTwo() == 1 ? "鎺ユ敹" : "鏃犱换鍔�");
-            vo.setXspeed(p.getXSpeed());
-            vo.setYspeed(p.getYSpeed());
-            vo.setZspeed(p.getZSpeed());
-            vo.setXdistance(p.getXDistance());
-            vo.setYdistance(p.getYDistance());
-            vo.setXduration(p.getXDuration());
-            vo.setYduration(p.getYDuration());
+            vo.setTaskReceive(String.valueOf(p.getTaskReceive()));
+            vo.setTaskReceiveTwo(String.valueOf(p.getTaskReceiveTwo()));
+            vo.setTaskSend(String.valueOf(p.getTaskSend()));
+            vo.setTaskSendTwo(String.valueOf(p.getTaskSendTwo()));
+
+            vo.setXspeed(String.format("%.2f", p.getXSpeed()));
+            vo.setYspeed(String.format("%.2f", p.getYSpeed()));
+            vo.setZspeed(String.format("%.2f", p.getZSpeed()));
+            vo.setXdistance(String.format("%.2f", p.getXDistance()));
+            vo.setYdistance(String.format("%.2f", p.getYDistance()));
+            vo.setXduration(String.format("%.2f", p.getXDuration()));
+            vo.setYduration(String.format("%.2f", p.getYDuration()));
             vo.setWarnCode(p.getAlarm() == null ? "-" : String.valueOf(p.getAlarm()));
             if (p.getAlarm() != null && p.getAlarm() > 0) {
                 vo.setDeviceStatus("ERROR");
@@ -173,8 +184,39 @@
         if (crnThread == null) {
             return R.error("绾跨▼涓嶅瓨鍦�");
         }
-        DualCrnCommand command = crnThread.getResetCommand(crnNo, station);
+        DualCrnCommand command = crnThread.getResetCommand(9999, crnNo, station);
         MessageQueue.offer(SlaveType.DualCrn, crnNo, new Task(3, command));
         return R.ok();
     }
+
+    @PostMapping("/dualcrn/command/updateTaskNo")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満缂栬緫浠诲姟鍙�")
+    public R dualCrnUpdateTaskNo(@RequestBody DualCrnUpdateTaskNoParam param) {
+        if (Cools.isEmpty(param) || param.getCrnNo() == null || param.getStation() == null || param.getTaskNo() == null) {
+            return R.error("缂哄皯鍙傛暟");
+        }
+        Integer station = param.getStation();
+        if (station != 1 && station != 2) {
+            return R.error("宸ヤ綅鍙傛暟閿欒");
+        }
+        Integer taskNo = param.getTaskNo();
+        if (taskNo < 0) {
+            return R.error("浠诲姟鍙蜂笉鑳藉皬浜�0");
+        }
+        Integer crnNo = param.getCrnNo();
+        DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, crnNo);
+        if (crnThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+        DualCrnProtocol protocol = crnThread.getStatus();
+        if (protocol == null) {
+            return R.error("璁惧鐘舵�佷笉瀛樺湪");
+        }
+        if (station == 1) {
+            redisUtil.set(RedisKeyType.DUAL_CRN_STATION1_FLAG.key + crnNo, taskNo, 60 * 60 * 24);
+        } else {
+            redisUtil.set(RedisKeyType.DUAL_CRN_STATION2_FLAG.key + crnNo, taskNo, 60 * 60 * 24);
+        }
+        return R.ok();
+    }
 }

--
Gitblit v1.9.1