From 7f70cb15d035f0c233b9e62b9e43aa985317c908 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 04 十一月 2024 10:22:45 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java | 96 ++++++++++++++++++++++++++++++------------------ 1 files changed, 60 insertions(+), 36 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java index 7b50d99..2573042 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java @@ -3,6 +3,9 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.acs.common.utils.Utils; +import com.zy.acs.framework.common.Cools; +import com.zy.acs.framework.common.R; +import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.manager.common.domain.param.HandlerPublishParam; import com.zy.acs.manager.common.exception.BusinessException; import com.zy.acs.manager.core.service.AvoidWaveCalculator; @@ -10,18 +13,13 @@ import com.zy.acs.manager.core.service.ThreadPoolRegulator; import com.zy.acs.manager.core.service.TrafficService; import com.zy.acs.manager.core.service.astart.MapDataDispatcher; -import com.zy.acs.manager.manager.entity.Agv; -import com.zy.acs.manager.manager.entity.AgvDetail; -import com.zy.acs.manager.manager.entity.Loc; -import com.zy.acs.manager.manager.entity.Task; +import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.ActionStsType; import com.zy.acs.manager.manager.enums.LocStsType; import com.zy.acs.manager.manager.enums.TaskStsType; +import com.zy.acs.manager.manager.enums.TaskTypeType; import com.zy.acs.manager.manager.service.*; import com.zy.acs.manager.system.controller.BaseController; -import com.zy.acs.framework.common.Cools; -import com.zy.acs.framework.common.R; -import com.zy.acs.framework.common.SnowflakeIdWorker; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; @@ -38,7 +36,7 @@ */ @Slf4j @RestController -@RequestMapping("/handler") +@RequestMapping("/api/handler") public class HandlerController extends BaseController { public static final String APP_KEY = "xltys1995"; @@ -68,11 +66,11 @@ @Autowired private AvoidWaveCalculator avoidWaveCalculator; - @RequestMapping(value = "/publish", method = {RequestMethod.GET, RequestMethod.POST}) + @RequestMapping(value = "/control/agv", method = {RequestMethod.GET, RequestMethod.POST}) @Transactional - public R publish(@RequestHeader String appKey, + public R controlAgv(@RequestHeader String appKey, @RequestBody HandlerPublishParam param) { - if (Cools.isEmpty(param.getAgvNo(), param.getTaskType(), appKey)) { + if (Cools.isEmpty(param.getAgvNo(), param.getTaskMode(), appKey)) { return R.error(); } if (!APP_KEY.equals(appKey)) { @@ -101,36 +99,58 @@ } // generate - switch (param.getTaskType()) { + switch (param.getTaskMode()) { case MOVE: - if (Cools.isEmpty(param.getEndCode())) { + Code endCode = null; + if (!Cools.isEmpty(param.getEndCode())) { + endCode = codeService.getById(param.getEndCode()); + } + if (!Cools.isEmpty(param.getEndCodeStr())) { + endCode = codeService.selectByData(param.getEndCodeStr()); + } + if (null == endCode) { return R.error(); } - if (null == codeService.selectByData(param.getEndCode())) { - return R.error(); - } - if (!mainService.buildMinorTask(agv, agvDetail, param.getTaskType(), param.getEndCode())) { + if (!mainService.buildMinorTask(agv, agvDetail, param.getTaskMode(), endCode.getData())) { return R.error(); } break; case TO_CHARGE: case TO_STANDBY: - if (!mainService.buildMinorTask(agv, agvDetail, param.getTaskType(), null)) { + if (!mainService.buildMinorTask(agv, agvDetail, param.getTaskMode(), null)) { return R.error(); } break; case LOC_TO_LOC: - if (Cools.isEmpty(param.getStartLocNo(), param.getEndLocNo())) { - return R.error(); + // oriLoc + Loc oriLoc = null; + if (!Cools.isEmpty(param.getStartLocNo())) { + oriLoc = locService.getById(param.getStartLocNo()); } - Loc oriLoc = locService.selecatByLocNo(param.getStartLocNo()); + if (!Cools.isEmpty(param.getStartLocNoStr())) { + oriLoc = locService.selecatByLocNo(param.getStartLocNoStr()); + } if (null == oriLoc) { return R.error(); } - Loc destLoc = locService.selecatByLocNo(param.getEndLocNo()); + if (!oriLoc.getLocSts().equals(LocStsType.STOCK.val())) { + throw new BusinessException("oriLoc锛�" + oriLoc.getLocNo() + " 涓嶆槸鍦ㄥ簱鐘舵��"); + } + // destLoc + Loc destLoc = null; + if (!Cools.isEmpty(param.getEndLocNo())) { + destLoc = locService.getById(param.getEndLocNo()); + } + if (!Cools.isEmpty(param.getEndLocNoStr())) { + destLoc = locService.selecatByLocNo(param.getEndLocNoStr()); + } if (null == destLoc) { return R.error(); } + if (!destLoc.getLocSts().equals(LocStsType.IDLE.val())) { + throw new BusinessException("destLoc锛�" + destLoc.getLocNo() + " 涓嶆槸绌洪棽鐘舵��"); + } + // task Task task = new Task(); @@ -142,7 +162,7 @@ task.setOriLoc(oriLoc.getId()); task.setDestLoc(destLoc.getId()); - task.setTaskType(param.getTaskType().val()); + task.setTaskType(param.getTaskMode().val()); task.setTaskSts(TaskStsType.WAITING.val()); task.setPriority(999); @@ -153,26 +173,16 @@ } // loc - oriLoc = locService.getById(task.getOriLoc()); - if (!oriLoc.getLocSts().equals(LocStsType.STOCK.val())) { - throw new BusinessException("oriLoc锛�" + task.getOriLoc$() + " 涓嶆槸鍦ㄥ簱鐘舵��"); - } oriLoc.setLocSts(LocStsType.PAKOUT.val()); oriLoc.setUpdateTime(now); if (!locService.updateById(oriLoc)) { throw new BusinessException("oriLoc锛�" + task.getOriLoc$() + " 淇敼搴撲綅鐘舵�佸け璐�"); - } - - destLoc = locService.getById(task.getDestLoc()); - if (!destLoc.getLocSts().equals(LocStsType.IDLE.val())) { - throw new BusinessException("destLoc锛�" + task.getDestLoc$() + " 涓嶆槸绌洪棽鐘舵��"); } destLoc.setLocSts(LocStsType.PAKIN.val()); destLoc.setUpdateTime(now); if (!locService.updateById(destLoc)) { throw new BusinessException("destLoc锛�" + task.getDestLoc$() + " 淇敼搴撲綅鐘舵�佸け璐�"); } - break; default: break; @@ -181,9 +191,8 @@ return R.ok(); } - @RequestMapping(value = "/reset", method = {RequestMethod.GET, RequestMethod.POST}) - public R reset(@RequestHeader String appKey, - @RequestBody HandlerPublishParam param) { + @RequestMapping(value = "/restore/agv", method = {RequestMethod.GET, RequestMethod.POST}) + public R restoreAgv(@RequestHeader String appKey, @RequestBody HandlerPublishParam param) { if (Cools.isEmpty(appKey)) { return R.error(); } @@ -194,6 +203,18 @@ Agv agv = null; if (!Cools.isEmpty(param.getAgvNo())) { agv = agvService.selectByUuid(param.getAgvNo()); + List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS); + if (!Cools.isEmpty(tasks)) { + for (Task task : tasks) { + if (TaskTypeType.LOC_TO_LOC.toString().equals(task.getTaskTypeEl()) + || TaskTypeType.LOC_TO_STA.toString().equals(task.getTaskTypeEl()) + || TaskTypeType.STA_TO_LOC.toString().equals(task.getTaskTypeEl()) + || TaskTypeType.STA_TO_STA.toString().equals(task.getTaskTypeEl()) + ) { + return R.error("Restore Failed, because the agv has Tasks that are associated with Loc!"); + } + } + } } if (null != agv) { @@ -230,6 +251,8 @@ return R.error(); } + Agv agv = agvService.selectByUuid(param.getAgvNo()); + // block // Future<R> future = threadPoolRegulator.getInstance().submit(() -> { // mapDataDispatcher.modifyDynamicMatrix(null, null, param.getAgvNo(), true); @@ -240,6 +263,7 @@ // non-block CompletableFuture<?> completableFuture = CompletableFuture.supplyAsync(() -> { mapDataDispatcher.modifyDynamicMatrix(null, null, param.getAgvNo(), true); + avoidWaveCalculator.calcDynamicNodeByVehicle(agv, null); return R.ok(); }, threadPoolRegulator.getInstance()); -- Gitblit v1.9.1