From 606841e8477fe937e7d8afa9f30d5f633887eca2 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 13 三月 2026 16:12:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |  336 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 218 insertions(+), 118 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 cf6c106..adbb5e4 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
@@ -316,7 +316,7 @@
         // 6. 获取评价信息
         LambdaQueryWrapper<XpOrderEvaluate> evaluateWrapper = new LambdaQueryWrapper<>();
         evaluateWrapper.eq(XpOrderEvaluate::getOrderId, id);
-        XpOrderEvaluate evaluate = xpOrderEvaluateService.getOne(evaluateWrapper);
+        XpOrderEvaluate evaluate = xpOrderEvaluateService.getOne(evaluateWrapper.orderByDesc(XpOrderEvaluate::getCreateTime).last(" limit 0,1"));
         if (Objects.nonNull(evaluate)) {
             vo.setOrderRating(evaluate.getOrderRating());
         }
@@ -641,8 +641,22 @@
         orderCancel.setUserId(SecurityUtils.getUserId()); // 当前登录用户ID
         orderCancel.setCancelReason("运营人员取消订单");
         xpOrderCancelService.save(orderCancel);
+        // 消息推送
+        Map<String, Object> params = new HashMap<>();
+        Map<String, Object> content = new HashMap<>();
+        content.put("orderId", order.getId().toString());
+        content.put("status", OrderStatusEnum.CANCELED.getCode());
+        params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
+        params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content));
+        params.put("timestamp", new Date().getTime() + "");
+        String message = JSONObject.toJSONString(params);
+        SendMessageDTO sendMessageDTO = new SendMessageDTO();
+        sendMessageDTO.setMessage(message);
+        sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId()));
+        xpPushMessageClient.sendStatus(sendMessageDTO);
+
         //查询车辆信息
-        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getId());
+        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
         if (xpVehicleR.getCode() == HttpStatus.SUCCESS && Objects.nonNull(xpVehicleR.getData())) {
             XpVehicle xpVehicle = xpVehicleR.getData();
             // 组装调用车机参数
@@ -650,9 +664,7 @@
             cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin());
             cancelTaxiPassengerVo.setUid(order.getAppUserId().toString());
             cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
-            // TODO 加配置文件取
             cancelTaxiPassengerVo.setAppId(appid);
-
             BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
             if (baseVehicleUserDto == null) {
                 // TODO 本地无法调通
@@ -660,33 +672,17 @@
             }
 
             //还原车辆状态
-            if (1 == xpVehicle.getState()) {
-                xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
-            }
-
-            // 消息推送
-            Map<String, Object> params = new HashMap<>();
-            Map<String, Object> content = new HashMap<>();
-            content.put("orderId", order.getId().toString());
-            content.put("status", OrderStatusEnum.CANCELED.getCode());
-            params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc());
-            params.put("content", com.alibaba.fastjson2.JSONObject.toJSONString(content));
-            params.put("timestamp", new Date().getTime() + "");
-            String message = JSONObject.toJSONString(params);
-            SendMessageDTO sendMessageDTO = new SendMessageDTO();
-            sendMessageDTO.setMessage(message);
-            sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId()));
-            xpPushMessageClient.sendStatus(sendMessageDTO);
-
+            xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
 
             // 下发命令
-            if (order.getStatus() > 1) {
-                PushOrderDto pushOrderDto = new PushOrderDto();
-                pushOrderDto.setOrderId(order.getId().toString());
-                pushOrderDto.setVin(xpVehicle.getVehicleVin());
-                pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
-                orderMissionClient.cancelOrder(pushOrderDto);
-            }
+            PushOrderDto pushOrderDto = new PushOrderDto();
+            pushOrderDto.setOrderId(order.getId().toString());
+            pushOrderDto.setVin(xpVehicle.getVehicleVin());
+            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
+            orderMissionClient.cancelOrder(pushOrderDto);
+            //车辆继续巡游
+            addCruiseMission(xpVehicle);
+
         } else {
             log.info("查询车辆信息失败,订单ID: {}, 下发取消订单命令失败", order.getId());
         }
@@ -1184,26 +1180,6 @@
             return;
         }
         order.setStatus(0);
-
-        // 组装调用车机参数
-        CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo();
-        Long vehicleId = order.getVehicleId();
-        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId);
-        XpVehicle xpVehicle = xpVehicleR.getData();
-        if (xpVehicle == null) {
-            throw new ServiceException("车辆不存在", I18nKeyConstant.VEHICLE_NOT_EXISTS);
-        }
-        cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin());
-        cancelTaxiPassengerVo.setUid(order.getAppUserId().toString());
-        cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
-        // TODO 加配置文件取
-        cancelTaxiPassengerVo.setAppId(appid);
-
-        BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
-        if (baseVehicleUserDto == null) {
-            // TODO 本地无法调通
-//            throw new RuntimeException("取消订单失败");
-        }
         order.setAppUserId(null);
         baseMapper.updateById(order);
         XpOrderCancel xpOrderCancel = new XpOrderCancel();
