From 25b1f6699b46bb9413b8c6b98f32c20aa60394fd Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期二, 03 十二月 2024 16:01:13 +0800 Subject: [PATCH] #算法优化 --- 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