上报车辆规划路径给前端

This commit is contained in:
cbs 2025-03-20 09:00:33 +08:00
parent 2c213025ea
commit 7dd66f2040
13 changed files with 103 additions and 8 deletions

View File

@ -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<PathPosedsDataDTO> data;
}

View File

@ -11,5 +11,6 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class PathPosedsDataDTO {
private PathPosedsDataArgDTO arg;
private Integer is_work;
private String commandType;
private Integer isCommandEnd;
}

View File

@ -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);

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -0,0 +1,8 @@
package cn.iocoder.yudao.module.system.api.robot.vo;
import lombok.Data;
@Data
public class PathPlanningMovePoseIdVO {
private String id;
}

View File

@ -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<PathPlanningMovePoseIdVO> data;
}

View File

@ -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<PathPlanningMovePoseIdVO> data;
}

View File

@ -93,5 +93,14 @@ public class PathApiImpl implements PathApi {
});
}
/**
* 车辆即将走的点位
* @param message
*/
@Override
public void pathPlanningMovePose(String message) {
pathPlanningService.pathPlanningMovePose(message);
}
}

View File

@ -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);
}

View File

@ -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<String, RobotInformationVO> 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())