@@ -1212,10 +1188,7 @@
         xpOrderCancel.setCancelSource(1);
         xpOrderCancel.setCancelReason("用户取消订单");
         xpOrderCancelService.save(xpOrderCancel);
-        //还原车辆状态
-        if (1 == xpVehicle.getState()) {
-            xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
-        }
+
 
         // 设置当天的取消次数缓存
         Object cacheObject = redisService.getCacheObject("CANCEL_ORDER_" + uid);
@@ -1246,11 +1219,37 @@
 
         // 下发命令
         if (null != order.getVehicleId()) {
+            R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
+            // 组装调用车机参数
+            CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo();
+            XpVehicle xpVehicle = xpVehicleR.getData();
+            if (xpVehicle == null) {
+                throw new ServiceException("车辆不存在", I18nKeyConstant.VEHICLE_NOT_EXISTS);
+            }
+            cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin());
+            cancelTaxiPassengerVo.setUid(order.getAppUserId().toString());
+            cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
+            cancelTaxiPassengerVo.setAppId(appid);
+
+            BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
+            if (baseVehicleUserDto == null) {
+                // TODO 本地无法调通
+//            throw new RuntimeException("取消订单失败");
+            }
+
+            //还原车辆状态
+            if (1 == xpVehicle.getState()) {
+                xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
+            }
+
+            //下发XPU报文
             PushOrderDto pushOrderDto = new PushOrderDto();
             pushOrderDto.setOrderId(order.getId().toString());
             pushOrderDto.setVin(xpVehicle.getVehicleVin());
             pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
             orderMissionClient.cancelOrder(pushOrderDto);
+            //车辆继续巡游
+            addCruiseMission(xpVehicle);
         }
 
     }
@@ -1258,7 +1257,7 @@
     @Override
     @Transactional
     @ShardingSphereTransactionType(TransactionType.BASE)
