From ad5cf165be933200311db2c24417e04c62ddd948 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 13 二月 2026 22:24:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |  397 ++++++--------------------------------------------------
 1 files changed, 42 insertions(+), 355 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 fbe1452..9336e36 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
@@ -35,10 +35,7 @@
 import com.xiaopeng.api.model.operation.XpFeedbackType;
 import com.xiaopeng.api.model.operation.XpPoint;
 import com.xiaopeng.api.model.operation.XpPricing;
-import com.xiaopeng.api.model.order.XpOrder;
-import com.xiaopeng.api.model.order.XpOrderCancel;
-import com.xiaopeng.api.model.order.XpOrderEvaluate;
-import com.xiaopeng.api.model.order.XpOrderReassign;
+import com.xiaopeng.api.model.order.*;
 import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.account.UserCouponVo;
@@ -66,6 +63,7 @@
 import com.xiaopeng.order.job.jobs.OrderCancelJob;
 import com.xiaopeng.order.mangodb.model.OrderTrajectory;
 import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
+import com.xiaopeng.order.mapper.XpOrderDetailMapper;
 import com.xiaopeng.order.mapper.XpOrderMapper;
 import com.xiaopeng.order.model.dto.XpOrderCommentDto;
 import com.xiaopeng.order.model.dto.XpOrderPayDto;
@@ -131,6 +129,8 @@
     private final XpSystemSettingClient xpSystemSettingClient;
     private final OrderTrajectoryService orderTrajectoryService;
     private final XpPushMessageClient xpPushMessageClient;
+    private final OrderMissionClient orderMissionClient;
+    private final XpOrderDetailMapper xpOrderDetailMapper;
     private final OrderMissionClient orderMissionClient;
 
     @Autowired
@@ -904,6 +904,7 @@
 
     @Override
     public void endTrip(Long orderId, String uid) {
+        List<XpOrderDetail> xpOrderDetails = new ArrayList<>();
         // 起步价格明细
         List<FareBreakdownDetailVo> start = new ArrayList<>();
         // 里程费价格明细
@@ -984,11 +985,11 @@
         }
         // --- 远途加价区间配置 (关键修改) ---
         // 1. 超过 num1(12) 不足 num2(20), 加收 num3(1.2)
-        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(5.0, 6.0, 1.2));
+        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num6")), Double.parseDouble(basicPricingJson.getString("num7")), Double.parseDouble(basicPricingJson.getString("num8"))));
         // 2. 超过 num4(20) 不足 num5(35), 加收 num6(2.0)
-        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(6.0, 7.0, 2.0));
+        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num9")), Double.parseDouble(basicPricingJson.getString("num10")), Double.parseDouble(basicPricingJson.getString("num11"))));
         // 3. 超过 num7(35) 以后, 加收 num8(3.5) -> numEnd 传个极大值
-        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(7.0, 8.0, 3.5));
+        config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num12")), 999999, Double.parseDouble(basicPricingJson.getString("num13"))));
 
         TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService();
         Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getCreateTime()), order.getMileageKilometers(), gpsPoints, config);
@@ -1057,6 +1058,7 @@
                     mileageDetail.setMileage(distance);
                     mileageDetail.setMoney(money);
                 }
+                mileage.add(mileageDetail);
 
             }
             // 封装时长费
@@ -1076,354 +1078,39 @@
                 longDistance.add(longDetail);
             }
         }
