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