From b74b172daac9b2b21af1149bfcfb935bc879e5ef Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 25 十二月 2025 15:28:16 +0800
Subject: [PATCH] #

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

diff --git a/src/main/java/com/zy/asrs/controller/DualCrnController.java b/src/main/java/com/zy/asrs/controller/DualCrnController.java
new file mode 100644
index 0000000..599eb45
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/DualCrnController.java
@@ -0,0 +1,184 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.asrs.domain.param.DualCrnCommandParam;
+import com.zy.asrs.domain.vo.DualCrnStateTableVo;
+import com.zy.asrs.entity.BasDualCrnp;
+import com.zy.asrs.service.BasDualCrnpService;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.DualCrnCommand;
+import com.zy.core.model.protocol.DualCrnProtocol;
+import com.zy.core.thread.DualCrnThread;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RestController
+public class DualCrnController {
+
+    @Autowired
+    private BasDualCrnpService basDualCrnpService;
+
+    @PostMapping("/dualcrn/table/crn/state")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満淇℃伅琛�")
+    public R dualCrnStateTable() {
+        List<DualCrnStateTableVo> list = new ArrayList<>();
+        List<BasDualCrnp> crnps = basDualCrnpService.selectList(new EntityWrapper<BasDualCrnp>().orderBy("crn_no"));
+        for (BasDualCrnp basDualCrnp : crnps) {
+            DualCrnStateTableVo vo = new DualCrnStateTableVo();
+            vo.setCrnNo(basDualCrnp.getCrnNo());
+            list.add(vo);
+            DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, basDualCrnp.getCrnNo());
+            if (crnThread == null) {
+                continue;
+            }
+            DualCrnProtocol p = crnThread.getStatus();
+            if (p == null) {
+                continue;
+            }
+            vo.setTaskNo(p.getTaskNo());
+            vo.setTaskNoTwo(p.getTaskNoTwo());
+            vo.setMode(p.getModeType() == null ? "-" : p.getModeType().desc);
+            vo.setStatus(p.getStatusType() == null ? "-" : p.getStatusType().desc);
+            vo.setStatusTwo(p.getStatusTypeTwo() == null ? "-" : p.getStatusTypeTwo().desc);
+            vo.setLoading(p.getLoaded() != null && p.getLoaded() == 1 ? "鏈夌墿" : "鏃犵墿");
+            vo.setLoadingTwo(p.getLoadedTwo() != null && p.getLoadedTwo() == 1 ? "鏈夌墿" : "鏃犵墿");
+            vo.setBay(p.getBay());
+            vo.setBayTwo(p.getBayTwo());
+            vo.setLev(p.getLevel());
+            vo.setLevTwo(p.getLevelTwo());
+            vo.setForkOffset(p.getForkPosType() == null ? "-" : p.getForkPosType().desc);
+            vo.setForkOffsetTwo(p.getForkPosTypeTwo() == null ? "-" : p.getForkPosTypeTwo().desc);
+            vo.setLiftPos(p.getLiftPosType() == null ? "-" : p.getLiftPosType().desc);
+            vo.setLiftPosTwo(p.getLiftPosTypeTwo() == null ? "-" : p.getLiftPosTypeTwo().desc);
+            vo.setWalkPos(p.getWalkPos() != null && p.getWalkPos() == 0 ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
+            vo.setWalkPosTwo(p.getWalkPosTwo() != null && p.getWalkPosTwo() == 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.setWarnCode(p.getAlarm() == null ? "-" : String.valueOf(p.getAlarm()));
+            if (p.getAlarm() != null && p.getAlarm() > 0) {
+                vo.setDeviceStatus("ERROR");
+            } else if (p.getTaskNo() != null && p.getTaskNo() > 0 || p.getTaskNoTwo() != null && p.getTaskNoTwo() > 0) {
+                vo.setDeviceStatus("WORKING");
+            } else if (p.getModeType() != null && "AUTO".equals(p.getModeType().name())) {
+                vo.setDeviceStatus("AUTO");
+            } else {
+                vo.setDeviceStatus("OFFLINE");
+            }
+        }
+        return R.ok().add(list);
+    }
+
+    @PostMapping("/dualcrn/command/take")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満鍙栨斁璐у懡浠�")
+    public R dualCrnCommandTake(@RequestBody DualCrnCommandParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.error("缂哄皯鍙傛暟");
+        }
+        Integer crnNo = param.getCrnNo();
+        String sourceLocNo = param.getSourceLocNo();
+        String targetLocNo = param.getTargetLocNo();
+        Integer station = param.getStation();
+        DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, crnNo);
+        if (crnThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+        DualCrnCommand command = crnThread.getPickAndPutCommand(sourceLocNo, targetLocNo, 9999, crnNo, station);
+        MessageQueue.offer(SlaveType.DualCrn, crnNo, new Task(2, command));
+        return R.ok();
+    }
+
+    @PostMapping("/dualcrn/command/pick")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満鍙栬揣鍛戒护")
+    public R dualCrnCommandPick(@RequestBody DualCrnCommandParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.error("缂哄皯鍙傛暟");
+        }
+        Integer crnNo = param.getCrnNo();
+        String targetLocNo = param.getTargetLocNo();
+        Integer station = param.getStation();
+        DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, crnNo);
+        if (crnThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+        DualCrnCommand command = crnThread.getPickCommand(targetLocNo, 9999, crnNo, station);
+        MessageQueue.offer(SlaveType.DualCrn, crnNo, new Task(2, command));
+        return R.ok();
+    }
+
+    @PostMapping("/dualcrn/command/put")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満鏀捐揣鍛戒护")
+    public R dualCrnCommandPut(@RequestBody DualCrnCommandParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.error("缂哄皯鍙傛暟");
+        }
+        Integer crnNo = param.getCrnNo();
+        String targetLocNo = param.getTargetLocNo();
+        Integer station = param.getStation();
+        DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, crnNo);
+        if (crnThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+        DualCrnCommand command = crnThread.getPutCommand(targetLocNo, 9999, crnNo, station);
+        MessageQueue.offer(SlaveType.DualCrn, crnNo, new Task(2, command));
+        return R.ok();
+    }
+    
+
+    @PostMapping("/dualcrn/command/move")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満绉诲姩鍛戒护")
+    public R dualCrnCommandMove(@RequestBody DualCrnCommandParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.error("缂哄皯鍙傛暟");
+        }
+        Integer crnNo = param.getCrnNo();
+        String targetLocNo = param.getTargetLocNo();
+        Integer station = param.getStation();
+        DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, crnNo);
+        if (crnThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+        DualCrnCommand command = crnThread.getMoveCommand(targetLocNo, 9999, crnNo);
+        if (station != null) {
+            command.setStation(station.shortValue());
+        }
+        MessageQueue.offer(SlaveType.DualCrn, crnNo, new Task(2, command));
+        return R.ok();
+    }
+
+    @PostMapping("/dualcrn/command/taskComplete")
+    @ManagerAuth(memo = "鍙屽伐浣嶅爢鍨涙満浠诲姟瀹屾垚纭")
+    public R dualCrnCommandTaskComplete(@RequestBody DualCrnCommandParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.error("缂哄皯鍙傛暟");
+        }
+        Integer crnNo = param.getCrnNo();
+        Integer station = param.getStation();
+        DualCrnThread crnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, crnNo);
+        if (crnThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+        DualCrnCommand command = crnThread.getResetCommand(crnNo, station);
+        MessageQueue.offer(SlaveType.DualCrn, crnNo, new Task(2, command));
+        return R.ok();
+    }
+}

--
Gitblit v1.9.1