From 07b823813e0f41c49f3468f1d2fa86b82b46689e Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 13 五月 2026 09:18:00 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java | 61 ++++++++++++++++++++++++++++++
1 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
index 23ae882..d18f2d8 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -39,6 +39,7 @@
import com.xiaopeng.common.core.constant.CacheConstants;
import com.xiaopeng.common.core.constant.HttpStatus;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.enums.OrderStatusEnum;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.DateUtils;
import com.xiaopeng.common.core.utils.GeodesyUtil;
@@ -690,6 +691,66 @@
endTrip(order.getId());
}
+
+
+ public void carAbnormalUpdateOrderStatus(Long orderId) {
+ XpTestOrder order = this.getById(orderId);
+ XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+ order.setStatus(7);
+ order.setGetoffTime(LocalDateTime.now());
+ // 解析下车地点
+ VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
+ if(Objects.nonNull(vehiclePosition)){
+ GeoJsonPoint point = vehiclePosition.getPoint();
+ if(Objects.nonNull(point)){
+ double x = point.getX();
+ double y = point.getY();
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(String.valueOf(x), String.valueOf(y));
+ order.setGetoffAddress(geocode.get("address"));
+ }
+ }
+ //计算行驶总距离和时长
+ List<OrderTrajectory> orderTrajectoryList = mongoTemplate.find(new Query().addCriteria(Criteria.where("orderId").is(order.getId())), OrderTrajectory.class);
+ Double reduce = orderTrajectoryList.stream().map(OrderTrajectory::getDistance).reduce(0.0, Double::sum);
+ order.setMileageKilometers(new BigDecimal(reduce).divide(new BigDecimal(1000)).setScale(4, RoundingMode.HALF_EVEN).doubleValue());
+ long duration = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) - order.getTripBegin().toEpochSecond(ZoneOffset.of("+8"));
+ order.setDuration(new BigDecimal(duration).divide(new BigDecimal(60), 2, RoundingMode.HALF_EVEN).doubleValue());
+ order.setStartTestPointId(null);
+ this.updateById(order);
+ redisService.setCacheObject("TEST_ORDER_STATUS:" + order.getId(), 7, 24L, TimeUnit.HOURS);
+
+ //给XPU推送订单取消的报文
+ PushOrderDto pushOrderDto = new PushOrderDto();
+ pushOrderDto.setOrderId("TEST" + order.getId().toString());
+ pushOrderDto.setVin(xpVehicle.getVehicleVin());
+ pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
+ orderMissionClient.cancelOrder(pushOrderDto);
+
+ //结束行程,修改状态和计算费用
+ endTrip(order.getId());
+
+ //将支付金额修改成0 并将状态修改成 订单状态9
+ setFree(order.getId());
+ }
+
+
+
+ /**
+ * 豁免
+ */
+ public void setFree(Long id) {
+
+ //将支付金额修改成0 并将状态修改成 订单状态9
+ XpTestOrder xpOrder1 = new XpTestOrder();
+ xpOrder1.setId(id);
+ xpOrder1.setIsFree(true);//豁免
+ xpOrder1.setPayMoney(BigDecimal.ZERO);
+ xpOrder1.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode());
+ xpOrder1.setUpdateTime(LocalDateTime.now());
+ baseMapper.updateById(xpOrder1);
+ }
+
+
/**
* 改派订单
*/
--
Gitblit v1.7.1