From 8d5f2e4948c9aa18e8024232e3f6dcd712be61ae Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期日, 01 三月 2026 07:41:43 +0800
Subject: [PATCH] 修改bug
---
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java | 9 ++++
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java | 10 ++--
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpOrderClientFallbackFactory.java | 8 ++++
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 20 ++++-----
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/OrderTrajectoryVo.java | 44 ++++++++++++++++++++++
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java | 13 ++++++
6 files changed, 86 insertions(+), 18 deletions(-)
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpOrderClientFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpOrderClientFallbackFactory.java
index 3ee5292..11ae823 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpOrderClientFallbackFactory.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpOrderClientFallbackFactory.java
@@ -6,6 +6,7 @@
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.feignClient.order.XpOrderClient;
import com.xiaopeng.api.model.order.XpOrder;
+import com.xiaopeng.api.vo.order.OrderTrajectoryVo;
import com.xiaopeng.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -94,6 +95,13 @@
log.error("更新订单状态失败,原因: {}", cause.getMessage());
return R.fail("更新订单状态失败");
}
+
+
+ @Override
+ public R<String> saveVehicleLocation(OrderTrajectoryVo orderTrajectory) {
+ log.error("保存订单轨迹数据失败,原因: {}", cause.getMessage());
+ return R.fail("保存订单轨迹数据失败");
+ }
};
}
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java
index 62eccc7..11af294 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java
@@ -6,6 +6,7 @@
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.factory.order.XpOrderClientFallbackFactory;
import com.xiaopeng.api.model.order.XpOrder;
+import com.xiaopeng.api.vo.order.OrderTrajectoryVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
import org.springframework.cloud.openfeign.FeignClient;
@@ -111,6 +112,12 @@
@RequestParam Integer status);
-
+ /**
+ * 保存订单轨迹数据
+ * @param orderTrajectory
+ * @return
+ */
+ @PostMapping("/inner/v1/order/saveVehicleLocation")
+ R<String> saveVehicleLocation(@RequestBody OrderTrajectoryVo orderTrajectory);
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/OrderTrajectoryVo.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/OrderTrajectoryVo.java
new file mode 100644
index 0000000..9e60a27
--- /dev/null
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/OrderTrajectoryVo.java
@@ -0,0 +1,44 @@
+package com.xiaopeng.api.vo.order;
+
+
+import com.xiaopeng.common.core.web.domain.MongoBaseModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+public class OrderTrajectoryVo extends MongoBaseModel {
+
+ /**
+ * 订单id
+ */
+ private Long orderId;
+
+ /**
+ * 经纬度 坐标 (104.45645456,34.41564654)
+ */
+ private String location;
+ /**
+ * 方向角(0-359°)
+ */
+ private Integer direction;
+ /**
+ * 速度
+ */
+ private Double speed;
+ /**
+ * 时间戳 毫秒
+ */
+ private Long locatetime;
+
+ /**
+ * 距离 米
+ */
+ private Double distance;
+}
+
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 7f20de2..6102a1f 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
@@ -23,6 +23,7 @@
import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.TaskType;
import com.xiaopeng.api.vo.automaticPilot.protobuf.*;
import com.xiaopeng.api.vo.operation.RouteVo;
+import com.xiaopeng.api.vo.order.OrderTrajectoryVo;
import com.xiaopeng.automaticPilot.util.XPUUtil;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.OrderStatusEnum;
@@ -41,7 +42,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import java.util.HashMap;
+import java.util.Date;import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
@@ -418,6 +419,16 @@
dto.setDistance(10);
dto.setDirection(60);
xpPushMessageClient.pushOrderRoute(dto);
+
+ //存储历史轨迹
+ OrderTrajectoryVo orderTrajectory = new OrderTrajectoryVo();
+ orderTrajectory.setOrderId(orderId);
+ orderTrajectory.setLocation(longitude + "," + latitude);
+ orderTrajectory.setDirection(dto.getDirection());
+ orderTrajectory.setSpeed(0D);
+ orderTrajectory.setLocatetime(System.currentTimeMillis());
+ orderTrajectory.setCreateTime(new Date());
+ xpOrderClient.saveVehicleLocation(orderTrajectory);
}
//5秒钟循环一次
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
index 0c68941..dba9a0d 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -15,10 +15,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.operation.RouteVo;
-import com.xiaopeng.api.vo.order.FareBreakdownVo;
-import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo;
-import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo;
-import com.xiaopeng.api.vo.order.XpPointInfoVo;
+import com.xiaopeng.api.vo.order.*;
import com.xiaopeng.common.core.constant.CacheConstants;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.WebUtils;
@@ -43,6 +40,7 @@
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.mongodb.core.MongoTemplate;
@@ -474,7 +472,9 @@
*/
@ApiOperation(value = "订单车辆定位实时存储")
@PostMapping("/inner/v1/order/saveVehicleLocation")
- public R<String> saveVehicleLocation(@RequestBody OrderTrajectory orderTrajectory) {
+ public R<String> saveVehicleLocation(@RequestBody OrderTrajectoryVo vo) {
+ OrderTrajectory orderTrajectory = new OrderTrajectory();
+ BeanUtils.copyProperties(vo, orderTrajectory);
xpOrderService.saveVehicleLocation(orderTrajectory);
return R.ok();
}
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index ebfdb4b..dcd2236 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1880,10 +1880,11 @@
if (StringUtils.isEmpty(oldLocation)) {
// 首次定位
xpOrder.setMileageKilometers(0D);
+ xpOrder.setAppUserId(null);
this.updateById(xpOrder);
orderTrajectory.setDistance(0D);
// 存储mongo数据
- orderTrajectoryService.create(orderTrajectory);
+ mongoTemplate.save(orderTrajectory);
// 存储首次定位
redisService.setCacheObject(CacheConstants.ORDER_OLD_LOCATION + orderTrajectory.getOrderId(), orderTrajectory.getLocation());
} else {
@@ -1892,11 +1893,12 @@
Double distance1 = distance.get("WGS84");
if (distance1 > 50 && xpOrder.getStatus() == 6) {//大于50米表示在移动,且在服务中的时候记录里程
xpOrder.setMileageKilometers(BigDecimal.valueOf(xpOrder.getMileageKilometers()).add(new BigDecimal(distance1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+ xpOrder.setAppUserId(null);
this.updateById(xpOrder);
// 存储本次距离
orderTrajectory.setDistance(distance1);
// 存储mongo数据
- orderTrajectoryService.create(orderTrajectory);
+ mongoTemplate.save(orderTrajectory);
}
} else {
log.error("调用高德计算距离出错");
@@ -1930,15 +1932,11 @@
}
}
-// List<OrderTrajectory> trajectories = mongoTemplate.find(
-// new Query(Criteria.where("orderId").is(orderId))
-// .with(Sort.by(Sort.Direction.ASC, "locatetime")),
-// OrderTrajectory.class
-// );
- List<TaxiPricingDemoService.GpsPoint> mockGpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime()));
-
- // 生成轨迹记录
- List<OrderTrajectory> trajectories = TrajectoryGenerator.generateTrajectory(mockGpsPoints);
+ List<OrderTrajectory> trajectories = mongoTemplate.find(
+ new Query(Criteria.where("orderId").is(orderId))
+ .with(Sort.by(Sort.Direction.ASC, "locatetime")),
+ OrderTrajectory.class
+ );
orderDetailVo.setTrajectories(trajectories);
if (order.getTripBegin() != null && order.getTripEnd() != null) {
// 计算两个时间相差多少分钟
--
Gitblit v1.7.1