-    public void cancelOrder(String orderId) {
+    public XpOrder cancelOrder(String orderId) {
         XpOrder order = this.getById(orderId);
         if (order == null) {
             throw new ServiceException("订单不存在", I18nKeyConstant.ORDER_NOT_EXISTS);
@@ -1275,10 +1274,6 @@
         xpOrderCancelService.save(xpOrderCancel);
 
         redisService.removeByPattern(order.getQueueName(), order.getOrderNumber());
-
-
-        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
-        XpVehicle xpVehicle = xpVehicleR.getData();
 
 
         // 消息推送
@@ -1298,16 +1293,16 @@
 
         // 移除mongo数据
         xpPricingClient.deleteXpGeoQueryEntity(order.getId().toString());
-
-        // 下发命令
-        if (null != order.getVehicleId()) {
-            PushOrderDto pushOrderDto = new PushOrderDto();
-            pushOrderDto.setOrderId(order.getId().toString());
-            pushOrderDto.setVin(xpVehicle.getVehicleVin());
-            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
-            orderMissionClient.cancelOrder(pushOrderDto);
+        Long uid = order.getAppUserId();
+        // 设置当天的取消次数缓存
+        Object cacheObject = redisService.getCacheObject("CANCEL_ORDER_" + uid);
+        if (cacheObject == null) {
+            redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, 1);
+        } else {
+            Integer i = Integer.valueOf(cacheObject.toString());
+            redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, i + 1);
         }
-
+        return order;
     }
 
     /**
@@ -1476,19 +1471,19 @@
             throw new ServiceException("当前城市未配置定价规则", I18nKeyConstant.ORDER_PRICING_NOT_EXISTS);
         }
         // 费用
-//        // 查询订单轨迹
-//        List<OrderTrajectory> trajectories = mongoTemplate.find(
-//                new Query(Criteria.where("orderId").is(orderId))
-//                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
-//                OrderTrajectory.class
-//        );
-//        List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>();
-//        for (OrderTrajectory trajectory : trajectories) {
-//            TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime());
-//            gpsPoints.add(point);
-//        }
-        // 补充临时轨迹数据
-        List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime()));
+        // 查询订单轨迹
+        List<OrderTrajectory> trajectories = mongoTemplate.find(
+                new Query(Criteria.where("orderId").is(orderId))
+                        .with(Sort.by(Sort.Direction.ASC, "locatetime")),
+                OrderTrajectory.class
+        );
+        List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>();
+        for (OrderTrajectory trajectory : trajectories) {
+            TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime());
+            gpsPoints.add(point);
+        }
+//         补充临时轨迹数据
+//        List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime()));
 
 
         TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig();
@@ -1502,39 +1497,57 @@
         double paramNum5 =0.0;
 
 
-        for (int i = 0; i < startingFareJsonArray.size(); i++) {
-            com.alibaba.fastjson.JSONObject jsonObject = startingFareJsonArray.getJSONObject(i);
-            String num1 = jsonObject.getString("num1");
-            String num2 = jsonObject.getString("num2");
-            String num3 = jsonObject.getString("num3");
-            String num4 = jsonObject.getString("num4");
-            String num5 = jsonObject.getString("num5");
-            String num6 = jsonObject.getString("num6");
-            String num7 = jsonObject.getString("num7");
+
+
+        //一口价
+        if(pricing.getPricingType() == 2){
+            JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson());
+            String num1 = "00:00";
+            String num2 = "23:59";
+            String num3 = basicPricingJson.getString("num1");
+            String num4 = basicPricingJson.getString("num2");
+            String num5 = basicPricingJson.getString("num3");
+            String num6 = basicPricingJson.getString("num4");
+            String num7 = basicPricingJson.getString("num5");
             config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7)));
-            // 判断当前是那个时段
-
-            Calendar calendarStart = Calendar.getInstance();
-            calendarStart.setTime(date);
-            calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num1").split(":")[0]));
-            calendarStart.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num1").split(":")[1]));
-
-            Calendar calendarEnd = Calendar.getInstance();
-            calendarEnd.setTime(date);
-            calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num2").split(":")[0]));
-            calendarEnd.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num2").split(":")[1]));
-            // 找到符合条件的直接跳出循环
-            if (date.getTime() > calendarStart.getTimeInMillis() && date.getTime() < calendarEnd.getTimeInMillis()) {
-                paramNum4 = jsonObject.getDouble("num4");
-                paramNum5 = jsonObject.getDouble("num5");
-                break;
-            }
-
-
+            paramNum4 = basicPricingJson.getDouble("num2");
+            paramNum5 = basicPricingJson.getDouble("num3");
         }
 
 
+        //动态计费
         if (pricing.getPricingType() == 1) {
+
+            for (int i = 0; i < startingFareJsonArray.size(); i++) {
+                com.alibaba.fastjson.JSONObject jsonObject = startingFareJsonArray.getJSONObject(i);
+                String num1 = jsonObject.getString("num1");
+                String num2 = jsonObject.getString("num2");
+                String num3 = jsonObject.getString("num3");
+                String num4 = jsonObject.getString("num4");
+                String num5 = jsonObject.getString("num5");
+                String num6 = jsonObject.getString("num6");
+                String num7 = jsonObject.getString("num7");
+                config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7)));
+                // 判断当前是那个时段
+
+                Calendar calendarStart = Calendar.getInstance();
+                calendarStart.setTime(date);
+                calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num1").split(":")[0]));
+                calendarStart.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num1").split(":")[1]));
+
+                Calendar calendarEnd = Calendar.getInstance();
+                calendarEnd.setTime(date);
+                calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jsonObject.getString("num2").split(":")[0]));
+                calendarEnd.set(Calendar.MINUTE, Integer.valueOf(jsonObject.getString("num2").split(":")[1]));
+                // 找到符合条件的直接跳出循环
+                if (date.getTime() > calendarStart.getTimeInMillis() && date.getTime() < calendarEnd.getTimeInMillis()) {
+                    paramNum4 = jsonObject.getDouble("num4");
+                    paramNum5 = jsonObject.getDouble("num5");
+                    break;
+                }
+            }
+
+
             JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson());
             config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num21").split(" - ")[0], basicPricingJson.getString("num21").split(" - ")[1], Double.parseDouble(basicPricingJson.getString("num23")),paramNum4, paramNum5,  Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25"))));
             config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num22").split(" - ")[0], basicPricingJson.getString("num22").split(" - ")[1], Double.parseDouble(basicPricingJson.getString("num23")), paramNum4, paramNum5, Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25"))));
@@ -1551,17 +1564,14 @@
 
 
         TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService();
-
         Integer holidayToday = holidayUtil.isHolidayToday();
-
-
         Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getBoardingTime()), order.getMileageKilometers(), gpsPoints, config,holidayToday);
-        System.err.println("======= 订单计费账单 =======");
-        bill.forEach((detail, price) -> System.err.println(detail + ": " + price + " 元"));
+        log.info("======= 订单计费账单 =======");
+        bill.forEach((detail, price) -> log.info(detail + ": " + price + " 元"));
 
         BigDecimal totalAmount = bill.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
-        System.err.println("--------------------------");
-        System.err.println("应付总额: " + totalAmount + " 元");
+        log.info("--------------------------");
+        log.info("应付总额: " + totalAmount + " 元");
         BigDecimal startMoney = BigDecimal.ZERO;
         // 默认费率1
         double priceRate = 1;
@@ -1789,8 +1799,7 @@
         if (vehicle != null) {
             // 修改车辆状态
             vehicle.setState(0);
-
-
+            //发送巡游订单
             addCruiseMission(vehicle, order);
 //            // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作
 //            R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail();
@@ -1961,6 +1970,97 @@
                 jobMaps
         );
     }
+
+
+    /**
+     * 取消订单后的继续巡游任务
+     * @param vehicle
+     */
+    public void addCruiseMission(XpVehicle vehicle) {
+        if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
+            return;
+        }
+        if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
+            return;
+        }
+        // 判断是否有计划
+        R<XpCruisePlanVehicle> xpCruisePlanR = xpCruisePlanClient.getCruisePlan(vehicle.getId());
+        if (xpCruisePlanR == null || xpCruisePlanR.getData() == null) {
+            return;
+        }
+
+        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class);
+        // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作
+        R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail();
+        XpTaskRule xpTaskRule = xpTaskRuleR.getData();
+
+        // 生成新的巡游单子 回到最新巡游的初始起点位置
+        XpCruiseOrder xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 2).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+        int temp = 0;
+        if (xpCruiseOrders == null) {
+            temp = 1;
+            //特殊情况 可能没有产生终止的订单  (到站点就被正常接单了)所以找正常订单
+            xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 3).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+        }
+        XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
+        xpCruiseOrder.setVehicleId(vehicle.getId());
+        xpCruiseOrder.setFleetId(vehicle.getFleetId());
+        xpCruiseOrder.setVehicleVin(vehicle.getVehicleVin());
+        xpCruiseOrder.setOrderType(2);
+        // 返程起点是当前正常订单的终点
+        xpCruiseOrder.setStartPointId(null);
+        xpCruiseOrder.setStartPointName(null);
+        xpCruiseOrder.setStartLon(vehiclePosition.getPoint().getX());
+        xpCruiseOrder.setStartLat(vehiclePosition.getPoint().getY());
+
+        // 完成的直接走终点   终止的走起点
+        if (temp == 0) {
+            xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
+            xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
+            xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
+            xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
+        } else {
+            xpCruiseOrder.setEndPointId(xpCruiseOrders.getEndPointId());
+            xpCruiseOrder.setEndPointName(xpCruiseOrders.getEndPointName());
+            xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
+            xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
+        }
+
+
+        xpCruiseOrder.setStatus(0);
+        xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
+        xpCruiseOrder.setCreateTime(LocalDateTime.now());
+
+        // 判断当前时分秒是否大于收车时间
+        LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime();
+        if (vehicleCollectionTime.isBefore(LocalTime.now())) {
+            vehicle.setOperatingStatus(3);
+            //找到车辆的收车点位 更新终点点位
+            R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
+            xpCruiseOrder = returnCruisePoint.getData();
+        }
+        xpVehicleClient.updateVehicleById(vehicle);
+
+        xpCruiseOrderMapper.insert(xpCruiseOrder);
+
+        //下发XPU消息报文
+        PushOrderDto pushOrderDto = new PushOrderDto();
+        pushOrderDto.setVin(xpCruiseOrder.getVehicleVin());
+        pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
+        pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat());
+        pushOrderDto.setStartLongitude(xpCruiseOrder.getStartLon());
+        pushOrderDto.setEndLatitude(xpCruiseOrder.getEndLat());
+        pushOrderDto.setEndLongitude(xpCruiseOrder.getEndLon());
+        pushOrderDto.setOrderType(OrderType.CRUISE_ORDER);
+        pushOrderDto.setStage(2);
+        // 调用推送服务  orderId + carVin
+        orderMissionClient.pushOrder(pushOrderDto);
+    }
+
+
+
+
+
 
     private MileageDto mileageType(MileageDto param, JSONArray startingFareJsonArray, Date mileageDate, LocalDateTime begin, String num14, String num16, String num17, String num21, String num22, String num24, String num25, String num30, String num31) {
         // 计算出是在哪个普通时间段内
@@ -2212,7 +2312,7 @@
         res.setRedPacketMoney(order.getRedPacketMoney());
         res.setCouponMoney(order.getCouponMoney());
         res.setOrderMoney(order.getOrderMoney());
-        res.setKilometer(order.getMileageKilometers() == null ? BigDecimal.ZERO : BigDecimal.valueOf(order.getMileageKilometers()));
+        res.setKilometer(order.getMileageKilometers() == null ? BigDecimal.ZERO : BigDecimal.valueOf(order.getMileageKilometers()).multiply(BigDecimal.valueOf(1000)));
         LocalDateTime createTime = order.getCreateTime();
         LocalDateTime tripEnd = order.getTripEnd();
         if (tripEnd == null) {

--
Gitblit v1.7.1