From e37722d388a79ea62c27307c59afb334d43f39a4 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 05 三月 2026 15:44:15 +0800
Subject: [PATCH] 修改车辆位置存储逻辑

---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java |   76 +++++++++++++++++++++++++------------
 1 files changed, 51 insertions(+), 25 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 416565a..fc87691 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -28,7 +28,7 @@
 import com.xiaopeng.api.vo.OrderType;
 import com.xiaopeng.api.vo.SystemEventType;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
-import com.xiaopeng.api.vo.automaticPilot.protobuf.RTCmdType;
+import com.xiaopeng.api.vo.automaticPilot.protobuf.*;
 import com.xiaopeng.api.vo.operation.RouteVo;
 import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo;
 import com.xiaopeng.automaticPilot.util.XPUUtil;
@@ -46,6 +46,8 @@
 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.mongodb.core.query.Update;
+import org.springframework.data.mongodb.core.query.UpdateDefinition;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
@@ -275,32 +277,56 @@
         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.getVehicleStatus();
-        //车辆动态信息
-        VehicleDynamicStatus dynamicStatus = vehicleStatus.getDynamicStatus();
-        vehiclePosition.setSpeed(dynamicStatus.getSpeed());
-        vehiclePosition.setCurrentElectricity(dynamicStatus.getBmsSocDisp());
-        vehiclePosition.setMileageRange(dynamicStatus.getDstBatDisp());
-        //订单信息
-        OrderStatusInfo runningOrderStatusInfo = systemRuntimeStatus.getRunningOrderStatusInfo();
-        Long orderId = null;
-        String order_id = runningOrderStatusInfo.getOrderId();
-        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.setVin(vin);
+            vehiclePosition.setPoint(new GeoJsonPoint(longitude, latitude));
+            vehiclePosition.setCourse(course);
+            vehiclePosition.setAlt(alt);
+            VehicleStatus vehicleStatus = systemRuntimeStatus.getVehicleStatus();
+            //车辆动态信息
+            VehicleDynamicStatus dynamicStatus = vehicleStatus.getDynamicStatus();
+            vehiclePosition.setSpeed(dynamicStatus.getSpeed());
+            vehiclePosition.setCurrentElectricity(dynamicStatus.getBmsSocDisp());
+            vehiclePosition.setMileageRange(dynamicStatus.getDstBatDisp());
+            //订单信息
+            OrderStatusInfo runningOrderStatusInfo = systemRuntimeStatus.getRunningOrderStatusInfo();
+            Long orderId = null;
+            String order_id = runningOrderStatusInfo.getOrderId();
+            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);
+        }else{
+            VehicleDynamicStatus dynamicStatus = vehicleStatus.getDynamicStatus();
+            String order_id = runningOrderStatusInfo.getOrderId();
+            Long orderId = null;
+            Integer hasOrder = 0;
+            if (StringUtils.isNotEmpty(order_id)) {
+                if (order_id.contains("XU")) {
+                    hasOrder = 1;
+                    orderId = Long.parseLong(order_id.substring(2));
+                } else {
+                    orderId = Long.parseLong(order_id);
+                }
+            }
+            vehiclePosition.setOrderId(orderId);
+            Update update = new Update()
+                    .set("point", new GeoJsonPoint(longitude, latitude))
+                    .set("course", course)
+                    .set("alt", alt)
+                    .set("speed", dynamicStatus.getSpeed())
+                    .set("currentElectricity", dynamicStatus.getBmsSocDisp())
+                    .set("mileageRange", dynamicStatus.getDstBatDisp())
+                    .set("hasOrder", hasOrder)
+                    .set("orderId", orderId);
+            mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(vin)), update, VehiclePosition.class);
         }
-        vehiclePosition.setOrderId(orderId);
-        mongoTemplate.save(vehiclePosition);
         //调用推送服务接口
         if (null != orderId) {
             RtTripInfo rtTripInfo = systemRuntimeStatus.getRtTripInfo();

--
Gitblit v1.7.1