From 4eb78a6c44e4529523d39d4f65d7ac9eca5d22ff Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 14 二月 2026 09:26:32 +0800
Subject: [PATCH] 修改订单数据
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 139 +++++++++++++++++++++++++++++-----------------
1 files changed, 87 insertions(+), 52 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 7a15439..9dbe2ac 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
@@ -968,8 +968,8 @@
config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num21").split("-")[0], basicPricingJson.getString("num21").split("-")[1], Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")), Double.parseDouble(basicPricingJson.getString("num26")), Double.parseDouble(basicPricingJson.getString("num27")), Double.parseDouble(basicPricingJson.getString("num28"))));
config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num22").split("-")[0], basicPricingJson.getString("num22").split("-")[1], Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")), Double.parseDouble(basicPricingJson.getString("num26")), Double.parseDouble(basicPricingJson.getString("num27")), Double.parseDouble(basicPricingJson.getString("num28"))));
- config.night = new TaxiPricingDemoService.PricingRule("夜间行驶", basicPricingJson.getString("num14").split("-")[0], basicPricingJson.getString("num14").split("-")[1], Double.parseDouble(basicPricingJson.getString("num16")), Double.parseDouble(basicPricingJson.getString("num17")), Double.parseDouble(basicPricingJson.getString("num18")), Double.parseDouble(basicPricingJson.getString("num19")), Double.parseDouble(basicPricingJson.getString("num20")));
- config.holiday = new TaxiPricingDemoService.PricingRule("节假日", "00:00", "23:59", Double.parseDouble(basicPricingJson.getString("num30")), Double.parseDouble(basicPricingJson.getString("num31")), Double.parseDouble(basicPricingJson.getString("num32")), Double.parseDouble(basicPricingJson.getString("num33")), Double.parseDouble(basicPricingJson.getString("num234")));
+ config.night = new TaxiPricingDemoService.PricingRule("夜间行驶", basicPricingJson.getString("num14").split("-")[0], basicPricingJson.getString("num14").split("-")[1], Double.parseDouble(basicPricingJson.getString("num16")), Double.parseDouble(basicPricingJson.getString("num17")), Double.parseDouble(basicPricingJson.getString("num18")), Double.parseDouble(basicPricingJson.getString("num19")), Double.parseDouble(basicPricingJson.getString("num20")));
+ config.holiday = new TaxiPricingDemoService.PricingRule("节假日", "00:00", "23:59", Double.parseDouble(basicPricingJson.getString("num30")), Double.parseDouble(basicPricingJson.getString("num31")), Double.parseDouble(basicPricingJson.getString("num32")), Double.parseDouble(basicPricingJson.getString("num33")), Double.parseDouble(basicPricingJson.getString("num234")));
for (Object o : startingFareJsonArray) {
// 转化为jsonObject
JSONObject jsonObject = (JSONObject) o;
@@ -998,6 +998,7 @@
BigDecimal totalAmount = bill.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.err.println("--------------------------");
System.err.println("应付总额: " + totalAmount + " 元");
+ BigDecimal startMoney = BigDecimal.ZERO;
// 封装费用明细数据
for (Map.Entry<String, BigDecimal> stringBigDecimalEntry : bill.entrySet()) {
// 封装起步价
@@ -1006,6 +1007,7 @@
if (key.contains("起步价")) {
startDetail.setTime(key.split("\\|")[1]);
startDetail.setMoney(stringBigDecimalEntry.getValue());
+ startMoney = startMoney.add(stringBigDecimalEntry.getValue());
if (key.contains("普通时段")) {
startDetail.setType(1);
} else if (key.contains("夜间")) {
@@ -1015,43 +1017,41 @@
} else if (key.contains("节假")) {
startDetail.setType(4);
}
- startDetail.setDuration(Long.parseLong(key.split("=")[1]));
+ startDetail.setDuration(Double.valueOf(key.split("=")[1]));
startDetail.setMileage(new BigDecimal(key.split("&")[1]));
start.add(startDetail);
}
// 封装里程费
- if (!key.contains("起步")&&!key.contains("时长")&&!key.contains("远途")&&!key.contains("distance")) {
+ if (!key.contains("起步") && !key.contains("时长") && !key.contains("远途") && !key.contains("distance")) {
FareBreakdownDetailVo mileageDetail = new FareBreakdownDetailVo();
- if (key.contains("普通时段")){
+ if (key.contains("普通时段")) {
mileageDetail.setType(1);
- String key1 = "distance普通时段"+key.split("\\|")[1];
- String key2 = "普通时段"+key.split("\\|")[1];
+ String key1 = "distance普通时段" + key.split("\\|")[1];
+ String key2 = "普通时段" + key.split("\\|")[1];
BigDecimal distance = bill.get(key1);
BigDecimal money = bill.get(key2);
mileageDetail.setMileage(distance);
mileageDetail.setMoney(money);
- }else if (key.contains("夜间行驶")){
+ } else if (key.contains("夜间行驶")) {
mileageDetail.setType(2);
- String key1 = "distance夜间行驶"+key.split("\\|")[1];
- String key2 = "夜间行驶"+key.split("\\|")[1];
+ String key1 = "distance夜间行驶" + key.split("\\|")[1];
+ String key2 = "夜间行驶" + key.split("\\|")[1];
BigDecimal distance = bill.get(key1);
BigDecimal money = bill.get(key2);
mileageDetail.setMileage(distance);
mileageDetail.setMoney(money);
- }
- else if (key.contains("高峰期")){
+ } else if (key.contains("高峰期")) {
mileageDetail.setType(3);
- String key1 = "distance高峰期"+key.split("\\|")[1];
- String key2 = "高峰期"+key.split("\\|")[1];
+ String key1 = "distance高峰期" + key.split("\\|")[1];
+ String key2 = "高峰期" + key.split("\\|")[1];
BigDecimal distance = bill.get(key1);
BigDecimal money = bill.get(key2);
mileageDetail.setMileage(distance);
mileageDetail.setMoney(money);
- }
- else if (key.contains("节假")){
+ } else if (key.contains("节假")) {
mileageDetail.setType(4);
- String key1 = "distance节假日"+key.split("\\|")[1];
- String key2 = "节假日"+key.split("\\|")[1];
+ String key1 = "distance节假日" + key.split("\\|")[1];
+ String key2 = "节假日" + key.split("\\|")[1];
BigDecimal distance = bill.get(key1);
BigDecimal money = bill.get(key2);
mileageDetail.setMileage(distance);
@@ -1065,7 +1065,7 @@
if (key.contains("时长费")) {
timeDetail.setType(startDetail.getType());
timeDetail.setMoney(stringBigDecimalEntry.getValue());
- timeDetail.setDuration(Long.parseLong(key.split("&")[1]));
+ timeDetail.setDuration(Double.valueOf(key.split("&")[1]));
duration.add(timeDetail);
}
// 封装远途费
@@ -1102,15 +1102,27 @@
for (FareBreakdownDetailVo fareBreakdownDetailVo : duration) {
order.setDurationType(fareBreakdownDetailVo.getType());
order.setDurationMoney(fareBreakdownDetailVo.getMoney());
- order.setDuration(Double.parseDouble(fareBreakdownDetailVo.getDuration()+""));
+ order.setDuration(Double.parseDouble(fareBreakdownDetailVo.getDuration() + ""));
}
for (FareBreakdownDetailVo fareBreakdownDetailVo : longDistance) {
order.setLongDistanceType(fareBreakdownDetailVo.getType());
order.setLongDistance(fareBreakdownDetailVo.getMileage().doubleValue());
order.setLongDistancemoney(fareBreakdownDetailVo.getMoney());
}
+ BigDecimal orderMoney = startMoney.add(mileageMoney).add(order.getDurationMoney() != null ? order.getDurationMoney() : BigDecimal.ZERO)
+ .add(order.getLongDistancemoney() != null ? order.getLongDistancemoney() : BigDecimal.ZERO)
+ .add(order.getWaitMoney()!=null?order.getWaitMoney():BigDecimal.ZERO);
+ order.setOrderMoney(orderMoney);
baseMapper.updateById(order);
-
+ if (order.getCouponId() != null) {
+ GetUserCouponDto useUserCouponDto = new GetUserCouponDto();
+ useUserCouponDto.setUserId(Long.valueOf(uid));
+ useUserCouponDto.setTotalAmount(order.getOrderMoney().doubleValue());
+ useUserCouponDto.setOpenCityId(order.getCityId());
+ useUserCouponDto.setOrderId(orderId);
+ useUserCouponDto.setUserCouponId(order.getCouponId());
+ xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
+ }
}
@@ -1292,7 +1304,7 @@
// 计算时间差(单位:分钟)
long minutesDifference = Duration.between(startDateTime, endDateTime).toMinutes();
- fareBreakdownDetailVo.setDuration(minutesDifference);
+ fareBreakdownDetailVo.setDuration((double) minutesDifference);
fareBreakdownDetailVo.setMoney(new BigDecimal(num3));
start.add(fareBreakdownDetailVo);
}
@@ -1311,6 +1323,7 @@
@Override
public R<FareBreakdownVo> fareBreakdown(Long orderId, String uid) {
+
XpOrder order = this.getById(orderId);
// 查询订单轨迹
List<OrderTrajectory> trajectories = mongoTemplate.find(
@@ -1318,38 +1331,60 @@
.with(Sort.by(Sort.Direction.ASC, "locatetime")),
OrderTrajectory.class
);
- // 计算订单总行驶距离,单位米
- Double totalDistance = 0.00D;
- for (OrderTrajectory trajectory : trajectories) {
+ FareBreakdownVo res = new FareBreakdownVo();
+ List<FareBreakdownDetailVo> start = new ArrayList<>();
+ List<FareBreakdownDetailVo> mileage = new ArrayList<>();
+
+ List<XpOrderDetail> xpOrderDetails = xpOrderDetailMapper.selectList(new LambdaQueryWrapper<XpOrderDetail>().eq(XpOrderDetail::getOrderId, orderId));
+ for (XpOrderDetail xpOrderDetail : xpOrderDetails) {
+ FareBreakdownDetailVo detail = new FareBreakdownDetailVo();
+ detail.setType(xpOrderDetail.getType());
+ detail.setTime(xpOrderDetail.getTime());
+ detail.setMileage(xpOrderDetail.getMileage());
+ detail.setDuration(xpOrderDetail.getDuration());
+ if (xpOrderDetail.getType() == 1){
+ start.add(detail);
+ }else{
+ mileage.add(detail);
+ }
}
- FareBreakdownVo fareBreakdownVo = new FareBreakdownVo();
-// fareBreakdownVo.setStart();
-// fareBreakdownVo.setMileage();
-// fareBreakdownVo.setDuration();
-// fareBreakdownVo.setLongDistance();
-// fareBreakdownVo.setRedPacketMoney();
-// fareBreakdownVo.setCouponMoney();
-// fareBreakdownVo.setOrderMoney();
+ List<FareBreakdownDetailVo> duration = new ArrayList<>();
+ if (order.getDuration()!=null&&order.getDuration()>0){
+ FareBreakdownDetailVo durationDetail = new FareBreakdownDetailVo();
+ durationDetail.setType(order.getDurationType());
+ durationDetail.setDuration(order.getDuration());
+ durationDetail.setMoney(order.getDurationMoney());
+ }
+ List<FareBreakdownDetailVo> longDistance = new ArrayList<>();
-// BeanUtils.copyProperties(order, fareBreakdownVo);
-// fareBreakdownVo.setTotalKilometers(
-// BigDecimal.valueOf(order.getStartMileage() + order.getMileageKilometers() + order.getLongDistance())
-// );
-// LocalDateTime createTime = order.getCreateTime();
-// LocalDateTime tripEnd = order.getTripEnd();
-// // 计算行程时间 单位分钟
-//
-// // 计算时间差
-// Duration duration = Duration.between(createTime, tripEnd);
-//
-// // 转换为分钟并保留一位小数
-// BigDecimal minutes = BigDecimal.valueOf(duration.getSeconds())
-// .divide(BigDecimal.valueOf(60), 1, RoundingMode.HALF_UP);
-//
-// fareBreakdownVo.setTotalTime(minutes);
- return R.ok(fareBreakdownVo);
+ 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);
+ res.setLongDistance( longDistance);
+ res.setRedPacketMoney(order.getRedPacketMoney());
+ res.setCouponMoney(order.getCouponMoney());
+ res.setOrderMoney(order.getOrderMoney());
+ res.setKilometer(BigDecimal.valueOf(order.getMileageKilometers()));
+ LocalDateTime createTime = order.getCreateTime();
+ LocalDateTime tripEnd = order.getTripEnd();
+ // 计算行程时间 单位分钟
+ // 计算时间差
+ Duration durationBetween = Duration.between(createTime, tripEnd);
+
+ // 转换为分钟并保留一位小数
+ BigDecimal minutes = BigDecimal.valueOf(durationBetween.getSeconds())
+ .divide(BigDecimal.valueOf(60), 1, RoundingMode.HALF_UP);
+ res.setTime(minutes);
+ return R.ok(res);
}
@Override
@@ -1451,7 +1486,7 @@
orderDetailVo.setFeedbackPictures(evaluate.getFeedbackPictures());
orderDetailVo.setFeedbackContent(evaluate.getFeedbackContent());
orderDetailVo.setOrderRating(evaluate.getOrderRating());
- if(evaluate.getFeedbackTypeId()!=null){
+ if (evaluate.getFeedbackTypeId() != null) {
XpFeedbackType feedbackType = xpSystemSettingClient.getFeedbackTypeById(evaluate.getFeedbackTypeId()).getData();
orderDetailVo.setFeedbackTypeName(feedbackType.getFeedbackType());
}
@@ -1503,7 +1538,7 @@
addTaxiPassengerVo.setAppId("");
BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
- if(baseVehicleUserDto.getCode()==200){
+ if (baseVehicleUserDto.getCode() == 200) {
// Redis弹出这个队列元素
// value 订单Id_经纬度_状态_用户id_订单编号_距离_时间
--
Gitblit v1.7.1