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 b2174d90d..da4c4e315 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 @@ -749,50 +749,34 @@ public class RobotTaskServiceImpl extends ServiceImpl list = Arrays.asList(distribution); - List taskList = list.stream() - .filter(v -> TaskTypeEnum.TASK.getType().equals(v.getType())) - .collect(Collectors.toList()); - - List chargeList = list.stream() - .filter(v -> TaskTypeEnum.CHARGE.getType().equals(v.getType())) - .collect(Collectors.toList()); - List detailIds = new ArrayList<>(); - Map taskMap = - list.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity())); - Map deviceNoMap = new HashMap<>(); - List robotChargeLogs = null; + RobotChargeLogDO robotChargeLogs = null; + Set robotNos = new HashSet<>(); + robotNos.add(distribution.getRobotNo()); /** * 充电 */ - if (ObjectUtil.isNotEmpty(chargeList)) { - List chargeIds = chargeList.stream().map(TaskPPDistribution::getId).collect(Collectors.toList()); - robotChargeLogs = chargeLogMapper.selectBatchIds(chargeIds); - robotChargeLogs.stream().forEach(taskDetailDO -> { - taskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.DOING.getType()); - }); + if (TaskTypeEnum.CHARGE.getType().equals(distribution.getType())) { + robotChargeLogs = chargeLogMapper.selectById(distribution.getId()); + + robotChargeLogs.setTaskStatus(RobotTaskDetailStatusEnum.DOING.getType()); chargeLogMapper.updateBatch(robotChargeLogs); - Set robotNos = chargeList.stream().map(TaskPPDistribution::getRobotNo).collect(Collectors.toSet()); + robotInformationMapper.updateRobotListStatus(robotNos,RobotStatusEnum.CHARGE.getType()); - robotChargeLogs.stream() - .filter(v -> ObjectUtil.isNotEmpty(v.getTaskDetailId())) - .forEach(v -> { - deviceNoMap.put(v.getTaskDetailId(),v.getDeviceNo()); - detailIds.add(v.getTaskDetailId()); - }); + if (ObjectUtil.isNotEmpty(robotChargeLogs.getTaskDetailId())) { + deviceNoMap.put(robotChargeLogs.getTaskDetailId(),robotChargeLogs.getDeviceNo()); + detailIds.add(robotChargeLogs.getTaskDetailId()); + } } /** * 任务 */ - if (ObjectUtil.isNotEmpty(taskList)) { - Set robotNos = taskList.stream().map(TaskPPDistribution::getRobotNo).collect(Collectors.toSet()); + if (TaskTypeEnum.TASK.getType().equals(distribution.getType())) { robotInformationMapper.updateRobotListStatus(robotNos,RobotStatusEnum.DOING.getType()); - - List ids = taskList.stream().map(TaskPPDistribution::getId).collect(Collectors.toList()); - detailIds.addAll(ids); + detailIds.add(distribution.getId()); } if (ObjectUtil.isNotEmpty(detailIds)) { @@ -800,9 +784,8 @@ public class RobotTaskServiceImpl extends ServiceImpl { taskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.DOING.getType()); taskDetailDO.setStartTime(LocalDateTime.now()); - TaskPPDistribution taskPPDistribution = taskMap.get(taskDetailDO.getId()); - if (ObjectUtil.isNotEmpty(taskPPDistribution) && ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) { - taskDetailDO.setRobotNo(taskPPDistribution.getRobotNo()); + if ( ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) { + taskDetailDO.setRobotNo(distribution.getRobotNo()); } if (ObjectUtil.isEmpty(taskDetailDO.getToLocationNo()) && ObjectUtil.isNotEmpty(deviceNoMap.get(taskDetailDO.getId()))) { @@ -821,8 +804,8 @@ public class RobotTaskServiceImpl extends ServiceImpl list); + void sendTaskToRobot(TaskPPDistribution taskPPDistribution); /** * 发送充电任务给车机 * @param chargeList */ - void sendChargeTaskToRobot(List chargeList,List robotChargeLogs); + void sendChargeTaskToRobot(TaskPPDistribution chargeList,RobotChargeLogDO robotChargeLogs); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/RobotCommonTaskServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/RobotCommonTaskServiceImpl.java index 96b754508..a072e0e3d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/RobotCommonTaskServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/RobotCommonTaskServiceImpl.java @@ -133,54 +133,51 @@ public class RobotCommonTaskServiceImpl implements RobotCommonTaskService { */ @Override @Async(NOTIFY_THREAD_POOL_TASK_EXECUTOR) - public void sendTaskToRobot(List list) { - List detailIds = list.stream().map(TaskPPDistribution::getId).collect(Collectors.toList()); - List taskDetailDOS = taskDetailMapper.selectBatchIds(detailIds); - Map taskDetailMap = - taskDetailDOS.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity())); + public void sendTaskToRobot(TaskPPDistribution v) { + RobotTaskDetailDO robotTaskDetailDO = taskDetailMapper.selectById(v.getId()); - Set fromLocationIds = taskDetailDOS.stream().map(v -> v.getFromLocationId()).collect(Collectors.toSet()); - Set toLocationIds = taskDetailDOS.stream().map(v -> v.getToLocationId()).collect(Collectors.toSet()); Set locationIds = new HashSet<>(); - locationIds.addAll(fromLocationIds); - locationIds.addAll(toLocationIds); + if (ObjectUtil.isNotEmpty(robotTaskDetailDO.getFromLocationId())) { + locationIds.add(robotTaskDetailDO.getFromLocationId()); + } + if (ObjectUtil.isNotEmpty(robotTaskDetailDO.getToLocationId())) { + locationIds.add(robotTaskDetailDO.getToLocationId()); + } List wareHouseLocationDOS = houseLocationMapper.selectList(new LambdaQueryWrapperX() .in(WareHouseLocationDO::getId, locationIds)); Map locationMap = - wareHouseLocationDOS.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity())); + wareHouseLocationDOS.stream().collect(Collectors.toMap(s -> s.getId(), Function.identity())); List logs = new ArrayList<>(); - for (TaskPPDistribution v : list) { - RobotTaskDetailDO robotTaskDetailDO = taskDetailMap.get(v.getId()); - RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO(); - robotTask.setOrder_id(v.getId().toString()); - String mac = robotInformationService.getMacByRobotNo(v.getRobotNo()); - robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac); - robotTask.setOrder_type(RobotTaksOrderTypeEnum.TASK.getType()); - //取放 - Pair, List> pair = null; - if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) { - pair = takeReleaseTask(v, robotTaskDetailDO, locationMap); - //移动 - } else if (RobotTaskTypeEnum.MOVE.getType().equals(robotTaskDetailDO.getTaskType())) { - pair = moveTask(v, robotTaskDetailDO, locationMap); - //仅取货 - } else if (RobotTaskTypeEnum.TAKE.getType().equals(robotTaskDetailDO.getTaskType())) { - pair = takeTask(v, robotTaskDetailDO, locationMap); - //仅放货 - } else if (RobotTaskTypeEnum.RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) { - pair = releaseTask(v, robotTaskDetailDO, locationMap); - } + RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO(); + robotTask.setOrder_id(v.getId().toString()); - if (ObjectUtil.isNotEmpty(pair)) { - robotTask.setData(pair.getLeft()); - logs.addAll(pair.getRight()); - log.info("发送给车机下发任务 :{}", JSON.toJSONString(robotTask)); - commonApi.commonMethod(robotTask, robotTask.getTopic()); - } + String mac = robotInformationService.getMacByRobotNo(v.getRobotNo()); + robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac); + robotTask.setOrder_type(RobotTaksOrderTypeEnum.TASK.getType()); + //取放 + Pair, List> pair = null; + if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) { + pair = takeReleaseTask(v, robotTaskDetailDO, locationMap); + //移动 + } else if (RobotTaskTypeEnum.MOVE.getType().equals(robotTaskDetailDO.getTaskType())) { + pair = moveTask(v, robotTaskDetailDO, locationMap); + //仅取货 + } else if (RobotTaskTypeEnum.TAKE.getType().equals(robotTaskDetailDO.getTaskType())) { + pair = takeTask(v, robotTaskDetailDO, locationMap); + //仅放货 + } else if (RobotTaskTypeEnum.RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) { + pair = releaseTask(v, robotTaskDetailDO, locationMap); + } + + if (ObjectUtil.isNotEmpty(pair)) { + robotTask.setData(pair.getLeft()); + logs.addAll(pair.getRight()); + log.info("发送给车机下发任务 :{}", JSON.toJSONString(robotTask)); + commonApi.commonMethod(robotTask, robotTask.getTopic()); } taskDetailActionLogService.addLogInCache(logs); @@ -667,41 +664,35 @@ public class RobotCommonTaskServiceImpl implements RobotCommonTaskService { */ @Override @Async(NOTIFY_THREAD_POOL_TASK_EXECUTOR) - public void sendChargeTaskToRobot(List chargeList, List robotChargeLogs) { - if (ObjectUtil.isEmpty(chargeList) || ObjectUtil.isEmpty(robotChargeLogs)) { + public void sendChargeTaskToRobot(TaskPPDistribution v, RobotChargeLogDO chargeLogDO) { + if (ObjectUtil.isEmpty(v) || ObjectUtil.isEmpty(chargeLogDO)) { return; } - Map chargeMap = - robotChargeLogs.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity())); - List logList = new ArrayList<>(); - for (TaskPPDistribution v : chargeList) { - RobotChargeLogDO chargeLogDO = chargeMap.get(v.getId()); - RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO(); - robotTask.setOrder_id(v.getId().toString()); - String mac = robotInformationService.getMacByRobotNo(v.getRobotNo()); - robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac); - robotTask.setOrder_type(RobotTaksOrderTypeEnum.AUTO_CHARGE.getType()); + RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO(); + robotTask.setOrder_id(v.getId().toString()); - Integer serial = 1; + String mac = robotInformationService.getMacByRobotNo(v.getRobotNo()); + robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac); + robotTask.setOrder_type(RobotTaksOrderTypeEnum.AUTO_CHARGE.getType()); - List list = new ArrayList<>(); - //移动 - RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO(); - String msg = charge + chargeLogDO.getDeviceNo(); - RobotAcceptTaskData oneMoveAndFork = onlyMove(logOne, serial, v, msg); + Integer serial = 1; - list.add(oneMoveAndFork); - robotTask.setData(list); - logList.add(logOne); + List list = new ArrayList<>(); + //移动 + RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO(); + String msg = charge + chargeLogDO.getDeviceNo(); + RobotAcceptTaskData oneMoveAndFork = onlyMove(logOne, serial, v, msg); - log.info("发送给车机下发--充电任务 :{}", JSON.toJSONString(robotTask)); - commonApi.commonMethod(robotTask, robotTask.getTopic()); - } + list.add(oneMoveAndFork); + robotTask.setData(list); + logList.add(logOne); + + log.info("发送给车机下发--充电任务 :{}", JSON.toJSONString(robotTask)); + commonApi.commonMethod(robotTask, robotTask.getTopic()); - //todo 充电后往 task_detail更新下 to_location_no taskDetailActionLogService.addLogInCache(logList); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/application-local.yaml b/yudao-module-system/yudao-module-system-biz/src/main/resources/application-local.yaml index b46adfdaa..6abd476fe 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/application-local.yaml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/application-local.yaml @@ -245,8 +245,8 @@ zn: scan: 机器人正在扫描 parking_space: 机器人正在前往停车位 charge: 机器人正在前往充电位 - action_entity_cache_time: 8*60*60 #机器人所有动作缓存时间 - doing_action_cache_time: 3*60*60 #单个动作缓存时间 + action_entity_cache_time: 28800 #机器人所有动作缓存时间 8小时 + doing_action_cache_time: 28800 #单个动作缓存时间 8小时 robot_chearg: #机器人充电的配置 release_location_number_config: 50 #同一组序号,越大越先执行 priority_config: 50 #优先级