diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java index 18c9b3bb3..448cfd05d 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java @@ -34,7 +34,9 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor { private static final String ATTRIBUTE_STOP_WATCH = "ApiAccessLogInterceptor.StopWatch"; - private static final List ignoreInterfaceUrls = Arrays.asList("/rpc-api/system/task/robotStatusUpdate","/rpc-api/system/task/updateRobotCommonStatus"); + private static final List ignoreInterfaceUrls = Arrays.asList("/rpc-api/system/task/robotStatusUpdate", + "/rpc-api/system/task/robotReactiveStatus", + "/rpc-api/system/task/updateRobotCommonStatus"); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/RobotStatusServiceImpl.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/RobotStatusServiceImpl.java index 2eb8a125b..bcb25c607 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/RobotStatusServiceImpl.java +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/RobotStatusServiceImpl.java @@ -22,7 +22,7 @@ public class RobotStatusServiceImpl implements MqttService { */ @Override public void analysisMessage(String message) { -// log.info("处理RobotStatusServiceImpl的消息 :{}", message); + log.info("处理RobotStatusServiceImpl的消息 :{}", message); RobotPoseStatusDTO robotStatusData = JSON.parseObject(message, RobotPoseStatusDTO.class); robotStatusApi.robotStatusUpdate(robotStatusData); } diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/resources/application-local.yaml b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/resources/application-local.yaml index 2d0c482cd..13e70cf30 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/resources/application-local.yaml +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/resources/application-local.yaml @@ -33,9 +33,9 @@ management: # MQTT mqtt: -# host: tcp://123.57.12.40:1883 - host: tcp://127.0.0.1:1883 -# host: tcp://10.10.7.195:1883 + host: tcp://123.57.12.40:1883 +# host: tcp://127.0.0.1:1883 +# host: tcp://10.10.7.116:1883 username: adminuser password: adminuser qos: 2 diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index bf930a7e3..0f77f8dc2 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -202,6 +202,7 @@ public interface ErrorCodeConstants { ErrorCode ROBOT_PORT_NOT_COMPLIANCE = new ErrorCode(1-002-034-016, "车辆端口范围在4096至65535之间"); ErrorCode ROBOT_IP_NOT_COMPLIANCE = new ErrorCode(1-002-034-017, "请检测车辆IP是否符合规范"); ErrorCode ROBOT_IP_OR_PORT_EMPTY = new ErrorCode(1-002-034-020, "车辆IP或者端口为空"); + ErrorCode ROBOT_PART_AREA = new ErrorCode(1-002-034-021, "车辆选择的楼层,不包含目前车辆停靠的楼层"); // ========== 机器人任务主表 1-002-035-000 ========== ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "车辆任务主表不存在"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java index c0cbb4699..5b25e91be 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApiImpl.java @@ -108,7 +108,7 @@ public class PathApiImpl implements PathApi { @Override public void pathPlanningMove(String message) { - log.info("收到路径规划路径的消息 :{}", message); + log.info("111111收到路径规划路径的消息 :{}", message); taskExecutor.execute(() -> { TenantContextHolder.setTenantId(1L); pathPlanningService.sendPosedsToRobot(message); @@ -145,7 +145,7 @@ public class PathApiImpl implements PathApi { @Override public void graphMatchData(String message) { TenantContextHolder.setTenantId(1L); - log.info("匹配路网的消息 :{}",message); + log.info("111111匹配路网的消息 :{}",message); pathPlanningService.graphMatchData(message); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotGenericsStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotGenericsStatusApiImpl.java index 26a3a33e8..0c293c58f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotGenericsStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotGenericsStatusApiImpl.java @@ -30,7 +30,7 @@ public class RobotGenericsStatusApiImpl implements RobotGenericsStatusApi { } public void doUpdateRobotCommonStatus(RobotGenericsDataDTO robotStatusData) { -// log.info("车机每3秒上报其他状态信息 :{}", JSONUtil.toJsonStr(robotStatusData)); +// log.info("111111车机每3秒上报其他状态信息 :{}", JSONUtil.toJsonStr(robotStatusData)); if (ObjectUtil.isEmpty(robotStatusData) || ObjectUtil.isEmpty(robotStatusData.getHwStates()) || ObjectUtil.isEmpty(robotStatusData.getMac())) { log.info("参数不全 :{}", JSON.toJSONString(robotStatusData)); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotObstaclesStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotObstaclesStatusApiImpl.java index 5a9c7b4cc..5edec340f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotObstaclesStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotObstaclesStatusApiImpl.java @@ -41,7 +41,7 @@ public class RobotObstaclesStatusApiImpl implements RobotObstaclesStatusApi{ @Override public void robotObstaclesStatus(String message) { - log.info("障碍物状态上报 :{}" ,message); + log.info("111111障碍物状态上报 :{}" ,message); RobotObstaclesStatusDTO data = JSON.parseObject(message, RobotObstaclesStatusDTO.class); if (!data.getObstacles()) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotPathStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotPathStatusApiImpl.java index fa89f1487..61fef7840 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotPathStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotPathStatusApiImpl.java @@ -41,7 +41,7 @@ public class RobotPathStatusApiImpl implements RobotPathStatusApi { } private void doRobotPathStatus(String message) { - log.info("导航实时行为上报: {}", message); + log.info("111111导航实时行为上报: {}", message); TenantContextHolder.setTenantId(1L); RobotPathStatusDTO data = JSON.parseObject(message, RobotPathStatusDTO.class); String robotNo = robotInformationService.getRobotNoByMac(data.getMac()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java index a4846ccd9..dc0802077 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java @@ -128,7 +128,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { @Transactional(rollbackFor = Exception.class) public void doRobotDoneTask(RobotCompleteTaskDTO robotCompleteTaskDTO) { - log.info("机器人完成任务上报 :{}", JSON.toJSONString(robotCompleteTaskDTO)); + log.info("111111机器人完成任务上报 :{}", JSON.toJSONString(robotCompleteTaskDTO)); TenantContextHolder.setTenantId(1L); String robotDoingActionKey = RobotTaskChcheConstant.ROBOT_QUERY_DOING_ACTION + robotCompleteTaskDTO.getMac(); @@ -193,7 +193,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { , null); if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) - || PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) ) { + || PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) { chargeDoing(robotCompleteTaskDTO); } } @@ -206,6 +206,12 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { * @param orderId */ public void sendStartDoActionToPP(RobotCommandStateDTO commandStatus, String mac, String orderId) { + if (ObjectUtil.isNotEmpty(commandStatus) + || CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(commandStatus.getCommandType()) + || CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(commandStatus.getCommandType())) { + log.info("不发作业"); + return; + } if (ObjectUtil.isNotEmpty(commandStatus) && RobotExecutionStateConstant.DOING.equals(commandStatus.getExecutionState()) && !CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) { String robotNo = robotInformationService.getRobotNoByMac(mac); @@ -247,10 +253,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { } else if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) { RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId()); if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) { - log.info("告诉路径规划任务完成 :{}, 状态: {}", robotCompleteTaskDTO.getOrderId(), PathIsReachEnum.END_WORK.getType()); + log.info("告诉路径规划取货任务完成 :{}, 状态: {}", robotCompleteTaskDTO.getOrderId(), PathIsReachEnum.END_WORK.getType()); pathPlanningService.updateBehavior(String.valueOf(robotCompleteTaskDTO.getOrderId()), robotTaskDetailDO.getRobotNo() , "", PathIsReachEnum.END_WORK.getType()); - robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType()); + robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType()); robotTaskDetailMapper.updateById(robotTaskDetailDO); return; } else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) { @@ -260,7 +266,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) || PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) { - chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(),ChargeTaskStatusEnum.DONE.getType()); + chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(), ChargeTaskStatusEnum.DONE.getType()); } taskDetailActionLogMapper.updateActionStatus(robotCompleteTaskDTO.getOrderId(), ActionStatusEnum.DONE.getType(), LocalDateTime.now()); @@ -289,7 +295,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { toWareHouseLocation.setLocationLock(LocationLockEnum.YES.getType()); toWareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.YES.getType()); locationMapper.updateById(toWareHouseLocation); - pushWareLocation(toWareHouseLocation,robotCompleteTaskDTO.getMac(),ZeroOneEnum.ONE.getType()); + pushWareLocation(toWareHouseLocation, robotCompleteTaskDTO.getMac(), ZeroOneEnum.ONE.getType()); } /** @@ -345,7 +351,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { wareHouseLocationDO.setLocationLock(LocationLockEnum.YES.getType()); wareHouseLocationDO.setLocationUseStatus(LocationUseStatusEnum.NO.getType()); locationMapper.updateById(wareHouseLocationDO); - pushWareLocation(wareHouseLocationDO,robotCompleteTaskDTO.getMac(),ZeroOneEnum.ZERO.getType()); + pushWareLocation(wareHouseLocationDO, robotCompleteTaskDTO.getMac(), ZeroOneEnum.ZERO.getType()); } public void pushWareLocation(WareHouseLocationDO wareHouseLocationDO, String mac, Integer type) { @@ -393,10 +399,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { // taskService.closeTaskDetail(robotCompleteTaskDTO.getOrderId().toString(),robotCompleteTaskDTO.getMac()); String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac()); - String msg = ""; + String msg = null; + RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId()); if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType()) || PathTaskTypeEnum.TAKE.getType().equals(robotCompleteTaskDTO.getOrderType())) { - RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId()); if (RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetailDO.getTaskStage()) || RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetailDO.getTaskStage())) { robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType()); @@ -439,8 +445,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { String solve = ""; String taskNo = ""; - if (!PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) - && ObjectUtil.isEmpty(msg)) { + if (ObjectUtil.isEmpty(msg)) { taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId()); solve = " 并且到任务列表关闭任务 " + taskNo; taskDetailService.setTaskDetailError(robotCompleteTaskDTO.getOrderId()); @@ -478,7 +483,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { setTaskDone(robotCompleteTaskDTO); } - chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(),ChargeTaskStatusEnum.CHARGEING.getType()); + chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(), ChargeTaskStatusEnum.CHARGEING.getType()); } public RobotTaskDetailDO setTaskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) { @@ -513,7 +518,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { */ private void taskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) { - RobotTaskDetailDO robotTaskDetailDO = setTaskDone(robotCompleteTaskDTO); + RobotTaskDetailDO robotTaskDetailDO = setTaskDone(robotCompleteTaskDTO); RobotInformationDO robotInformationDO = robotInformationMapper.selectOne(new LambdaQueryWrapperX() .eq(RobotInformationDO::getRobotNo, robotTaskDetailDO.getRobotNo())); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotUpdatePalletHeightApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotUpdatePalletHeightApiImpl.java index 215fd4603..5ebb65709 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotUpdatePalletHeightApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotUpdatePalletHeightApiImpl.java @@ -50,7 +50,7 @@ public class RobotUpdatePalletHeightApiImpl implements RobotUpdatePalletHeightAp @Override @Transactional(rollbackFor = Exception.class) public void updatePalletHeight(String message) { - log.info("高度反馈 :{}", message); + log.info("111111高度反馈 :{}", message); TenantContextHolder.setTenantId(1L); RobotUpdatePalletHeightDTO data = JSON.parseObject(message, RobotUpdatePalletHeightDTO.class); if (RobotCommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(data.getCommandType())) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java index bbabffc09..1a22bb6c3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotWorkStatusApiImpl.java @@ -34,7 +34,7 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi { @Override public void robotWorkStatus(String message) { - log.info("作业实时行为上报: {}", message); + log.info("111111作业实时行为上报: {}", message); TenantContextHolder.setTenantId(1L); RobotWorkStatusDTO data = JSON.parseObject(message, RobotWorkStatusDTO.class); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java index e93bcefdf..9384bd7eb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/RobotTaskController.java @@ -130,4 +130,11 @@ public class RobotTaskController { return success(true); } + @GetMapping("/getRobotTaskNum") + @Operation(summary = "获取这台车工作的任务总数") + @Parameter(name = "robotNo", description = "车辆编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('robot:task:getRobotTaskNum')") + public CommonResult getRobotTaskNum(@RequestParam("robotNo") String robotNo) { + return success(taskService.getRobotTaskNum(robotNo)); + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/cycle/TaskCycleMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/cycle/TaskCycleMapper.java index e111cc529..62ead36ed 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/cycle/TaskCycleMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/cycle/TaskCycleMapper.java @@ -27,4 +27,10 @@ public interface TaskCycleMapper extends BaseMapperX { } void deletByRobotTaskId(@Param("robotTaskId") Long robotTaskId); + + /** + * 批量删除 + * @param taskIds + */ + void deletByRobotTaskIds(@Param("taskIds") Set taskIds); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java index ed5e8ffe3..9cacde0df 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotInformationServiceImpl.java @@ -369,6 +369,21 @@ public class RobotInformationServiceImpl extends ServiceImpl() + .eq(PositionMapItemDO::getRobotNo, robotInformationDO.getRobotNo()) + .eq(PositionMapItemDO::getUseStatus, UseStatusEnum.USEING.getType()) + .eq(PositionMapItemDO::getType, PositionMapItemEnum.STOP.getType()) + .last("limit 1")); + if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isEmpty(updateReqVO.getFloorAreaJson())) { + log.info("车辆 :{} ,停靠在 :{},",robotInformationDO.getRobotNo(), positionMapItem.getPositionMapId()); + throw exception(ROBOT_PART_AREA); + }else if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isNotEmpty(updateReqVO.getFloorAreaJson()) + && !updateReqVO.getFloorAreaJson().contains(positionMapItem.getPositionMapId())) { + throw exception(ROBOT_PART_AREA); + } + } + RemoteControllerInformationDO remoteControllerInformation = controllerInformationMapper.selectOne(new LambdaQueryWrapper() .eq(RemoteControllerInformationDO::getRobotNo, robotInformationDO.getRobotNo()) .last("limit 1")); @@ -425,7 +440,7 @@ public class RobotInformationServiceImpl extends ServiceImpl() .eq(RobotChargeLogDO::getRobotNo, oldRobotNo) @@ -504,11 +520,11 @@ public class RobotInformationServiceImpl extends ServiceImpl robotNos = robots.stream().map(RobotInformationDO::getRobotNo).collect(Collectors.toList()); List list = new ArrayList<>(); - String floorArea = floor + CommonConstant.SYMBOL + area; + String floorArea = floor + CommonConstant.SYMBOL + area; Map hmget = redisUtil.hmget(floorArea); if (ObjectUtil.isEmpty(hmget)) { return new ArrayList<>(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java index 7f32c94a3..fdddc7c91 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java @@ -246,6 +246,7 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService { public void setTaskDetailError(Long id) { RobotTaskDetailDO robotTaskDetailDO = new RobotTaskDetailDO(); robotTaskDetailDO.setId(id); + robotTaskDetailDO.setTaskStatus(RobotTaskStatusEnum.Exc.getType()); robotTaskDetailDO.setOccurError(ZeroOneEnum.ONE.getType()); taskDetailMapper.updateById(robotTaskDetailDO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskService.java index c9a1eacf9..0ae9ded55 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskService.java @@ -115,4 +115,11 @@ public interface RobotTaskService extends IService { * @param robotNo */ void chargeDone(String robotNo); + + /** + * 查询车辆的工作总数 + * @param robotNo + * @return + */ + Integer getRobotTaskNum(String robotNo); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java index ebeeecce0..135ff4b21 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java @@ -512,6 +512,8 @@ public class RobotTaskServiceImpl extends ServiceImpl taskDetailDOS = taskDetailMapper.selectList(new LambdaQueryWrapperX() + .eq(RobotTaskDetailDO::getRobotNo, robotNo) + .ne(RobotTaskDetailDO::getTaskStatus, RobotTaskStatusEnum.NEW.getType())); + + return ObjectUtil.isEmpty(taskDetailDOS) ? 0 : taskDetailDOS.size(); + } + /** * 任务日志分页 * diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/CycleServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/CycleServiceImpl.java index 73d5aa55d..9b5c94e74 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/CycleServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/CycleServiceImpl.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailAddVO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; +import cn.iocoder.yudao.module.system.dal.mysql.cycle.TaskCycleMapper; import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper; @@ -59,6 +60,9 @@ public class CycleServiceImpl implements CycleService { @Resource private RobotTaskService robotTaskService; + + @Resource + private TaskCycleMapper taskCycleMapper; /** * 创建循环任务 */ @@ -120,6 +124,7 @@ public class CycleServiceImpl implements CycleService { taskDetailMap.forEach((k,v) ->{ robotTaskService.addCycle(k,v); }); + taskCycleMapper.deletByRobotTaskIds(taskIds); } private List getTaskDetailData(RobotTaskDO taskData, Map robotNoLimitions = null; if (ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) { @@ -550,7 +550,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { } if (ObjectUtil.isNotEmpty(pathPlanningList)) { - log.info("作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList)); + log.info("111111作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList)); commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST); } } @@ -578,7 +578,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { Integer locationStorey = toLocation.getLocationStorey() - 1; double height = locationStorey * defaultTrayHeight; - log.info("放货设置默认高度 :{}", pathPlanning.getReleaseHeight()); + log.info("放货设置默认高度 :{}", height); pathPlanning.setReleaseHeight(height); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/TaskCycleMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/TaskCycleMapper.xml index 20015e06b..698e5b814 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/TaskCycleMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/TaskCycleMapper.xml @@ -12,4 +12,12 @@ delete from robot_task_cycle where robot_task_id = #{robotTaskId} + + delete from robot_task_cycle + where robot_task_id in + + #{robotTaskId} + + \ No newline at end of file