From 2eb3f91b6f19fb684030c7773b94b824827bab87 Mon Sep 17 00:00:00 2001 From: xumiao <1365304440@qq.com> Date: Tue, 15 Feb 2022 10:59:19 +0800 Subject: [PATCH] 任务状态维护 --- src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java | 4 ++++ src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java | 31 ++++++++++++++++++++++++++----- src/main/java/com/huaheng/pc/config/pointPosition/service/PointPositionServiceImpl.java | 2 +- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java b/src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java index 21f4c74..d6a394d 100644 --- a/src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java +++ b/src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java @@ -161,6 +161,10 @@ public class AgvTaskController extends BaseController { if(pointPosition!=null&&StringUtils.isNotEmpty(pointPosition.getContainCode())){ return AjaxResult.error("目标点位有托盘,请选择其他点位"); } + AgvTask one = acsService.getOne(new LambdaQueryWrapper<AgvTask>().eq(AgvTask::getToPort, agvTask.getToPort()).lt(AgvTask::getStatus, QuantityConstant.TASK_STATUS_COMPLETED)); + if(one!=null){ + return AjaxResult.error("目标点位存在未完成的任务"); + } return toAjax(acsService.updateById(agvTask)); } diff --git a/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java index 8b99498..2439e7e 100644 --- a/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java +++ b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java @@ -139,7 +139,8 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper=Wrappers.lambdaQuery(); agvTaskLambdaQueryWrapper.eq(AgvTask::getToPort,task.getToPort()) .eq(AgvTask::getWarehouseCode,task.getWarehouseCode()) - .ge(AgvTask::getStatus,QuantityConstant.TASK_STATUS_RELEASE); + .ge(AgvTask::getStatus,QuantityConstant.TASK_STATUS_RELEASE) + .lt(AgvTask::getStatus,QuantityConstant.TASK_STATUS_COMPLETED); List<AgvTask> list = list(agvTaskLambdaQueryWrapper); if(list!=null&&list.size()>0){ return AjaxResult.error("目标点位存在任务,请更换目标点位"); @@ -218,7 +219,8 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac default: break; } - cancelPositionAndContainerStatus(agvTask); + cancelPositionStatus(agvTask); + cancelContainerStatus(agvTask); } return AjaxResult.success("取消任务成功!"); } @@ -301,8 +303,22 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac agvTask.setId(taskNo); agvTask.setCarNo(carNo); agvTask.setStatus(Integer.parseInt(status)); + AgvTask task = getById(taskNo); + if(task==null)return AjaxResult.error("任务号"+taskNo+"不存在"); + if(task.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED))return AjaxResult.error("任务"+taskNo+"已经完成"); + if(agvTask.getStatus().equals(QuantityConstant.TASK_STATUS_RUNNING)){ + pointPositionService.updateStatus(task.getFromPort(),QuantityConstant.STATUS_POSITION_EMPTY,task.getWarehouseCode()); + pointPositionService.setContainerCode(task.getFromPort(),null,task.getWarehouseCode()); + updateById(agvTask); + } if(agvTask.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)){ - cancelPositionAndContainerStatus(agvTask); + pointPositionService.updateStatus(task.getFromPort(),QuantityConstant.STATUS_POSITION_EMPTY,task.getWarehouseCode()); + pointPositionService.updateStatus(task.getToPort(),QuantityConstant.STATUS_POSITION_SOME,task.getWarehouseCode()); + pointPositionService.setContainerCode(task.getFromPort(),null,task.getWarehouseCode()); + pointPositionService.setContainerCode(task.getToPort(),task.getContainerCode(),task.getWarehouseCode()); + containerService.updateLocationCodeAndStatus(task.getContainerCode(),task.getToPort(),QuantityConstant.STATUS_CONTAINER_EMPTY,task.getWarehouseCode()); + updateById(agvTask); + cancelContainerStatus(task); } if(!updateById(agvTask)){ throw new ServiceException("更新失败"); }; return AjaxResult.success(); @@ -441,8 +457,8 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac } } - //更新点位状态及容器状态 - private void cancelPositionAndContainerStatus(AgvTask agvTask) { + //更新点位状态 + private void cancelPositionStatus(AgvTask agvTask) { if (agvTask.getFromPort() != null) { //更新点位状态 PointPosition pointPosition = pointPositionService.getOne(new LambdaQueryWrapper<PointPosition>().eq(PointPosition::getPositionName, agvTask.getFromPort())); @@ -462,6 +478,10 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac } } + + } + //更新容器状态 + private void cancelContainerStatus(AgvTask agvTask){ LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, agvTask.getContainerCode()); InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); @@ -477,6 +497,7 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac containerService.update(container, containerUpdateWrapper); } + //检查点位是否存在 private AjaxResult checkPointPositionExist(AgvTask agvTask){ PointPosition sourcePosition = pointPositionService.getPositionByCode(agvTask.getFromPort(), "CS0001"); diff --git a/src/main/java/com/huaheng/pc/config/pointPosition/service/PointPositionServiceImpl.java b/src/main/java/com/huaheng/pc/config/pointPosition/service/PointPositionServiceImpl.java index a3c72ab..e9d916e 100644 --- a/src/main/java/com/huaheng/pc/config/pointPosition/service/PointPositionServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/pointPosition/service/PointPositionServiceImpl.java @@ -33,7 +33,7 @@ public class PointPositionServiceImpl extends ServiceImpl<PointPositionMapper, P @Override public void setContainerCode(String positionName, String containerCode, String warehouseCode) { - if(StringUtils.isNotEmpty(positionName)&&StringUtils.isNotEmpty(containerCode)){ + if(StringUtils.isNotEmpty(positionName)){ pointPositionMapper.setContainerCode(positionName,containerCode,warehouseCode); } } -- libgit2 0.22.2