From a98b1ad3334d92aee1af5a2e5c439c742855cdeb Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 07 三月 2026 21:12:12 +0800
Subject: [PATCH] 合并代码
---
xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 49 insertions(+), 10 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 65f7f82..321f25e 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
@@ -6,8 +6,10 @@
import com.alibaba.fastjson2.JSON;
import com.xiaopeng.api.dto.map.OrderRouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
+import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
import com.xiaopeng.api.feignClient.map.XpMapClient;
import com.xiaopeng.api.feignClient.order.XpOrderClient;
+import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
@@ -18,20 +20,22 @@
import com.xiaopeng.api.vo.automaticPilot.proto.up.MsgContent;
import com.xiaopeng.api.vo.automaticPilot.proto.up.RTCmdType;
import com.xiaopeng.api.vo.automaticPilot.proto.up.RtMsgHeader;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.RealtimePose;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.SystemRuntimeStatus;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.VehicleStaticInfo;
-import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.Wgs;
+import com.xiaopeng.api.vo.automaticPilot.proto.up.systemStatusXpu.*;
import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.NavigationRequest;
import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.OrderPhase;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.automaticPilot.util.XPUUtil;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.utils.uuid.UUID;
+import com.xiaopeng.common.redis.service.RedisService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -61,7 +65,11 @@
@Resource
private XPUUtil xpuUtil;
+ @Autowired
+ public RedisTemplate redisTemplate;
+ @Resource
+ private XpPushMessageClient xpPushMessageClient;
/**
@@ -153,6 +161,7 @@
switch (cmd) {
case SYSTEM_STATUS_XPU:
log.info("XPU发布系统运行状态 (XPU→云端):{}", message);
+ systemStatusXpu(msgContent);
break;
case XPU_NAVIGATION_REQUEST:
log.info("XPU向云端请求导航 (XPU→云端):{}", message);
@@ -229,12 +238,42 @@
//获取车辆静态信息
VehicleStaticInfo staticInfo = systemRuntimeStatus.getVehicle_status().getStatic_info();
String vin = staticInfo.getVin();
- xpVehicleClient.
- VehiclePosition vehiclePosition = new VehiclePosition();
- vehiclePosition.setVehicle_id(staticInfo.getVehicle_id());
- mongoTemplate.save()
+ redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin);
-
+ //保存车辆实时信息到mongodb
+ VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class);
+ if(null == vehiclePosition){
+ vehiclePosition = new VehiclePosition();
+ }
+ vehiclePosition.setVin(vin);
+ vehiclePosition.setPoint(new GeoJsonPoint(longitude, latitude));
+ vehiclePosition.setCourse(course);
+ vehiclePosition.setAlt(alt);
+ VehicleStatus vehicleStatus = systemRuntimeStatus.getVehicle_status();
+ //车辆动态信息
+ VehicleDynamicStatus dynamicStatus = vehicleStatus.getDynamic_status();
+ dynamicStatus.setSpeed(dynamicStatus.getSpeed());
+ vehiclePosition.setCurrentElectricity(dynamicStatus.getBattery_level());
+ //订单信息
+ OrderStatusInfo runningOrderStatusInfo = systemRuntimeStatus.getRunning_order_status_info();
+ Long orderId = null;
+ String order_id = runningOrderStatusInfo.getOrder_id();
+ vehiclePosition.setHasOrder(0);
+ if(StringUtils.isNotEmpty(order_id)){
+ if(order_id.contains("XU")){
+ vehiclePosition.setHasOrder(1);
+ orderId = Long.parseLong(order_id.substring(2));
+ }else{
+ orderId = Long.parseLong(order_id);
+ }
+ }
+ vehiclePosition.setOrderId(orderId);
+ mongoTemplate.save(vehiclePosition);
+ //调用推送服务接口
+ SendMessageDTO dto = new SendMessageDTO();
+ dto.setAppUserId(orderId);
+ dto.setMessage(JSON.toJSONString(vehiclePosition));
+ xpPushMessageClient.sendVehicleLocation(dto);
}
@@ -301,7 +340,7 @@
//驶往上车点的行程
if(orderPhase.equals(OrderPhase.ROUTE_TO_PICKUP)){
XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
- VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("orderId").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
+ VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
if(Objects.isNull(vehiclePosition)){
throw new RuntimeException("车辆位置信息不存在");
}
--
Gitblit v1.7.1