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 1d4cf81..f8d6f20 100644 --- a/src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java +++ b/src/main/java/com/huaheng/api/acs/controller/AgvTaskController.java @@ -74,8 +74,7 @@ public class AgvTaskController extends BaseController { .eq(StringUtils.isNotEmpty(agvTask.getCarNo()),AgvTask::getCarNo,agvTask.getCarNo()) .gt(StringUtils.isNotEmpty(createdTime),AgvTask::getCreatedTime,createdTime) .lt(StringUtils.isNotEmpty(updated),AgvTask::getUpdated,updated) - .orderByAsc(AgvTask::getStatus) - .orderByDesc(AgvTask::getId); + .orderByAsc(AgvTask::getStatus); if(StringUtils.isNotNull(taskComplete)){ if(taskComplete==100){ lambdaQueryWrapper.eq(AgvTask::getStatus,taskComplete); 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 a647b0f..38795d8 100644 --- a/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java +++ b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java @@ -78,6 +78,8 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac checkAgvTaskPosition(agvTask); //校验托盘是否存在任务及是否锁定 checkContainerAndPositionStatus(agvTask); + //校验自己生成的任务中源点位的托盘和实际托盘一不一致 + checkContainerAndPositionLove(agvTask); agvTask.setStatus(QuantityConstant.TASK_STATUS_BUILD); agvTask.setCreatedBy(ShiroUtils.getLoginName()); agvTask.setTaskType(QuantityConstant.STATUS_TASK_CARRY); @@ -131,6 +133,17 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac if (task.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE) { return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止"); } + if(StringUtils.isEmpty(task.getToPort())){ + return AjaxResult.error("任务没有目标点位,不允许下发"); + } + LambdaQueryWrapper<AgvTask> agvTaskLambdaQueryWrapper=Wrappers.lambdaQuery(); + agvTaskLambdaQueryWrapper.eq(AgvTask::getToPort,task.getToPort()) + .eq(AgvTask::getWarehouseCode,task.getWarehouseCode()) + .ge(AgvTask::getStatus,QuantityConstant.TASK_STATUS_RELEASE); + List<AgvTask> list = list(agvTaskLambdaQueryWrapper); + if(list!=null&&list.size()>0){ + return AjaxResult.error("目标点位存在任务,请更换目标点位"); + } // 给AGV传递任务 AjaxResult ajaxResult = agvTaskAssign(task); if (ajaxResult != null && ajaxResult.hasErr()) { @@ -419,6 +432,9 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac if(desPosition.getStatus().equals(QuantityConstant.STATUS_POSITION_LOCK)){ throw new ServiceException("目标点位:" + desPosition + "禁用"); } + if(StringUtils.isNotEmpty(desPosition.getContainCode())){ + throw new ServiceException("目标点位:" + desPosition + "存在托盘:"+desPosition.getContainCode()); + } if (QuantityConstant.STATUS_CONTAINER_FULL.equals(desPosition.getStatus())) { throw new ServiceException("目标点位:" + desPosition + "已满"); } @@ -429,10 +445,18 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac private void cancelPositionAndContainerStatus(AgvTask agvTask) { if (agvTask.getFromPort() != null) { //更新点位状态 + PointPosition pointPosition = pointPositionService.getOne(new LambdaQueryWrapper<PointPosition>().eq(PointPosition::getPositionName, agvTask.getFromPort())); + if(pointPosition!=null&&StringUtils.isNotEmpty(pointPosition.getContainCode())){ + pointPositionService.updateStatus(agvTask.getFromPort(), QuantityConstant.STATUS_POSITION_SOME,agvTask.getWarehouseCode()); + } pointPositionService.updateStatus(agvTask.getFromPort(), QuantityConstant.STATUS_POSITION_EMPTY,agvTask.getWarehouseCode()); } if (agvTask.getToPort() != null) { //更新点位状态 + PointPosition pointPosition = pointPositionService.getOne(new LambdaQueryWrapper<PointPosition>().eq(PointPosition::getPositionName, agvTask.getToPort())); + if(pointPosition!=null&&StringUtils.isNotEmpty(pointPosition.getContainCode())){ + pointPositionService.updateStatus(agvTask.getToPort(), QuantityConstant.STATUS_POSITION_SOME,agvTask.getWarehouseCode()); + } pointPositionService.updateStatus(agvTask.getToPort(), QuantityConstant.STATUS_POSITION_EMPTY,agvTask.getWarehouseCode()); } LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); @@ -468,5 +492,16 @@ public class AcsServiceImpl extends ServiceImpl<AcsMapper,AgvTask> implements Ac }*/ return AjaxResult.success(); } + //校验自己生成的任务中源点位的托盘和实际托盘一不一致 + private void checkContainerAndPositionLove(AgvTask agvTask){ + PointPosition pointPosition = pointPositionService.getOne(new LambdaQueryWrapper<PointPosition>().eq(PointPosition::getPositionName, agvTask.getFromPort())); + if(pointPosition!=null&&StringUtils.isNotEmpty(pointPosition.getContainCode())){ + if(!agvTask.getContainerCode().equals(pointPosition.getContainCode())){ + throw new ServiceException("源点位上托盘数据和分配的托盘不一致,请核对"); + } + } + + } + }