-//        // 计算实际价格
-
-//        // 查询订单轨迹
-//        List<OrderTrajectory> trajectories = mongoTemplate.find(
-//                new Query(Criteria.where("orderId").is(orderId))
-//                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
-//                OrderTrajectory.class
-//        );
-//        // 计算等待时间
-//        LocalDateTime boardingTime = order.getBoardingTime();// 上车时间
-//        LocalDateTime arrivalTime = order.getArrivalTime();// 车辆到达上车点时间
-//        // 行程开始时间
-//        Integer waitTime = Math.abs((int) Duration.between(boardingTime, arrivalTime).getSeconds());
-//
-//        // 行程总时间 秒
-//        LocalDateTime tripBegin = order.getTripBegin();
-//        LocalDateTime tripEnd = order.getTripEnd();
-//        long seconds = Duration.between(tripBegin, tripEnd).getSeconds();
-//        // 默认费率1
-//        double priceRate = 1;
-//        if (pricing.getIsDynamicPrice() == 1) {
-//            // 先判断是否已经调价过了
-//            Object userDynamicPriceObj = redisService.getCacheObject("USER_DYNAMIC_PRICE_" + order.getCityId() + "_" + uid);
-//            if (userDynamicPriceObj != null) {
-//                // 是否调价过了
-//                priceRate = Double.parseDouble(userDynamicPriceObj.toString());
-//            } else {
-//                // 没有调过
-//                //是否触发动态调价 redis获取
-//                Object dynamicPriceObj = redisService.getCacheObject("DYNAMIC_PRICE_" + order.getCityId());
-//                if (dynamicPriceObj != null) {
-//                    JSONObject jsonObject = JSONObject.parseObject(pricing.getDynamicPricingJson());
-//                    // 触发动态调价
-//                    // value=时间
-//                    String timeStr = dynamicPriceObj.toString();
-//                    // 判断当前距离这个时间范围的新增订单数(排除取消) / 上浮数量 算出应该增加的价格率
-//                    Integer num = this.getOrderNum(new GetOrderNumDto(timeStr, order.getCityId()));
-//                    // X单上升一次调价
-//                    Integer orderNum = getOrderNum(jsonObject, 4);
-//                    // 需要调价的次数
-//                    int count = num / orderNum;
-//                    if (count > 0) {
-//                        // 计算每次上升的费率
-//                        Integer upRate = getOrderNum(jsonObject, 5);
-//                        BigDecimal divide = new BigDecimal(upRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
-//                        for (int i = count; i > 0; i--) {
-//                            // 当前费率+(费率*上升百分比)
-//                            priceRate = new BigDecimal(priceRate).multiply(divide).add(new BigDecimal(priceRate)).setScale(2, RoundingMode.HALF_UP).doubleValue();
-//                        }
-//                        // 冷却时间
-//                        Integer time = getOrderNum(jsonObject, 6);
-//                        // 触发调价了
-//                        redisService.setCacheObject("USER_DYNAMIC_PRICE_" + order.getCityId() + "_" + uid, priceRate, time.longValue(), TimeUnit.MINUTES);
-//                    }
-//
-//                }
-//            }
-//        }
-//        if (trajectories.isEmpty()) {
-//            return;
-//        }
-//        // 起步价规则
-//        String startingFareJson = pricing.getStartingFareJson();
-//        JSONArray startingFareJsonArray = JSONArray.parseArray(startingFareJson);
-//        // 基础信息规则
-//        String basicPricing = pricing.getBasicPricingJson();
-//        JSONObject basicPricingJson = JSONObject.parseObject(basicPricing);
-//
-//        // 计算过后得到起步价
-//        String num3 = "";
-//        String num4 = "";
-//        String num5 = "";
-//        String num6 = "";
-//        String num7 = "";
-//        String startTime = "";
-//        String endTime = "";
-//        // 等待费设置
-//        String num4Wait = basicPricingJson.getString("num4");
-//        String num5Wait = basicPricingJson.getString("num5");
-//        // 远途费设置
-//        String numLong6 = basicPricingJson.getString("num6");
-//        String numLong7 = basicPricingJson.getString("num7");
-//        String numLong8 = basicPricingJson.getString("num8");
-//        String numLong9 = basicPricingJson.getString("num9");
-//        String numLong10 = basicPricingJson.getString("num10");
-//        String numLong11 = basicPricingJson.getString("num11");
-//        String numLong12 = basicPricingJson.getString("num12");
-//        String numLong13 = basicPricingJson.getString("num13");
-//        String numLong14 = basicPricingJson.getString("num14");
-//        String numLong15 = basicPricingJson.getString("num15");
-//        // 节假日基础价格规则
-//        String num29 = basicPricingJson.getString("num29");
-//        String num30 = basicPricingJson.getString("num30");
-//        String num31 = basicPricingJson.getString("num31");
-//        String num32 = basicPricingJson.getString("num32");
-//        String num33 = basicPricingJson.getString("num33");
-//        String num34 = basicPricingJson.getString("num34");
-//
-//        // 高峰期基础价格规则
-//        String num21 = basicPricingJson.getString("num21");
-//        String num22 = basicPricingJson.getString("num22");
-//        String num23 = basicPricingJson.getString("num23");
-//        String num24 = basicPricingJson.getString("num24");
-//        String num25 = basicPricingJson.getString("num25");
-//        String num26 = basicPricingJson.getString("num26");
-//        String num27 = basicPricingJson.getString("num27");
-//        String num28 = basicPricingJson.getString("num28");
-//        // 夜间行驶基础价格规则
-//        String num14 = basicPricingJson.getString("num14");
-//        String num15 = basicPricingJson.getString("num15");
-//        String num16 = basicPricingJson.getString("num16");
-//        String num17 = basicPricingJson.getString("num17");
-//        String num18 = basicPricingJson.getString("num18");
-//        String num19 = basicPricingJson.getString("num19");
-//        String num20 = basicPricingJson.getString("num20");
-//        // 起步里程
-//        Double startDistance = 0.00D;
-//        // 临时超出起步里程的额外里程
-//        Double mileageDistance = 0.00D;
-//        // 起步价所属时段 type 1 普通时段 2 夜间行驶时段 3 高峰时段 4 节假日时段
-//        Integer startType = 1;
-//        // 里程费所属时段 type 0默认临时 1 普通时段 2 夜间行驶时段 3 高峰时段 4 节假日时段
-//        Integer mileageType = 0;
-//        // 里程费所属时段临时字段 用于区分时段是否变化 type 0默认临时 1 普通时段 2 夜间行驶时段 3 高峰时段 4 节假日时段
-//        Integer mileageTypeTemp = 0;
-//
-//        // 起步价时段开始时间
-//        Date startDate = DateUtils.toDate(order.getTripBegin());
-//        // 根据订单创建时间确定使用哪个起步价规则
-//        Date createTime = DateUtils.toDate(order.getCreateTime());
-//        // 起步价时段结束时间
-//        Date endDate = new Date();
-//        // 计算订单总行驶距离,单位米
-//        Double totalDistance = 0.00D;
-//        // 起步价计算完成表示
-//        boolean startFlag = true;
-//        SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
-//        if (pricing.getPricingType() == 1) {
-//
-//            // 计算起步价
-//            for (Object o : startingFareJsonArray) {
-//                JSONObject startingFare = (JSONObject) o;
-//                Calendar calendarStart = Calendar.getInstance();
-//                calendarStart.setTime(createTime);
-//                calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(startingFare.getString("num1").split(":")[0]));
-//                calendarStart.set(Calendar.MINUTE, Integer.valueOf(startingFare.getString("num1").split(":")[1]));
-//
-//                Calendar calendarEnd = Calendar.getInstance();
-//                calendarEnd.setTime(createTime);
-//                calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(startingFare.getString("num2").split(":")[0]));
-//                calendarEnd.set(Calendar.MINUTE, Integer.valueOf(startingFare.getString("num2").split(":")[1]));
-//                // 找到符合条件的直接跳出循环
-//                if (createTime.getTime() > calendarStart.getTimeInMillis() && createTime.getTime() < calendarEnd.getTimeInMillis()) {
-//                    num3 = startingFare.getString("num3");
-//                    num4 = startingFare.getString("num4");
-//                    num5 = startingFare.getString("num5");
-//                    num6 = startingFare.getString("num6");
-//                    num7 = startingFare.getString("num7");
-//                    startTime = startingFare.getString("num1");
-//                    endTime = startingFare.getString("num2");
-//                    break;
-//                }
-//            }
-//            // 判断是否为夜间行驶 起步价修改
-//            Calendar calendarStart = Calendar.getInstance();
-//            calendarStart.setTime(createTime);
-//            calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num14.split("-")[0].split(":")[0]));
-//            calendarStart.set(Calendar.MINUTE, Integer.valueOf(num14.split("-")[0].split(":")[1]));
-//            Calendar calendarEnd = Calendar.getInstance();
-//            calendarEnd.setTime(createTime);
-//            calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num14.split("-")[1].split(":")[0]));
-//            calendarEnd.set(Calendar.MINUTE, Integer.valueOf(num14.split("-")[1].split(":")[1]));
-//            if (createTime.getTime() > calendarStart.getTimeInMillis() && createTime.getTime() < calendarEnd.getTimeInMillis()
-//            ) {
-//                num3 = num15;
-//                num6 = num16;
-//                num7 = num17;
-//                startType = 2;
-//
-//            }
-//            // 判断是否为高峰期
-//            Calendar calendar1Start = Calendar.getInstance();
-//            calendar1Start.setTime(createTime);
-//            calendar1Start.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num21.split("-")[0].split(":")[0]));
-//            calendar1Start.set(Calendar.MINUTE, Integer.valueOf(num21.split("-")[0].split(":")[1]));
-//
-//            Calendar calendar1End = Calendar.getInstance();
-//            calendar1End.setTime(createTime);
-//            calendar1End.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num21.split("-")[1].split(":")[0]));
-//            calendar1End.set(Calendar.MINUTE, Integer.valueOf(num21.split("-")[1].split(":")[1]));
-//
-//            Calendar calendar2Start = Calendar.getInstance();
-//            calendar2Start.setTime(createTime);
-//            calendar2Start.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num22.split("-")[0].split("-")[0].split(":")[0]));
-//            calendar2Start.set(Calendar.MINUTE, Integer.valueOf(num22.split("-")[0].split("-")[0].split(":")[1]));
-//
-//            Calendar calendar2End = Calendar.getInstance();
-//            calendar2End.setTime(createTime);
-//            calendar2End.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num22.split("-")[1].split(":")[0]));
-//            calendar2End.set(Calendar.MINUTE, Integer.valueOf(num22.split("-")[1].split(":")[1]));
-//            // 判断是否为高峰期 起步价,里程费,时长费修改
-//            if ((createTime.getTime() > calendar1Start.getTimeInMillis() && createTime.getTime() < calendar1End.getTimeInMillis())
-//                    || (createTime.getTime() > calendar2Start.getTimeInMillis() && createTime.getTime() < calendar2End.getTimeInMillis())) {
-//                num3 = num23;
-//                num6 = num24;
-//                num7 = num25;
-//                startType = 3;
-//            }
-//            // 判断当前是否属于节假日
-//            boolean holiday = holidayUtil.isHoliday(DateUtils.toLocalDate(createTime));
-//            if (holiday) {
-//                // 判断是否为节假日 起步价修改
-//                num3 = num29;
-//                num6 = num30;
-//                num7 = num31;
-//                startType = 4;
-//            }
-//            // 查询起步价结束时间段
-//            for (OrderTrajectory trajectory : trajectories) {
-//                Long locatetime = trajectory.getLocatetime();
-//                endDate = new Date(locatetime);
-//                LocalDateTime end = DateUtils.dateToLocalDateTime(endDate);
-//                if (end.isAfter(tripBegin)) {
-//                    // 行程开始 开始计算里程数
-//                    if (startDistance >= Double.parseDouble(num4)) {
-//                        // 行驶里程大于基础配置里程 那么起步价时段计算完成
-//                        break;
-//                    }
-//                    startDistance += trajectory.getDistance();
-//                }
-//            }
-//            // 起步价价格明细封装
-//            FareBreakdownDetailVo startDetail = new FareBreakdownDetailVo();
-//            startDetail.setType(startType);
-//            startDetail.setTime(timeFormat.format(startDate) + "-" + timeFormat.format(endDate));
-//            startDetail.setMileage(new BigDecimal(startDistance / 1000).setScale(2, RoundingMode.HALF_UP));
-//
-//            // 计算startDate和endDate相差多少分钟
-//            // 将 Date 转换为 LocalDateTime
-//            LocalDateTime startDateTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-//            LocalDateTime endDateTime = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-//
-//            // 计算时间差(单位:分钟)
-//            long minutesDifference = Duration.between(startDateTime, endDateTime).toMinutes();
-//            startDetail.setDuration(minutesDifference);
-//            startDetail.setMoney(new BigDecimal(num3));
-//            start.add(startDetail);
-//
-//
-//            // 计算起步价格、里程、时段、行驶时间
-////            calculateStartingFare(trajectories, tripBegin, startFlag, startDistance, startingFareJsonArray, num3, num4, num5, endDate, order, num14, num15, num16, num17, startType, num21, num22, num23, num24, num25, num29, num30, num31, timeFormat, startDate, start);
-//
-//            for (OrderTrajectory trajectory : trajectories) {
-////                FareBreakdownDetailVo mileageDetail = new FareBreakdownDetailVo();
-////                mileageDetail.setType();
-////                mileageDetail.setTime();
-////                mileageDetail.setMileage();
-////                mileageDetail.setDuration();
-////                mileageDetail.setMoney();
-//
-//                Long locatetime = trajectory.getLocatetime();
-//                Date mileageDate = new Date(locatetime);
-//                LocalDateTime begin = DateUtils.dateToLocalDateTime(mileageDate);
-//                if (begin.isAfter(tripBegin)) {
-//                    totalDistance += trajectory.getDistance();
-//                    if (totalDistance >= startDistance) {
-//                        // 开始累加起步里程
-//                        mileageDistance += trajectory.getDistance();
-//                        // 判断当前里程费属于什么时段
-////                        mileageTypeTemp
-//                        MileageDto param = new MileageDto();
-//                        param.setMileage(num6);
-//                        param.setTime(num7);
-//                        param.setMileageTypeTemp(mileageTypeTemp);
-//                        MileageDto mileageDto = mileageType(param,startingFareJsonArray, mileageDate, begin, num14, num16, num17, num21, num22, num24, num25, num30, num31);
-//                        if (mileageType==0){
-//                            // 首次
-//                            mileageType = mileageDto.getMileageTypeTemp();
-//                            mileageTypeTemp= mileageDto.getMileageTypeTemp();
-//                        } else if (mileageType!=mileageTypeTemp){
-//                            // 新时段
-//                            FareBreakdownDetailVo fareBreakdownDetailVo = new FareBreakdownDetailVo();
-//                            fareBreakdownDetailVo.setType(mileageType);
-//                            fareBreakdownDetailVo.setTime(timeFormat.format(endDate)+"-"+timeFormat.format(mileageDate));
-//                            double md = mileageDistance / 1000;
-//                            fareBreakdownDetailVo.setMileage(new BigDecimal(md).setScale(2, RoundingMode.HALF_UP));
-//                            // 计算startDate和endDate相差多少分钟
-//                            // 将 Date 转换为 LocalDateTime
-//                            LocalDateTime startMileageTime = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-//                            LocalDateTime endMileageTime = mileageDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-//
-//                            // 计算时间差(单位:分钟)
-//                            long minutesDifferenceMileage = Duration.between(startMileageTime, endMileageTime).toMinutes();
-//                            startDetail.setDuration(minutesDifference);
-//                            fareBreakdownDetailVo.setDuration(minutesDifferenceMileage);
-//                            // 如果md小数位是0 那么舍弃小数,如果小数位不为0 那么进1
-//                            fareBreakdownDetailVo.setMileage(new BigDecimal(md).setScale(2, RoundingMode.HALF_UP));
-//                            Integer temp = (int)md;
-//                            if (md> temp){
-//                                temp=temp+1;
-//                            }
-//                            // 超出的里程
-//                            fareBreakdownDetailVo.setMoney(new BigDecimal(temp*6));
-//                            mileage.add(fareBreakdownDetailVo);
-//                            // 修改时段标识
-//                            mileageType = mileageTypeTemp;
-//                            // 修改新时段开始时间
-//                            endDate = mileageDate;
-//                        }else{
-//                            // 时段未变化
-//                        }
-//                    }
-//                }
-//            }
-//            // 开始计算里程费用
-//            for (OrderTrajectory trajectory : trajectories) {
-//                Long locatetime = trajectory.getLocatetime();
-//                Date mileageDate = new Date(locatetime);
-//                LocalDateTime begin = DateUtils.dateToLocalDateTime(mileageDate);
-//                // 行驶里程大于起步里程配置 开始计算里程和里程费
-//                if (begin.isAfter(tripBegin)) {
-//                    totalDistance += trajectory.getDistance();
-//                    double v = totalDistance / 1000.0;
-//                    if (v >= Double.parseDouble(num5)) {
-//                        // 增加超出起步里程的里程数
-//                        mileageDistance += trajectory.getDistance();
-//
-//                    }
-//                    if (mileageType == 0) {
-//                        // 第一次计算里程费
-//
-//                    }
-//                }
-//            }
-//        } else {
-//
-//        }
-//
-////        XpPricingCardVo xpPricingCardVo = xpPricingUtil.calculationPrice(
-////                order.getAppUserId().toString(),JSON.parseObject(pricing.getBasicPricingJson()),
-////                JSON.parseArray(pricing.getStartingFareJson()),
-////                pricing.getDynamicPricingJson(),
-////                pricing.getIsDynamicPrice(),
-////                totalDistance,
-////                seconds,
-////                order.getCityId()
-////        );
-
+        for (FareBreakdownDetailVo fareBreakdownDetailVo : start) {
+            XpOrderDetail xpOrderDetail = new XpOrderDetail();
+            BeanUtils.copyProperties(fareBreakdownDetailVo, xpOrderDetail);
+            xpOrderDetail.setOrderId(orderId);
+            xpOrderDetail.setDetailType(1);
+            xpOrderDetail.setCreateTime(LocalDateTime.now());
+            xpOrderDetails.add(xpOrderDetail);
+        }
+        BigDecimal mileageMoney = BigDecimal.ZERO;
+        for (FareBreakdownDetailVo fareBreakdownDetailVo : mileage) {
+            XpOrderDetail xpOrderDetail = new XpOrderDetail();
+            BeanUtils.copyProperties(fareBreakdownDetailVo, xpOrderDetail);
+            xpOrderDetail.setOrderId(orderId);
+            xpOrderDetail.setDetailType(2);
+            xpOrderDetail.setCreateTime(LocalDateTime.now());
+            mileageMoney = mileageMoney.add(fareBreakdownDetailVo.getMoney());
+            xpOrderDetails.add(xpOrderDetail);
+        }
+        order.setMileageMoney(mileageMoney);
+        for (XpOrderDetail xpOrderDetail : xpOrderDetails) {
+            xpOrderDetailMapper.insert(xpOrderDetail);
+        }
+        for (FareBreakdownDetailVo fareBreakdownDetailVo : duration) {
+            order.setDurationType(fareBreakdownDetailVo.getType());
+            order.setDurationMoney(fareBreakdownDetailVo.getMoney());
+            order.setDuration(Double.parseDouble(fareBreakdownDetailVo.getDuration()+""));
+        }
+        for (FareBreakdownDetailVo fareBreakdownDetailVo : longDistance) {
+            order.setLongDistanceType(fareBreakdownDetailVo.getType());
+            order.setLongDistance(fareBreakdownDetailVo.getMileage().doubleValue());
+            order.setLongDistancemoney(fareBreakdownDetailVo.getMoney());
+        }
+        baseMapper.updateById(order);
 
     }
 

--
Gitblit v1.7.1