上报车辆规划路径给前端

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 @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class PathPosedsDTO { public class PathPosedsDTO {
private String order_id; private String orderId;
private String order_type; private String orderType;
private String robotNo; private String robotNo;
private List<PathPosedsDataDTO> data; private List<PathPosedsDataDTO> data;
} }

View File

@ -11,5 +11,6 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public class PathPosedsDataDTO { public class PathPosedsDataDTO {
private PathPosedsDataArgDTO arg; 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); return BeanUtils.getBean(PathPlanningDistributionTaskServiceImpl.class);
case TASK_ASSIGNMENT_FAIL: case TASK_ASSIGNMENT_FAIL:
return BeanUtils.getBean(PathPlanningDistributionFailServiceImpl.class); return BeanUtils.getBean(PathPlanningDistributionFailServiceImpl.class);
case ROBOT_TASK_MOVE: case ROBOT_MOVE_POSE_PLANNING:
return BeanUtils.getBean(PathPlanningMoveServiceImpl.class); return BeanUtils.getBean(PathPlanningMoveServiceImpl.class);
default : default :
return BeanUtils.getBean(RobotTaskStatusServiceImpl.class); return BeanUtils.getBean(RobotTaskStatusServiceImpl.class);

View File

@ -1,7 +1,6 @@
package cn.iododer.yudao.module.mqtt.enums; package cn.iododer.yudao.module.mqtt.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import java.util.ArrayList; import java.util.ArrayList;
@ -25,7 +24,8 @@ public enum DefineSubTopicEnum {
SYNCHRONOUS_ALL_MAP_REQUEST("SYNCHRONOUS_ALL_MAP_REQUEST", 2,"路径规划需要初始数据上报"), SYNCHRONOUS_ALL_MAP_REQUEST("SYNCHRONOUS_ALL_MAP_REQUEST", 2,"路径规划需要初始数据上报"),
TASK_ASSIGNMENT_FEEDBACK("TASK_ASSIGNMENT_FEEDBACK", 2,"路径规划任务分配上报"), TASK_ASSIGNMENT_FEEDBACK("TASK_ASSIGNMENT_FEEDBACK", 2,"路径规划任务分配上报"),
TASK_ASSIGNMENT_FAIL("TASK_ASSIGNMENT_FAIL", 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; private final String topic;

View File

@ -15,7 +15,7 @@ public class PathPlanningMoveServiceImpl implements MqttService{
@Override @Override
public void analysisMessage(String message) { public void analysisMessage(String message) {
log.info("收到路径规划的消息"); log.info("收到路径规划规划即将要走的点位的消息 :{}",message);
pathApi.pathPlanningMove(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") @PostMapping(PREFIX + "/pathPlanningMove")
@Operation(summary = "路径规划需要初始化信息") @Operation(summary = "路径规划需要初始化信息")
void pathPlanningMove(@RequestParam("message") String message); 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 cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDataPoseDTO;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 车机响应信息 * 车机响应信息
*/ */
@ -24,4 +26,9 @@ public class RobotInformationVO {
* 点位信息 * 点位信息
*/ */
public RobotStatusDataPoseDTO pose2d; 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 * @param type
*/ */
void updateBehavior(String orderId, String robotNo, String s, String 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; package cn.iocoder.yudao.module.system.service.path;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 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.common.CommonApi;
import cn.iocoder.yudao.module.mqtt.api.path.PathPlanningApi; 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.dto.*;
import cn.iocoder.yudao.module.mqtt.api.path.task.TaskPathPlanningDTO; 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.path.PathPlanningTopicConstant;
import cn.iocoder.yudao.module.system.constant.robot.RobotTopicConstant; import cn.iocoder.yudao.module.system.constant.robot.RobotTopicConstant;
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapItemSaveReqVO;
@ -69,6 +74,9 @@ public class PathPlanningServiceImpl implements PathPlanningService {
@Resource @Resource
private CommonApi commonApi; private CommonApi commonApi;
@Resource
private RequestProcessor processor;
/** /**
* 同步ware_position_map_line的点位信息 * 同步ware_position_map_line的点位信息
*/ */
@ -409,6 +417,26 @@ public class PathPlanningServiceImpl implements PathPlanningService {
commonApi.commonMethod(build, PathPlanningTopicConstant.UPDATE_BEHAVIOR); 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) { public PositionMapLineDTO setPositionMapLineDTOData(PositionMapLineDTO positionMapLineDO) {
PositionMapLineDTO build = PositionMapLineDTO.builder() PositionMapLineDTO build = PositionMapLineDTO.builder()
.id(positionMapLineDO.getId()) .id(positionMapLineDO.getId())