From 82887ea354b3ec1411ce35b7ccca04c97c63f5a7 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 12 十一月 2024 10:07:38 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java | 45 ++++++++++++++++++++++++++++++++++++++------- 1 files changed, 38 insertions(+), 7 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 0d31355..53bd72b 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 @@ -8,15 +8,13 @@ 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; -import com.zy.acs.manager.core.service.MainService; -import com.zy.acs.manager.core.service.ThreadPoolRegulator; -import com.zy.acs.manager.core.service.TrafficService; +import com.zy.acs.manager.core.service.*; import com.zy.acs.manager.core.service.astart.MapDataDispatcher; 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 lombok.extern.slf4j.Slf4j; @@ -64,6 +62,8 @@ private MapDataDispatcher mapDataDispatcher; @Autowired private AvoidWaveCalculator avoidWaveCalculator; + @Autowired + private PatrolService patrolService; @RequestMapping(value = "/control/agv", method = {RequestMethod.GET, RequestMethod.POST}) @Transactional @@ -190,9 +190,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(); } @@ -203,6 +202,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) { @@ -239,6 +250,8 @@ return R.error(); } + Agv agv = agvService.selectByUuid(param.getAgvNo()); + // block // Future<R> future = threadPoolRegulator.getInstance().submit(() -> { // mapDataDispatcher.modifyDynamicMatrix(null, null, param.getAgvNo(), true); @@ -249,6 +262,7 @@ // non-block CompletableFuture<?> completableFuture = CompletableFuture.supplyAsync(() -> { mapDataDispatcher.modifyDynamicMatrix(null, null, param.getAgvNo(), true); + avoidWaveCalculator.calcDynamicNodeByVehicle(agv, null); return R.ok(); }, threadPoolRegulator.getInstance()); @@ -262,4 +276,21 @@ return R.ok(); } + @RequestMapping(value = "/agv/patrol", method = {RequestMethod.GET, RequestMethod.POST}) + public R agvPatrol(@RequestHeader String appKey, + @RequestBody HandlerPublishParam param) throws ExecutionException, InterruptedException { + if (Cools.isEmpty(param.getAgvNo(), appKey)) { + return R.error(); + } + if (!APP_KEY.equals(appKey)) { + return R.error(); + } + String agvNo = param.getAgvNo(); + if (patrolService.isPatrolling(agvNo)) { + return patrolService.shutdownPatrol(agvNo); + } else { + return patrolService.startupPatrol(agvNo); + } + } + } -- Gitblit v1.9.1