From 67f37d5ff7418fd03158af226ab67b48019c7b06 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 29 四月 2026 20:23:03 +0800
Subject: [PATCH] 修改bug和新增加流量接入部分接口

---
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
index c2a0fa7..4c3718a 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -38,6 +38,7 @@
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.operation.ElectronicFenceDetailVo;
 import com.xiaopeng.api.vo.operation.RouteVo;
+import com.xiaopeng.api.vo.operation.VehiclePositionVo;
 import com.xiaopeng.api.vo.vehicleConvoy.*;
 import com.xiaopeng.common.core.constant.CacheConstants;
 import com.xiaopeng.common.core.domain.R;
@@ -54,6 +55,7 @@
 import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
 import com.xiaopeng.vehicleConvoy.model.query.*;
 import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
+import com.xiaopeng.vehicleConvoy.model.vo.VehiclePositionDto;
 import com.xiaopeng.vehicleConvoy.service.AsyncVehicleStateService;
 import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
 import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
@@ -70,6 +72,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.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -1446,4 +1449,43 @@
         vo.setTrunk(trunk_ajar_st_new == 5 ? 1 : 0);
         return vo;
     }
+
+
+    /**
+     * 上报车辆实时位置
+     * @param dto
+     */
+    @Override
+    public void reportVehicleLocation(VehiclePositionDto dto) {
+        if(StringUtils.isEmpty(dto.getVin())){
+            throw new ServiceException("无效数据");
+        }
+        if(null == dto.getLatitude() || null == dto.getLongitude()){
+            throw new ServiceException("无效数据");
+        }
+        XpVehicle vehicle = this.getOne(new QueryWrapper<XpVehicle>().eq("vehicle_vin", dto.getVin()).eq("is_deleted", 0));
+        if(null == vehicle){
+            throw new ServiceException("无效数据");
+        }
+        VehiclePosition vehiclePosition = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(dto.getVin())), VehiclePosition.class);
+        if(null == vehiclePosition){
+            BeanUtil.copyProperties(dto, vehiclePosition);
+            vehiclePosition.setPoint(new GeoJsonPoint(dto.getLongitude(), dto.getLatitude()));
+            vehiclePosition.setAddTime(System.currentTimeMillis());
+            mongoTemplate.save(vehiclePosition);
+        }else{
+            Update update = new Update()
+                    .set("point", new GeoJsonPoint(dto.getLongitude(), dto.getLatitude()))
+                    .set("course", dto.getCourse())
+                    .set("alt", dto.getAlt())
+                    .set("speed", dto.getSpeed())
+                    .set("currentElectricity", dto.getCurrentElectricity())
+                    .set("mileageRange", dto.getMileageRange())
+                    .set("orderId", dto.getOrderId())
+                    .set("totalOdometer", dto.getTotalOdometer())
+                    .set("addTime", System.currentTimeMillis());
+            mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(dto.getVin())), update, VehiclePosition.class);
+        }
+
+    }
 }

--
Gitblit v1.7.1