From 50435a81915932eda06b7f1afd48f9ff1ae84f19 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期四, 10 四月 2025 17:50:28 +0800
Subject: [PATCH] 1
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskController.java | 130 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 130 insertions(+), 0 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskController.java
index bc93451..2a51fe1 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskController.java
@@ -1,22 +1,39 @@
package com.zy.asrs.wcs.core.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wcs.common.annotation.OperationLog;
import com.zy.asrs.wcs.common.domain.BaseParam;
import com.zy.asrs.wcs.common.domain.KeyValVo;
import com.zy.asrs.wcs.common.domain.PageParam;
+import com.zy.asrs.wcs.core.domain.param.ShuttleCommandParam;
+import com.zy.asrs.wcs.core.domain.param.ShuttleCommandRollbackParam;
+import com.zy.asrs.wcs.core.domain.param.ShuttleCommandUpdateCompleteParam;
import com.zy.asrs.wcs.core.entity.Motion;
import com.zy.asrs.wcs.core.entity.MotionLog;
import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.entity.TaskLog;
+import com.zy.asrs.wcs.core.model.NavigateNode;
+import com.zy.asrs.wcs.core.model.command.ShuttleAssignCommand;
+import com.zy.asrs.wcs.core.model.command.ShuttleCommand;
+import com.zy.asrs.wcs.core.model.command.ShuttleRedisCommand;
+import com.zy.asrs.wcs.core.model.enums.ShuttleCommandModeType;
import com.zy.asrs.wcs.core.model.enums.TaskStsType;
import com.zy.asrs.wcs.core.service.MotionLogService;
import com.zy.asrs.wcs.core.service.MotionService;
import com.zy.asrs.wcs.core.service.TaskLogService;
import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.core.utils.RedisUtil;
+import com.zy.asrs.wcs.core.utils.Utils;
+import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
import com.zy.asrs.wcs.system.controller.BaseController;
import com.zy.asrs.wcs.utils.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +56,10 @@
private MotionService motionService;
@Autowired
private MotionLogService motionLogService;
+ @Autowired
+ private RedisUtil redisUtil;
+ @Autowired
+ private ObjectMapper objectMapper;
@PreAuthorize("hasAuthority('core:task:list')")
@PostMapping("/task/page")
@@ -180,6 +201,7 @@
MotionLog motionLog = new MotionLog();
motionLog.sync(motion);
motionLog.setUpdateTime(new Date());
+ motionLog.setHostId(null);
motionLogService.save(motionLog);
}
@@ -190,4 +212,112 @@
return R.ok("鍙栨秷鎴愬姛");
}
+
+ @PreAuthorize("hasAuthority('core:task:list')")
+ @PostMapping("/task/shuttleCommand")
+ public R shuttleCommand(@RequestBody ShuttleCommandParam param) {
+ Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_WORK_FLAG + param.getTaskNo());
+ if (object == null) {
+ return R.ok();
+ }
+
+ ShuttleRedisCommand redisCommand = null;
+ try {
+ redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class);
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (redisCommand == null) {
+ return R.ok();
+ }
+
+ HashMap<String, Object> hashMap = new HashMap<>();
+ ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
+ List<ShuttleCommand> commands = assignCommand.getCommands();
+ Integer commandStep = redisCommand.getCommandStep();//褰撳墠姝ュ簭
+
+ ArrayList<JSONObject> list = new ArrayList<>();
+ int index = 0;
+ for (ShuttleCommand command : commands) {
+ JSONObject data = JSON.parseObject(JSON.toJSONString(command));
+ data.put("index", index++);
+ data.put("commandStep", commandStep);
+
+ ShuttleCommandModeType type = ShuttleCommandModeType.get(command.getMode());
+ if (type == null) {
+ data.put("mode$", command.getMode());
+ }else {
+ data.put("mode$", type.desc);
+ }
+
+ if (command.getNodes() != null) {
+ List<NavigateNode> nodes = command.getNodes();
+ NavigateNode start = nodes.get(0);
+ NavigateNode target = nodes.get(nodes.size() - 1);
+ data.put("start", Utils.getLocNo(start.getX(), start.getY(), start.getZ()));
+ data.put("target", Utils.getLocNo(target.getX(), target.getY(), target.getZ()));
+ }
+
+ list.add(data);
+ }
+
+
+ hashMap.put("total", commands.size());
+ hashMap.put("records", list);
+ hashMap.put("commandStep", commandStep);
+ return R.ok().add(hashMap);
+ }
+
+ @PreAuthorize("hasAuthority('core:task:list')")
+ @PostMapping("/task/shuttleCommand/completeSwitch")
+ public R shuttleCommandCompleteSwitch(@RequestBody ShuttleCommandUpdateCompleteParam param) {
+ Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_WORK_FLAG + param.getTaskNo());
+ if (object == null) {
+ return R.error("鎸囦护涓嶅瓨鍦�");
+ }
+
+ ShuttleRedisCommand redisCommand = null;
+ try {
+ redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class);
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (redisCommand == null) {
+ return R.error("鎸囦护涓嶅瓨鍦�");
+ }
+
+ ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
+ List<ShuttleCommand> commands = assignCommand.getCommands();
+ ShuttleCommand command = commands.get(param.getIndex());
+ command.setComplete(param.getComplete());
+
+ redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + param.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect));
+ return R.ok();
+ }
+
+ @PreAuthorize("hasAuthority('core:task:list')")
+ @PostMapping("/task/shuttleCommand/commandRollback")
+ public R shuttleCommandRollback(@RequestBody ShuttleCommandRollbackParam param) {
+ Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_WORK_FLAG + param.getTaskNo());
+ if (object == null) {
+ return R.error("鎸囦护涓嶅瓨鍦�");
+ }
+
+ ShuttleRedisCommand redisCommand = null;
+ try {
+ redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class);
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (redisCommand == null) {
+ return R.error("鎸囦护涓嶅瓨鍦�");
+ }
+
+ redisCommand.setCommandStep(param.getIndex());
+ redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + param.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect));
+ return R.ok();
+ }
}
--
Gitblit v1.9.1