From 017d986db53e1590cc79ccef3d1668894f94c18a Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 21 三月 2026 11:14:09 +0800
Subject: [PATCH] 修改bug
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 85 +++++++++++++++++++++---------------------
1 files changed, 43 insertions(+), 42 deletions(-)
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 f1fdc2c..80d9c4c 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
@@ -1481,6 +1481,9 @@
if(xpOrder.getStatus() >= 8){
return R.fail("订单已结束");
}
+ Long appUserId = xpOrder.getAppUserId();
+ // 查询车辆
+ XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
switch (status) {
case 4:
// 查询起点点位
@@ -1505,6 +1508,8 @@
LocalDateTime now = LocalDateTime.now();
xpOrder.setBoardingTime(now);
xpOrder.setRideTime(now);
+ //推送行起点到终点的驶轨迹给乘客端
+ sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", xpVehicle.getVehicleVin());
// 删除定时任务job
QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL);
break;
@@ -1515,8 +1520,6 @@
case 7:
xpOrder.setGetoffTime(LocalDateTime.now());
// 解析下车地点
- // 查询车辆
- XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
if(Objects.nonNull(vehiclePosition)){
GeoJsonPoint point = vehiclePosition.getPoint();
@@ -1627,11 +1630,6 @@
order.setStatus(8);
order.setAppUserId(null);
order.setTripEnd(LocalDateTime.now());
-
- double exactMinutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMillis() / (1000.0 * 60);
- exactMinutes = new BigDecimal(exactMinutes).setScale(2, RoundingMode.HALF_UP).doubleValue();
- order.setDuration(exactMinutes);
-
baseMapper.updateById(order);
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 8, 24L, TimeUnit.HOURS);
@@ -1678,6 +1676,8 @@
xpOrderDetail.setOrderId(orderId);
xpOrderDetail.setType(1);
xpOrderDetail.setMileage(new BigDecimal(mileageKilometers).setScale(2, RoundingMode.HALF_UP));
+ String currentTimeSlot = DateUtils.getCurrentTimeSlot();
+ xpOrderDetail.setTime(currentTimeSlot);
xpOrderDetail.setDuration(duration1);
xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getStartPrice()).setScale(2, RoundingMode.HALF_UP));
xpOrderDetails.add(xpOrderDetail);
@@ -1685,7 +1685,6 @@
xpOrderDetail.setDetailType(2);
xpOrderDetail.setOrderId(orderId);
xpOrderDetail.setType(1);
- xpOrderDetail.setMileage(new BigDecimal(mileageKilometers).setScale(2, RoundingMode.HALF_UP));
xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getDistancePrice()).setScale(2,RoundingMode.HALF_UP));
xpOrderDetails.add(xpOrderDetail);
xpOrderDetail = new XpOrderDetail();
@@ -2424,16 +2423,8 @@
@Override
public R<FareBreakdownVo> fareBreakdown(Long orderId, String uid) {
-
XpOrder order = this.getById(orderId);
order.setAppUserId(null);
- // 查询订单轨迹
- List<OrderTrajectory> trajectories = mongoTemplate.find(
- new Query(Criteria.where("orderId").is(orderId))
- .with(Sort.by(Sort.Direction.ASC, "locatetime")),
- OrderTrajectory.class
- );
-
FareBreakdownVo res = new FareBreakdownVo();
res.setChangeMoneyFlag(order.getChangeMoneyFlag());
@@ -2461,22 +2452,6 @@
}
}
-// if (order.getDuration() != null && order.getDuration() > 0) {
-// FareBreakdownDetailVo durationDetail = new FareBreakdownDetailVo();
-// durationDetail.setType(order.getDurationType());
-// durationDetail.setDuration(order.getDuration());
-// durationDetail.setMoney(order.getDurationMoney());
-// duration.add(durationDetail);
-// }
-
-//
-// if (order.getLongDistance() != null && order.getLongDistance() > 0) {
-// FareBreakdownDetailVo longDistanceDetail = new FareBreakdownDetailVo();
-// longDistanceDetail.setType(order.getLongDistanceType());
-// longDistanceDetail.setMileage(BigDecimal.valueOf(order.getLongDistance()));
-// longDistanceDetail.setMoney(order.getLongDistancemoney());
-// longDistance.add(longDistanceDetail);
-// }
res.setStart(start);
res.setMileage(mileage);
res.setDuration(duration);
@@ -2492,9 +2467,7 @@
order.setTripEnd(tripEnd);
this.updateById(order);
}
-
- double exactMinutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMillis() / (1000.0 * 60);
- res.setTime(new BigDecimal(exactMinutes).setScale(2, RoundingMode.HALF_UP));
+ res.setTime(new BigDecimal(order.getDuration() == null ? 0 : order.getDuration()).multiply(new BigDecimal(60)).setScale(0, RoundingMode.HALF_UP));
return R.ok(res);
}
@@ -2788,27 +2761,55 @@
}
// 存mongo数据
xpPricingClient.updateXpGeoQueryEntity(order.getId().toString());
-
-
// 修改车辆信息
vehicle.setState(1);
xpVehicleClient.updateVehicleById(vehicle);
//绑定用户和车辆关系
addTaxiPassengerVo.setUid(appUserId.toString());
-
order.setAppUserId(null);
this.updateById(order);
+
+ //构建推送消息
+ Map<String, Object> params = new HashMap<>();
+ Map<String, Object> content = new HashMap<>();
+ content.put("orderId", orderId.toString());
+ content.put("status", 2);
+ params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
+ params.put("content", JSONObject.toJSONString(content));
+ params.put("timestamp", System.currentTimeMillis() + "");
+ String message = JSONObject.toJSONString(params);
+ SendMessageDTO dto1 = new SendMessageDTO();
+ dto1.setAppUserId(appUserId + "");
+ dto1.setMessage(message);
+ R<String> stringR = xpPushMessageClient.sendStatus(dto1);
+
+ //推送失败,重试3次
+ if(stringR.getCode() != Constants.SUCCESS){
+ ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
+ executor.execute(() -> {
+ for (int i = 0; i < 3; i++) {
+ R<String> stringR1 = xpPushMessageClient.sendStatus(dto1);
+ if(stringR1.getCode() == Constants.SUCCESS){
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ log.info("推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(dto), order.getOrderNumber());
+ }
+ });
+ }
+
+
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS);
addTaxiPassengerVo.setOrderNo(order.getOrderNumber());
- // TODO appid
addTaxiPassengerVo.setAppId(appid);
userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
//推送乘客车辆到达预约点的导航数据
sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin());
- } else {
- //推送行起点到终点的驶轨迹给乘客端
- sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", dto.getXpVehicleVin());
}
}
}
--
Gitblit v1.7.1