From 4f6fd7d80765009a2828369593faacd71a7add01 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Wed, 4 Jun 2025 17:01:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/tool/ToolsController.java | 9 +++++++++ .../admin/tool/dto/SendMsgToMqttDTO.java | 14 ++++++++++++++ .../service/path/PathPlanningServiceImpl.java | 11 +++++++---- .../positionmap/PositionMapItemServiceImpl.java | 3 ++- .../robot/RobotInformationServiceImpl.java | 3 +++ .../RobotPathPlanningServiceImpl.java | 16 +++++++--------- .../module/system/service/tool/ToolsService.java | 8 ++++++++ .../system/service/tool/ToolsServiceImpl.java | 6 ++++++ 8 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/dto/SendMsgToMqttDTO.java diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/ToolsController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/ToolsController.java index 15eba3e08..b934dbde7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/ToolsController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/ToolsController.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.tool; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotInformationSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.tool.dto.SendMsgToMqttDTO; import cn.iocoder.yudao.module.system.service.tool.ToolsService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -55,4 +56,12 @@ public class ToolsController { toolsService.simulationPose(); return success("同步完成"); } + + @PostMapping("/sendMsgToMQTT") + @Operation(summary = "发送消息给MQTT") + @PermitAll + public CommonResult sendMsgToMQTT( @RequestBody SendMsgToMqttDTO dto) { + toolsService.sendMsgToMQTT(dto); + return success("发送完成"); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/dto/SendMsgToMqttDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/dto/SendMsgToMqttDTO.java new file mode 100644 index 000000000..5e6c06c4e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tool/dto/SendMsgToMqttDTO.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.system.controller.admin.tool.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class SendMsgToMqttDTO { + + @Schema(description = "消息") + private String msg; + + @Schema(description = "主题topic") + private String topic; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java index fee971514..8b8b643e3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningServiceImpl.java @@ -59,6 +59,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -499,6 +500,7 @@ public class PathPlanningServiceImpl implements PathPlanningService { */ @Override public void pathPlanningMovePose(String message) { + log.info("车辆即将行走的点位 :{}",message); PathPlanningMovePoseVO robotStatusData = JSON.parseObject(message, PathPlanningMovePoseVO.class); String mac = robotInformationService.getMacByRobotNo(robotStatusData.getRobotNo()); String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + mac; @@ -546,13 +548,14 @@ public class PathPlanningServiceImpl implements PathPlanningService { return; } - List itemDOList = new ArrayList<>(); + List itemDOList = new LinkedList<>(); List items = positionMapItemService.getPositionMapItemByMapAndType(positionMap.getId(), PositionMapItemEnum.STOP.getType()); - if (ObjectUtil.isEmpty(items) || items.size() < robots.size()) { + if (ObjectUtil.isNotEmpty(items)) { + itemDOList.addAll(items); + } + if ( itemDOList.size() < robots.size()) { List itemPoses = positionMapItemService.getPositionMapItemByMapAndType(positionMap.getId(), PositionMapItemEnum.PATH.getType()); itemDOList.addAll(itemPoses); - } else { - itemDOList = items; } List simulationList = new ArrayList<>(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java index 1bf8bf8ad..e279d91c1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapItemServiceImpl.java @@ -174,7 +174,8 @@ public class PositionMapItemServiceImpl extends ServiceImpl getPositionMapItemByMapAndType(Long mapId, Integer type) { return positionMapItemMapper.selectList(new LambdaQueryWrapperX() .eq(PositionMapItemDO::getPositionMapId, mapId) - .eq(PositionMapItemDO::getType, type)); + .eq(PositionMapItemDO::getType, type) + .orderByDesc(PositionMapItemDO::getId)); } /** 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 1618635a5..19bb5f8c2 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 @@ -506,6 +506,9 @@ public class RobotInformationServiceImpl extends ServiceImpl RobotDimensions = informationMapper.selectRobotDimensions(); commonApi.commonMethod(RobotDimensions, PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS); + String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT + robotInformationDO.getMacAddress(); + redisUtil.del(pose2dKey); + redisUtil.del(key); //地图相关 String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + robotInformationDO.getMacAddress(); 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 1ea7aaee7..e1243f5ae 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 @@ -218,19 +218,20 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { List robotMapItems = new ArrayList<>(); if (ObjectUtil.isNotEmpty(existMapItems)) { - for (PositionMapItemDO positionMapItem : positionMapItems) { - robotNos.removeIf(v -> v.equals(positionMapItem.getRobotNo())); - if (UseStatusEnum.USEING.getType().equals(positionMapItem.getUseStatus())) { - continue; + for (PositionMapItemDO positionMapItem : existMapItems) { + if (ObjectUtil.isEmpty(robots)) { + break; } + robotNos.removeIf(v -> v.equals(positionMapItem.getRobotNo())); positionMapItem.setUseStatus(UseStatusEnum.PRE_OCCUPANCY.getType()); robotMapItems.add(positionMapItem); + positionMapItems.removeIf(v -> v.getId().equals(positionMapItem.getId())); } } if (ObjectUtil.isNotEmpty(robotNos)) { List emptyMapItems = positionMapItems.stream() - .filter(v -> ObjectUtil.isEmpty(v.getRobotNo())) + .filter(v -> UseStatusEnum.FREE.getType().equals(v.getUseStatus())) .collect(Collectors.toList()); if (ObjectUtil.isNotEmpty(emptyMapItems)) { for (PositionMapItemDO positionMapItem : emptyMapItems) { @@ -250,11 +251,8 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { return; } - Map positionMap = - robotMapItems.stream().collect(Collectors.toMap(PositionMapItemDO::getRobotNo, Function.identity())); Map sortMap = positionMapItems.stream().collect(Collectors.toMap(PositionMapItemDO::getId, PositionMapItemDO::getSortNum)); - //机器人不能行走的区域 List robotNoLimitationArea = getRobotNoLimitationArea(robots); Map robotNoLimittationAreaDTOMap = @@ -296,7 +294,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService { .build(); TaskRobotNoLimittationAreaDTO taskRobotNoLimittationAreaDTO = robotNoLimittationAreaDTOMap.get(v.getRobotNo()); - List robotNoLimitions = Arrays.asList(taskRobotNoLimittationAreaDTO); + List robotNoLimitions = Collections.singletonList(taskRobotNoLimittationAreaDTO); pathPlanning.setRobotNoLimitationAreaDTOS(robotNoLimitions); String key = PathPlanningChcheConstant.PATH_PLANNING_TASK + pathPlanning.getOrderId(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsService.java index 90ca55065..dce8c1816 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsService.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.system.service.tool; +import cn.iocoder.yudao.module.system.controller.admin.tool.dto.SendMsgToMqttDTO; + import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; @@ -14,4 +16,10 @@ public interface ToolsService { String updateWarnCode(); void simulationPose(); + + /** + * 发送消息给MQTT + * @param dto + */ + void sendMsgToMQTT(SendMsgToMqttDTO dto); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsServiceImpl.java index 7fcfa8979..e640be08c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tool/ToolsServiceImpl.java @@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.system.constant.robot.RobotTopicConstant; import cn.iocoder.yudao.module.system.controller.admin.config.dto.TaskOrderConfigDTO; import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigVO; import cn.iocoder.yudao.module.system.controller.admin.tool.dto.CleanAgvDTO; +import cn.iocoder.yudao.module.system.controller.admin.tool.dto.SendMsgToMqttDTO; import cn.iocoder.yudao.module.system.dal.dataobject.config.CommonConfigDO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO; import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO; @@ -244,6 +245,11 @@ public class ToolsServiceImpl implements ToolsService { } } + @Override + public void sendMsgToMQTT(SendMsgToMqttDTO dto) { + commonApi.commonMethodStr(dto.getMsg(),dto.getTopic()); + } + public void addWarnMsg() { RobotWarnMsgDO warnMsg = RobotWarnMsgDO.builder().warnLevel(4)