From 7dd66f2040ffd8d8203ee53ca2eb18d253cc4744 Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Thu, 20 Mar 2025 09:00:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E8=BD=A6=E8=BE=86=E8=A7=84?= =?UTF-8?q?=E5=88=92=E8=B7=AF=E5=BE=84=E7=BB=99=E5=89=8D=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mqtt/api/path/dto/PathPosedsDTO.java | 4 +-- .../mqtt/api/path/dto/PathPosedsDataDTO.java | 3 +- .../yudao/module/mqtt/config/MqttFactory.java | 2 +- .../module/mqtt/enums/DefineSubTopicEnum.java | 4 +-- .../service/PathPlanningMoveServiceImpl.java | 4 +-- .../pathRouteDisplayPlanningServiceImpl.java | 21 ++++++++++++++ .../yudao/module/system/api/path/PathApi.java | 4 +++ .../robot/vo/PathPlanningMovePoseIdVO.java | 8 ++++++ .../api/robot/vo/PathPlanningMovePoseVO.java | 11 ++++++++ .../api/robot/vo/RobotInformationVO.java | 7 +++++ .../module/system/api/path/PathApiImpl.java | 9 ++++++ .../service/path/PathPlanningService.java | 6 ++++ .../service/path/PathPlanningServiceImpl.java | 28 +++++++++++++++++++ 13 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/pathRouteDisplayPlanningServiceImpl.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseIdVO.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseVO.java diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDTO.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDTO.java index 10d13a78d..277127a47 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDTO.java +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDTO.java @@ -12,8 +12,8 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor public class PathPosedsDTO { - private String order_id; - private String order_type; + private String orderId; + private String orderType; private String robotNo; private List data; } diff --git a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDataDTO.java b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDataDTO.java index b8452f95c..bc37a1559 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDataDTO.java +++ b/yudao-module-mqtt/yudao-module-mqtt-api/src/main/java/cn/iocoder/yudao/module/mqtt/api/path/dto/PathPosedsDataDTO.java @@ -11,5 +11,6 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class PathPosedsDataDTO { private PathPosedsDataArgDTO arg; - private Integer is_work; + private String commandType; + private Integer isCommandEnd; } diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/config/MqttFactory.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/config/MqttFactory.java index 7a570404c..e309b1796 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/config/MqttFactory.java +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/config/MqttFactory.java @@ -151,7 +151,7 @@ public class MqttFactory { return BeanUtils.getBean(PathPlanningDistributionTaskServiceImpl.class); case TASK_ASSIGNMENT_FAIL: return BeanUtils.getBean(PathPlanningDistributionFailServiceImpl.class); - case ROBOT_TASK_MOVE: + case ROBOT_MOVE_POSE_PLANNING: return BeanUtils.getBean(PathPlanningMoveServiceImpl.class); default : return BeanUtils.getBean(RobotTaskStatusServiceImpl.class); diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/enums/DefineSubTopicEnum.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/enums/DefineSubTopicEnum.java index 79bc0a92a..e2a72506d 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/enums/DefineSubTopicEnum.java +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/enums/DefineSubTopicEnum.java @@ -1,7 +1,6 @@ package cn.iododer.yudao.module.mqtt.enums; import lombok.AllArgsConstructor; -import lombok.Data; import lombok.Getter; import java.util.ArrayList; @@ -25,7 +24,8 @@ public enum DefineSubTopicEnum { SYNCHRONOUS_ALL_MAP_REQUEST("SYNCHRONOUS_ALL_MAP_REQUEST", 2,"路径规划需要初始数据上报"), TASK_ASSIGNMENT_FEEDBACK("TASK_ASSIGNMENT_FEEDBACK", 2,"路径规划任务分配上报"), TASK_ASSIGNMENT_FAIL("TASK_ASSIGNMENT_FAIL", 2,"路径规划失败上报"), - ROBOT_TASK_MOVE ("ROBOT_TASK_MOVE", 2,"路径规划上报实时路径"); + UPDATE_ROUTE_DISPLAY_PLANNING("UPDATE_ROUTE_DISPLAY_PLANNING", 2,"车辆即将走的点位"), + ROBOT_MOVE_POSE_PLANNING("ROBOT_MOVE_POSE_PLANNING", 2,"路径规划上报实时路径"); private final String topic; diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/PathPlanningMoveServiceImpl.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/PathPlanningMoveServiceImpl.java index 0bfb8ce31..de36a4384 100644 --- a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/PathPlanningMoveServiceImpl.java +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/PathPlanningMoveServiceImpl.java @@ -15,7 +15,7 @@ public class PathPlanningMoveServiceImpl implements MqttService{ @Override public void analysisMessage(String message) { - log.info("收到路径规划的消息"); - pathApi.pathPlanningMove(message); + log.info("收到路径规划规划即将要走的点位的消息 :{}",message); + pathApi.pathPlanningMovePose(message); } } diff --git a/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/pathRouteDisplayPlanningServiceImpl.java b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/pathRouteDisplayPlanningServiceImpl.java new file mode 100644 index 000000000..3611e1197 --- /dev/null +++ b/yudao-module-mqtt/yudao-module-mqtt-biz/src/main/java/cn/iododer/yudao/module/mqtt/service/pathRouteDisplayPlanningServiceImpl.java @@ -0,0 +1,21 @@ +package cn.iododer.yudao.module.mqtt.service; + +import cn.iocoder.yudao.module.system.api.path.PathApi; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Slf4j +@Service +public class pathRouteDisplayPlanningServiceImpl implements MqttService{ + + @Resource + private PathApi pathApi; + + @Override + public void analysisMessage(String message) { + log.info("收到路径规划的消息 :{}",message); + pathApi.pathPlanningMove(message); + } +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApi.java index eb079e8d4..cb73bf11d 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/path/PathApi.java @@ -28,4 +28,8 @@ public interface PathApi { @PostMapping(PREFIX + "/pathPlanningMove") @Operation(summary = "路径规划需要初始化信息") void pathPlanningMove(@RequestParam("message") String message); + + @PostMapping(PREFIX + "/pathPlanningMove") + @Operation(summary = "路径规划要走的点位信息") + void pathPlanningMovePose(@RequestParam("message") String message); } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseIdVO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseIdVO.java new file mode 100644 index 000000000..dc1cf5957 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseIdVO.java @@ -0,0 +1,8 @@ +package cn.iocoder.yudao.module.system.api.robot.vo; + +import lombok.Data; + +@Data +public class PathPlanningMovePoseIdVO { + private String id; +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseVO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseVO.java new file mode 100644 index 000000000..cccca22e2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/PathPlanningMovePoseVO.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.system.api.robot.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class PathPlanningMovePoseVO { + private String robotNo; + private List data; +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotInformationVO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotInformationVO.java index 8c4158840..f252a3d56 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotInformationVO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/robot/vo/RobotInformationVO.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.system.api.robot.vo; import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDataPoseDTO; import lombok.Data; +import java.util.List; + /** * 车机响应信息 */ @@ -24,4 +26,9 @@ public class RobotInformationVO { * 点位信息 */ public RobotStatusDataPoseDTO pose2d; + + /** + * 车辆即将走的点位 + */ + private List data; } 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 7e31eabcd..e7bf2319a 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 @@ -93,5 +93,14 @@ public class PathApiImpl implements PathApi { }); } + /** + * 车辆即将走的点位 + * @param message + */ + @Override + public void pathPlanningMovePose(String message) { + pathPlanningService.pathPlanningMovePose(message); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java index f1aca0a5d..6f32a49f1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/path/PathPlanningService.java @@ -38,4 +38,10 @@ public interface PathPlanningService { * @param type */ void updateBehavior(String orderId, String robotNo, String s, String type); + + /** + * 车辆即将走的点位 + * @param message + */ + void pathPlanningMovePose(String message); } 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 1707ac0ec..fe081abdd 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 @@ -1,11 +1,16 @@ package cn.iocoder.yudao.module.system.service.path; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mqtt.api.common.CommonApi; import cn.iocoder.yudao.module.mqtt.api.path.PathPlanningApi; import cn.iocoder.yudao.module.mqtt.api.path.dto.*; import cn.iocoder.yudao.module.mqtt.api.path.task.TaskPathPlanningDTO; +import cn.iocoder.yudao.module.system.api.robot.RequestProcessor; +import cn.iocoder.yudao.module.system.api.robot.dto.RobotPoseStatusDTO; +import cn.iocoder.yudao.module.system.api.robot.vo.PathPlanningMovePoseVO; +import cn.iocoder.yudao.module.system.api.robot.vo.RobotInformationVO; import cn.iocoder.yudao.module.system.constant.path.PathPlanningTopicConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotTopicConstant; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemSaveReqVO; @@ -69,6 +74,9 @@ public class PathPlanningServiceImpl implements PathPlanningService { @Resource private CommonApi commonApi; + @Resource + private RequestProcessor processor; + /** * 同步ware_position_map_line的点位信息 */ @@ -409,6 +417,26 @@ public class PathPlanningServiceImpl implements PathPlanningService { commonApi.commonMethod(build, PathPlanningTopicConstant.UPDATE_BEHAVIOR); } + /** + * 车辆即将走的点位 + * @param message + */ + @Override + public void pathPlanningMovePose(String message) { + + PathPlanningMovePoseVO robotStatusData = JSON.parseObject(message, PathPlanningMovePoseVO.class); + String mac = robotInformationService.getMacByRobotNo(robotStatusData.getRobotNo()); + Map robotInformationVOS = robotInformationService.getAllRobotByRedis(); + RobotInformationVO robotInformationVO = robotInformationVOS.get(mac); + if (robotInformationVO == null) { + robotInformationVO = robotInformationService.getRobotByRedis(mac); + } + robotInformationVO.setData(robotStatusData.getData()); + // 合并请求 - 这里接受到的数据都丢给 RequestProcessor - 再整合数据通过WebSocket丢给前端 + processor.handleRequest(robotInformationVO.getPose2d().getFloor() + "_" + robotInformationVO.getPose2d().getArea(), + mac, JSONUtil.toJsonStr(robotInformationVO)); + } + public PositionMapLineDTO setPositionMapLineDTOData(PositionMapLineDTO positionMapLineDO) { PositionMapLineDTO build = PositionMapLineDTO.builder() .id(positionMapLineDO.getId())