From 8ed881dab49e67b329ba45f5de41324cb22f1e07 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 07 三月 2026 10:18:19 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi

---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java |   67 +++++++++++++++++++++++----------
 1 files changed, 47 insertions(+), 20 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
index eafbff7..1a25399 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -38,6 +38,7 @@
 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.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
@@ -294,6 +295,7 @@
 
         ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1000));
         Long finalOrderId = orderId;
+        Long finalOrderId1 = orderId;
         threadPoolExecutor.execute(() -> {
             //等待10秒后开始执行车子位移
             try {
@@ -313,17 +315,29 @@
                 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(60D);
+                    vehiclePosition.setAlt(100F);
+                    vehiclePosition.setSpeed(50F);
+                    vehiclePosition.setCurrentElectricity(80);
+                    vehiclePosition.setMileageRange(300f);
+                    vehiclePosition.setHasOrder(0);
+                    vehiclePosition.setOrderId(finalOrderId1);
+                    mongoTemplate.save(vehiclePosition);
+                }else{
+                    vehiclePosition.setOrderId(finalOrderId1);
+                    Update update = new Update()
+                            .set("point", new GeoJsonPoint(longitude, latitude))
+                            .set("course", 60D)
+                            .set("alt", 100F)
+                            .set("speed", 50F)
+                            .set("currentElectricity", 80)
+                            .set("mileageRange", 300f)
+                            .set("hasOrder", 0)
+                            .set("orderId", finalOrderId1);
+                    mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(vin)), update, VehiclePosition.class);
                 }
-                vehiclePosition.setVin(vin);
-                vehiclePosition.setPoint(new GeoJsonPoint(longitude, latitude));
-                vehiclePosition.setCourse(60D);
-                vehiclePosition.setAlt(100F);
-                //车辆动态信息
-                vehiclePosition.setSpeed(50F);
-                vehiclePosition.setCurrentElectricity(80);
-                vehiclePosition.setMileageRange(300f);
-                vehiclePosition.setOrderId(finalOrderId);
-                mongoTemplate.save(vehiclePosition);
                 //调用推送服务接口
                 if (null != finalOrderId) {
                     PushOrderRouteDTO dto = new PushOrderRouteDTO();
@@ -460,6 +474,7 @@
 
         ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1000));
         Long finalOrderId = orderId;
+        Long finalOrderId1 = orderId;
         threadPoolExecutor.execute(() -> {
             //等待10秒后开始执行车子位移
             try {
@@ -480,17 +495,29 @@
                 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(60D);
+                    vehiclePosition.setAlt(100F);
+                    vehiclePosition.setSpeed(50F);
+                    vehiclePosition.setCurrentElectricity(80);
+                    vehiclePosition.setMileageRange(300f);
+                    vehiclePosition.setHasOrder(0);
+                    vehiclePosition.setOrderId(finalOrderId1);
+                    mongoTemplate.save(vehiclePosition);
+                }else{
+                    vehiclePosition.setOrderId(finalOrderId1);
+                    Update update = new Update()
+                            .set("point", new GeoJsonPoint(longitude, latitude))
+                            .set("course", 60D)
+                            .set("alt", 100F)
+                            .set("speed", 50F)
+                            .set("currentElectricity", 80)
+                            .set("mileageRange", 300f)
+                            .set("hasOrder", 0)
+                            .set("orderId", finalOrderId1);
+                    mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(vin)), update, VehiclePosition.class);
                 }
-                vehiclePosition.setVin(vin);
-                vehiclePosition.setPoint(new GeoJsonPoint(longitude, latitude));
-                vehiclePosition.setCourse(60D);
-                vehiclePosition.setAlt(100F);
-                //车辆动态信息
-                vehiclePosition.setSpeed(50F);
-                vehiclePosition.setCurrentElectricity(80);
-                vehiclePosition.setMileageRange(300f);
-                vehiclePosition.setOrderId(finalOrderId);
-                mongoTemplate.save(vehiclePosition);
                 //调用推送服务接口
                 if (null != finalOrderId) {
                     PushOrderRouteDTO dto = new PushOrderRouteDTO();

--
Gitblit v1.7.1