From c81204af3accb5656db714408c07833e65db0645 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 13 二月 2026 16:07:58 +0800
Subject: [PATCH] 合并代码
---
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java | 74 ++++++++++++++++++++++---------------
1 files changed, 44 insertions(+), 30 deletions(-)
diff --git a/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 07fff2e..5fa5dec 100644
--- a/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -247,9 +247,6 @@
* @param msgContent
*/
public void systemStatusXpu(MsgContent msgContent) {
- //先响应消息
- Long sequence = msgContent.getHeader().getSequence();
- responseMessage(sequence);
//开始处理消息对应的业务逻辑
SystemRuntimeStatus systemRuntimeStatus = msgContent.getContent_detail().getObject("systemRuntimeStatus", SystemRuntimeStatus.class);
//获取实时位姿
@@ -262,6 +259,10 @@
//获取车辆静态信息
VehicleStaticInfo staticInfo = systemRuntimeStatus.getVehicle_status().getStatic_info();
String vin = staticInfo.getVin();
+ //先响应消息
+ Long sequence = msgContent.getHeader().getSequence();
+ responseMessage(sequence, vin);
+ //保存车辆实时位置到redis
redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin);
//保存车辆实时信息到mongodb
@@ -314,9 +315,6 @@
* @param msgContent
*/
public void xpuNavigationRequest(MsgContent msgContent) {
- //先响应消息
- Long sequence = msgContent.getHeader().getSequence();
- responseMessage(sequence);
//开始处理消息对应的业务逻辑
NavigationRequest naviRequest = msgContent.getContent_detail().getObject("naviRequest", NavigationRequest.class);
String orderId = naviRequest.getOrder_id();
@@ -330,15 +328,15 @@
break;
case ROUTE_TO_PICKUP:
log.info("驶往上车点的行程");
- buildNaviRequest(orderId, taskId, orderPhase);
+ buildNaviRequest(orderId, taskId, orderPhase, msgContent.getHeader().getSequence());
break;
case ROUTE_TO_DESTINATION:
log.info("驶往下车点的行程");
- buildNaviRequest(orderId, taskId, orderPhase);
+ buildNaviRequest(orderId, taskId, orderPhase, msgContent.getHeader().getSequence());
break;
case ROUTE_TO_CRUISE:
log.info("巡游阶段路线");
- buildNaviRequest(orderId, taskId, orderPhase);
+ buildNaviRequest(orderId, taskId, orderPhase, msgContent.getHeader().getSequence());
break;
}
}
@@ -352,7 +350,6 @@
public void navigationDeviationEvent(MsgContent msgContent) {
//先响应消息
Long sequence = msgContent.getHeader().getSequence();
- responseMessage(sequence);
//开始处理消息对应的业务逻辑
NavigationDeviationEvent deviationEvent = msgContent.getContent_detail().getObject("deviationEvent", NavigationDeviationEvent.class);
//偏航事件类型 1:请求导航,2:取消导航
@@ -374,6 +371,8 @@
origin.setLatitude(latitude);
destination.setLongitude(116.40528);
destination.setLatitude(39.90498);
+ //响应消息
+ responseMessage(sequence, "");
} else {
//正常单
R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
@@ -381,6 +380,9 @@
throw new RuntimeException("订单不存在");
}
XpOrder xpOrder = xpOrderR.getData();
+ XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
+ //响应消息
+ responseMessage(sequence, xpVehicle.getVehicleVin());
//驶往上车点的行程
if (Arrays.asList(3).contains(xpOrder.getStatus())) {
//查询司机当前位置到起点的线路
@@ -407,7 +409,7 @@
}
RouteVo routeVo = routeVoR.getData();
//构建导航下发请求对象
- cloudOrderOperation(orderType, orderId, taskId, routeVo);
+ cloudOrderOperation(orderType, orderId, taskId, routeVo, xpVehicle.getVehicleVin());
}
}
}
@@ -420,7 +422,7 @@
* @param taskId
* @param orderPhase
*/
- public void buildNaviRequest(String orderId, String taskId, OrderPhase orderPhase) {
+ public void buildNaviRequest(String orderId, String taskId, OrderPhase orderPhase, Long sequence) {
//订单类型 1:乘客订单,2=巡游订单
Integer orderType = 1;
LonLatDto destination = new LonLatDto();
@@ -434,6 +436,9 @@
origin.setLatitude(39.90498);
destination.setLongitude(116.40528);
destination.setLatitude(39.90498);
+
+ //先响应消息
+ responseMessage(sequence, "");
}
} else {
//正常单
@@ -445,6 +450,9 @@
//驶往上车点的行程
if (orderPhase.equals(OrderPhase.ROUTE_TO_PICKUP)) {
XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
+ //先响应消息
+ responseMessage(sequence, xpVehicle.getVehicleVin());
+ //查询车辆位置
VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
if (Objects.isNull(vehiclePosition)) {
throw new RuntimeException("车辆位置信息不存在");
@@ -471,9 +479,10 @@
if (200 != routeVoR.getCode()) {
throw new RuntimeException("获取订单线路和运费失败");
}
+ XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
RouteVo routeVo = routeVoR.getData();
//构建导航下发请求对象
- cloudOrderOperation(orderType, orderId, taskId, routeVo);
+ cloudOrderOperation(orderType, orderId, taskId, routeVo, xpVehicle.getVehicleVin());
}
}
@@ -483,7 +492,7 @@
*
* @param routeVo
*/
- public void cloudOrderOperation(Integer orderType, String orderId, String taskId, RouteVo routeVo) {
+ public void cloudOrderOperation(Integer orderType, String orderId, String taskId, RouteVo routeVo, String vin) {
//构建消息体
OrderOperation orderOperation = new OrderOperation();
orderOperation.setOrder_id(orderId);
@@ -519,19 +528,19 @@
}
orderOperation.setWaypoints(waypoints);
//开发发送请求到XPU
- xpuUtil.cloudOrderOperation(orderOperation);
+ xpuUtil.cloudOrderOperation(orderOperation, vin);
}
/**
* 构建响应消息
*/
- public void responseMessage(Long request_seq) {
+ public void responseMessage(Long request_seq, String vin) {
ResponseMessage responseMessage = new ResponseMessage();
responseMessage.setRequest_seq(request_seq);
responseMessage.setCode(StatusCode.OK);
responseMessage.setTimestamp(System.currentTimeMillis());
- xpuUtil.responseMessage(responseMessage);
+ xpuUtil.responseMessage(responseMessage, vin);
}
@@ -542,7 +551,6 @@
public void orderStateUpdateEvent(MsgContent msgContent) {
//先响应消息
Long sequence = msgContent.getHeader().getSequence();
- responseMessage(sequence);
//开始处理消息对应的业务逻辑
OrderStatusInfoEvent orderStatusInfoEvent = msgContent.getContent_detail().getObject("orderStatusInfoEvent", OrderStatusInfoEvent.class);
//只处理请求消息
@@ -558,7 +566,7 @@
break;
case ORDER_RECEIVED:
//收到订单
- buildPushOrderStatus(orderId, OrderStatusEnum.READY_DEPART);
+ buildPushOrderStatus(orderId, OrderStatusEnum.READY_DEPART, sequence);
break;
case ORDER_STARTED:
//开始执行订单
@@ -566,7 +574,7 @@
break;
case ORDER_EN_ROUTE_TO_PICKUP:
//前往上车点
- buildPushOrderStatus(orderId, OrderStatusEnum.PICK_UP);
+ buildPushOrderStatus(orderId, OrderStatusEnum.PICK_UP, sequence);
break;
case ORDER_ARRIVED_AT_PICKUP:
//到达上车点
@@ -574,15 +582,15 @@
break;
case ORDER_WAITING_FOR_PICKUP:
//等待乘客上车
- buildPushOrderStatus(orderId, OrderStatusEnum.PICK_UP_GUESTS);
+ buildPushOrderStatus(orderId, OrderStatusEnum.PICK_UP_GUESTS, sequence);
break;
case ORDER_PASSENGER_ONBOARD:
//乘客已上车
- buildPushOrderStatus(orderId, OrderStatusEnum.PASSENGER_BOARDED);
+ buildPushOrderStatus(orderId, OrderStatusEnum.PASSENGER_BOARDED, sequence);
break;
case ORDER_EN_ROUTE_TO_DESTINATION:
//前往目的地
- buildPushOrderStatus(orderId, OrderStatusEnum.IN_SERVICE);
+ buildPushOrderStatus(orderId, OrderStatusEnum.IN_SERVICE, sequence);
break;
case ORDER_ARRIVED_AT_DESTINATION:
//到达目的地
@@ -590,11 +598,11 @@
break;
case ORDER_WAITING_FOR_DROPOFF:
//等待乘客下车
- buildPushOrderStatus(orderId, OrderStatusEnum.SEE_OFF_GUESTS);
+ buildPushOrderStatus(orderId, OrderStatusEnum.SEE_OFF_GUESTS, sequence);
break;
case ORDER_DROPOFF_COMPLETED:
//下车完成
- buildPushOrderStatus(orderId, OrderStatusEnum.APPROVAL_REJECTION);
+ buildPushOrderStatus(orderId, OrderStatusEnum.APPROVAL_REJECTION, sequence);
break;
case ORDER_COMPLETED:
//已完成
@@ -602,11 +610,11 @@
break;
case ORDER_CANCELLED:
//已取消
- buildPushOrderStatus(orderId, OrderStatusEnum.CANCELED);
+ buildPushOrderStatus(orderId, OrderStatusEnum.CANCELED, sequence);
break;
case ORDER_ARRIVED_AT_CRUISE_DESTINATION:
//到达巡游终点
- buildPushOrderStatus(orderId, null);
+ buildPushOrderStatus(orderId, null, sequence);
break;
case ORDER_PAUSED:
//订单暂停
@@ -624,11 +632,19 @@
* @param orderId
* @param status
*/
- public void buildPushOrderStatus(String orderId, OrderStatusEnum status){
+ public void buildPushOrderStatus(String orderId, OrderStatusEnum status, Long sequence){
if(orderId.contains("XU")){
//巡游单
+ //响应消息
+ responseMessage(sequence, "");
}else{
//普通单
+ R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
+ XpOrder xpOrder = xpOrderR.getData();
+ XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
+ //响应消息
+ responseMessage(sequence, xpVehicle.getVehicleVin());
+
//构建推送消息
Map<String, Object> params = new HashMap<>();
Map<String, Object> content = new HashMap<>();
@@ -638,8 +654,6 @@
params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content));
params.put("timestamp", System.currentTimeMillis() + "");
String message = JSONObject.toJSONString(params);
- R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
- XpOrder xpOrder = xpOrderR.getData();
Long appUserId = xpOrder.getAppUserId();
SendMessageDTO dto = new SendMessageDTO();
dto.setAppUserId(appUserId + "");
--
Gitblit v1.7.1