diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/AutoChargeServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/AutoChargeServiceImpl.java index 5a77f2e38..4b006edd3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/AutoChargeServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/job/AutoChargeServiceImpl.java @@ -129,11 +129,12 @@ public class AutoChargeServiceImpl implements AutoChargeService { log.info("没有充电中的车辆"); return; } - chargeIngRobots = getCanLeaveChargingRobots(chargeIngRobots, chargeConfig, robots.size()); - if (ObjectUtil.isEmpty(chargeIngRobots)) { + List moveToWaitRobots = getCanLeaveChargingRobots(chargeIngRobots, chargeConfig, robots.size()); + if (ObjectUtil.isEmpty(moveToWaitRobots)) { log.info("充电中的车辆未充满电"); return; } + robotPathPlanningService.moveRobotToWait(moveToWaitRobots); return; } @@ -192,6 +193,7 @@ public class AutoChargeServiceImpl implements AutoChargeService { private List getCanLeaveChargingRobots(List robots, CommonConfigVO chargeConfig, int sum) { List needChargeRobots = new ArrayList<>(); Map map = new HashMap<>(); + Map robotMap = new HashMap<>(); for (RobotInformationDO robot : robots) { String taskStatusKey = RobotTaskChcheConstant.ROBOT_TASK_STATUS + robot.getMacAddress(); String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + robot.getMacAddress(); @@ -215,6 +217,7 @@ public class AutoChargeServiceImpl implements AutoChargeService { Object o = redisUtil.get(socKey); Integer soc = ObjectUtil.isEmpty(o) ? 0 : Integer.parseInt(o.toString()); map.put(robot.getRobotNo(), soc); + robotMap.put(robot.getRobotNo(),robot); } } @@ -226,9 +229,14 @@ public class AutoChargeServiceImpl implements AutoChargeService { .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x1, x2) -> x2, LinkedHashMap::new)); - - - + log.info("排序后的集合 :{}",JSON.toJSONString(map)); + for (Map.Entry item : map.entrySet()) { + if (needChargeRobots.size() > sum) { + break; + } + needChargeRobots.add(robotMap.get(item.getKey())); + } + log.info("充电达到阀值,可以移动到等待点的车辆 :{}",JSON.toJSONString(needChargeRobots)); return needChargeRobots; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningService.java index abad18799..937890492 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningService.java @@ -17,4 +17,6 @@ public interface RobotPathPlanningService { List robots); List getRobotNoLimitationArea(List robots); + + void moveRobotToWait(List robots); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningServiceImpl.java index 37f835f7d..1ea7aaee7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/pathplanning/RobotPathPlanningServiceImpl.java @@ -181,7 +181,8 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { * * @param robots */ - private void moveRobotToWait(List robots) { + @Override + public void moveRobotToWait(List robots) { List detailDOS = robotTaskDetailMapper.selectAutoCreateCycleTask();