xuhy
2026-04-28 502c2c7a7ff6d6cec19eb34086e2430ecbbdcdc7
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -3,7 +3,6 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
@@ -38,6 +37,7 @@
import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient;
import com.xiaopeng.api.feignClient.map.XpMapClient;
import com.xiaopeng.api.feignClient.operation.*;
import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient;
import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.*;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
@@ -50,6 +50,7 @@
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType;
import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderStatus;
import com.xiaopeng.api.vo.automaticPilot.protobuf.TaskActionType;
import com.xiaopeng.api.vo.operation.NearestNextVo;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.order.*;
@@ -174,7 +175,8 @@
    private BootCommonService bootCommonService;
    @Autowired
    private SysGroupMenuClient sysGroupMenuClient;
    @Autowired
    private XpCruiseOrderClient xpCruiseOrderClient;
    @Autowired
    private MongoTemplate mongoTemplate;
@@ -186,6 +188,9 @@
    @Resource
    private BluetoothUnlockClient bluetoothUnlockClient;
    @Resource
    private XpTradingStrategyClient tradingStrategyClient;
    @Value("${robotaxi.appId:xp_robotaxi_api}")
    private String appid;
@@ -256,6 +261,13 @@
        }
        wrapper.eq(Objects.nonNull(query.getUid()), XpOrder::getAppUserId, query.getUid());
        wrapper.orderByDesc(XpOrder::getCreateTime);
        if(null != query.getActivityId()){
            wrapper.eq(XpOrder::getActivityId, query.getActivityId());
        }
        List<XpOrder> list = this.list(wrapper);
        BigDecimal orderMoney = list.stream().filter(order -> Objects.nonNull(order.getOrderMoney())).map(XpOrder::getOrderMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
        BigDecimal couponMoney = list.stream().filter(order -> Objects.nonNull(order.getCouponMoney())).map(XpOrder::getCouponMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
        // 2. 分页查询
        Page<XpOrder> page = new Page<>(query.getPageNum(), query.getPageSize());
@@ -288,7 +300,7 @@
        // 5. 组装 VO
        List<XpOrderPageVO> voList = pageResult.getRecords().stream()
                .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap))
                .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap, orderMoney, couponMoney))
                .collect(Collectors.toList());
        // 6. 返回分页结果
@@ -440,7 +452,7 @@
        // 5. 组装 VO
        return orderList.stream()
                .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap))
                .map(order -> convertToPageVO(order, userInfoMap, vehicleMap, fleetMap, BigDecimal.ZERO, BigDecimal.ZERO))
                .collect(Collectors.toList());
    }
@@ -607,7 +619,9 @@
    private XpOrderPageVO convertToPageVO(XpOrder order,
                                          Map<String, UcUserInfo> userInfoMap,
                                          Map<Long, XpVehicle> vehicleMap,
                                          Map<Long, XpFleet> fleetMap) {
                                          Map<Long, XpFleet> fleetMap,
                                          BigDecimal orderMoney,
                                          BigDecimal couponMoney) {
        XpOrderPageVO vo = new XpOrderPageVO();
        vo.setId(order.getId());
        vo.setOrderNumber(order.getOrderNumber());
@@ -620,6 +634,8 @@
        vo.setStatus(order.getStatus());
        vo.setStartPointName(order.getStartPointName());
        vo.setEndPointName(order.getEndPointName());
        vo.setOrderTotalAmount(orderMoney);
        vo.setDiscountTotalAmount(couponMoney);
        // 用户信息
        if (Objects.nonNull(order.getAppUserId()) && userInfoMap != null && userInfoMap.containsKey(order.getAppUserId().toString())) {
@@ -667,13 +683,14 @@
        }
        Long userId = order.getAppUserId();
        Integer status = order.getStatus();
        if (order.getStatus() == 1) {
            order.setStatus(0);
            Long appUserId = order.getAppUserId();
            order.setAppUserId(null);
            baseMapper.updateById(order);
            order.setAppUserId(appUserId);
            redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
            bootCommonService.setCache_orderStatus(order.getId(),order,null);
            //删除蓝牙秘钥
            String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
            if(StringUtils.isNotBlank(token)){
@@ -726,7 +743,9 @@
        // 1. 更新订单状态为已取消(0)
        lambdaUpdate().set(XpOrder::getStatus, 0)
                .eq(XpOrder::getId, order.getId()).update();
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
        order.setStatus(OrderStatusEnum.CANCELED.getCode());
        bootCommonService.setCache_orderStatus(order.getId(),order,null);
        // 2. 保存取消记录
        XpOrderCancel orderCancel = new XpOrderCancel();
@@ -794,14 +813,14 @@
            }
            // 下发命令
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setOrderId(order.getId().toString());
            pushOrderDto.setVin(xpVehicle.getVehicleVin());
            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
            orderMissionClient.cancelOrder(pushOrderDto);
            log.info("运营人员取消订单成功,开始执行巡游订单 {}", order.getId());
//            PushOrderDto pushOrderDto = new PushOrderDto();
//            pushOrderDto.setOrderId(order.getId().toString());
//            pushOrderDto.setVin(xpVehicle.getVehicleVin());
//            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
//            orderMissionClient.cancelOrder(pushOrderDto);
//            log.info("运营人员取消订单成功,开始执行巡游订单 {}", order.getId());
            //车辆继续巡游
            addCruiseMission(xpVehicle.getId());
            addCruiseMission(order, status);
        } else {
            log.info("查询车辆信息失败,订单ID: {}, 下发取消订单命令失败", order.getId());
@@ -836,7 +855,8 @@
        Long appUserId = order.getAppUserId();
        order.setAppUserId(null);
        this.updateById(order);
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 7, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(order.getId(),order,null);
        // 消息推送
        Map<String, Object> params1 = new HashMap<>();
@@ -903,11 +923,11 @@
        }
        //给XPU推送订单取消的报文
        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);
        //结束行程,修改状态和计算费用
        endTrip(order.getId(), appUserId.toString());
@@ -1008,7 +1028,8 @@
                    // 6.1.1 取消原订单指令
                    PushOrderDto cancelDto = new PushOrderDto();
                    cancelDto.setTaskId(IdUtil.getSnowflakeNextIdStr());
                    cancelDto.setStartTaskId(order.getXpuStartTaskId());
                    cancelDto.setEndTaskId(order.getXpuEndTaskId());
                    cancelDto.setOrderId(order.getId().toString());
                    cancelDto.setVin(oldVehicle.getVehicleVin());
                    cancelDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
@@ -1016,8 +1037,8 @@
                    orderMissionClient.cancelOrder(cancelDto);
                    cacheReassignCancelContext(orderId, oldVehicleId, newVehicleId,
                            oldVehicle.getVehicleVin(), currentStatus);
                    log.info("已取消原车辆订单指令,订单ID: {}, VIN: {}, taskId: {}, cancelScene: {}",
                            orderId, oldVehicle.getVehicleVin(), cancelDto.getTaskId(), cancelDto.getCancelScene());
                    log.info("已取消原车辆订单指令,订单ID: {}, VIN: {}, cancelScene: {}",
                            orderId, oldVehicle.getVehicleVin(), cancelDto.getCancelScene());
                    // 6.1.2 解绑乘客与原车辆关系
                    if (Objects.nonNull(order.getAppUserId())) {
@@ -1117,9 +1138,18 @@
                log.info("已绑定乘客与新车辆关系,用户ID: {}, VIN: {}", order.getAppUserId(), newVehicle.getVehicleVin());
            }
            // 11.2 下发订单到新车辆
            //  关闭巡游单子
            R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(newVehicle.getVehicleVin());
            if (stringR == null || stringR.getCode() != 200) {
                log.info("关闭巡游单子失败 车牌号 {}", newVehicle.getPlateNumber());
            }
            log.info("关闭巡游单成功 {} {}", newVehicle.getPlateNumber(), order.getOrderNumber());
            XpCruiseOrder cruiseOrder = stringR.getData();
            // 下发命令
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setTaskId(order.getXpuTaskId());
            pushOrderDto.setStartTaskId(order.getXpuStartTaskId());
            pushOrderDto.setEndTaskId(order.getXpuEndTaskId());
            pushOrderDto.setVin(newVehicle.getVehicleVin());
            pushOrderDto.setOrderId(order.getId().toString());
            pushOrderDto.setStartLatitude(order.getStartLat());
@@ -1129,10 +1159,11 @@
            pushOrderDto.setEndPoiName(order.getEndPointName());
            pushOrderDto.setOrderType(OrderType.USER_ORDER);
            pushOrderDto.setStage(1);
            pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
            pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
            pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
            // 调用推送服务  orderId + carVin
            orderMissionClient.pushOrder(pushOrderDto);
            log.info("已下发订单到新车辆,订单ID: {}, VIN: {}", orderId, newVehicle.getVehicleVin());
            // 11.3 更新新车辆状态为已接单
@@ -1253,7 +1284,7 @@
            // 下发巡游订单到原车辆
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setTaskId(returnOrder.getXpuTaskId());
            pushOrderDto.setEndTaskId(returnOrder.getXpuTaskId());
            pushOrderDto.setVin(oldVehicle.getVehicleVin());
            pushOrderDto.setOrderId("XU" + returnOrder.getId());
            pushOrderDto.setStartLatitude(returnOrder.getStartLat());
@@ -1262,6 +1293,9 @@
            pushOrderDto.setEndLongitude(returnOrder.getEndLon());
            pushOrderDto.setOrderType(OrderType.CRUISE_ORDER);
            pushOrderDto.setStage(2);
            pushOrderDto.setLastOrderId("XU" + lastCruise.getId());
            pushOrderDto.setLastXpuTaskId(lastCruise.getXpuTaskId());
            pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
            // 调用推送服务  orderId + carVin
            orderMissionClient.pushOrder(pushOrderDto);
@@ -1726,6 +1760,7 @@
        } catch (Exception e) {
            e.printStackTrace();
        }
        Integer status = order.getStatus();
        //判断还原车辆状态
        if (null == order.getVehicleId()) {
            Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
@@ -1775,23 +1810,15 @@
                xpVehicleClient.updateVehicleById(vehicle1);
                log.info("用户取消订单,车辆状态修改0 {}", xpVehicle.getPlateNumber());
            }
            //下发XPU报文
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setOrderId(order.getId().toString());
            pushOrderDto.setVin(xpVehicle.getVehicleVin());
            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
            orderMissionClient.cancelOrder(pushOrderDto);
            log.info("用户取消订单成功,开始执行巡游订单 {}", order.getId());
            //车辆继续巡游
            addCruiseMission(xpVehicle.getId());
            addCruiseMission(order, status);
        }
        order.setStatus(0);
        Long appUserId = order.getAppUserId();
        order.setAppUserId(null);
        baseMapper.updateById(order);
        order.setAppUserId(appUserId);
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(order.getId(),order,null);
        //删除蓝牙秘钥
        String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
        if(StringUtils.isNotBlank(token)){
@@ -1830,7 +1857,7 @@
        order.setAppUserId(null);
        baseMapper.updateById(order);
        order.setAppUserId(appUserId);
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(order.getId(),order,null);
        //删除蓝牙秘钥
        String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
        if(StringUtils.isNotBlank(token)){
@@ -1919,7 +1946,7 @@
        xpOrder.setAppUserId(null);
        xpOrder.setStatus(10);
        baseMapper.updateById(xpOrder);
        redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), 10, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(xpOrder.getId(),xpOrder,null);
        XpOrderEvaluate evaluate = new XpOrderEvaluate();
        evaluate.setOrderId(xpOrder.getId());
@@ -1986,8 +2013,29 @@
                sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", xpVehicle.getVehicleVin());
                // 删除定时任务job
                QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL);
                //乘客已上车,重新倒计时不开始行程取消订单
                XpPoint xpPoint1 = xpPointClient.queryById(xpOrder.getStartPointId()).getData();
                XpTradingStrategy tradingStrategy = tradingStrategyClient.getTradingStrategyByCityCode(xpPoint1.getCityCode()).getData();
                if(null != tradingStrategy){
                    Map<String, ? extends Object> cancelJobMaps1 =
                            new ImmutableMap.Builder<String, Long>().
                                    put("id", xpOrder.getId())
                                    .build();
                    QuartzManager.addJob(
                            OrderCancelJob.class,
                            (OrderCancelJob.name + xpOrder.getId()).toUpperCase(),
                            TimeJobType.ORDER_CANCEL,
                            DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(tradingStrategy.getBdNotBoardedTime())),
                            cancelJobMaps1
                    );
                }
                // 车辆到达上车点时间
                xpOrder.setArrivalTime(LocalDateTime.now());
                break;
            case 6:
                // 删除定时任务job
                QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL);
                // 行程开始时间
                xpOrder.setTripBegin(LocalDateTime.now());
                //添加预估到达时间
@@ -2090,12 +2138,21 @@
                }
                //判断是否有连环单
                Long id = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder.getId().toString()));
                if(id != null){
                String json = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder.getId().toString()));
                if (StringUtils.isNotEmpty(json)){
                    JSONObject jsonObject = JSON.parseObject(json);
                    Long id = jsonObject.getLong("orderId");
                    jobMaps = new ImmutableMap.Builder<String, String>()
                                    .put("id", id.toString())
                                    .put("oldOrderId", xpOrder.getId().toString())
                                    .put("appid", appid)
                                    .put("orderType", OrderType.USER_ORDER)
                                    .build();
                    QuartzManager.addJob(
                            PushChainReactionOrderJob.class,
                            (PushChainReactionOrderJob.name + id).toUpperCase(),
                            TimeJobType.ADD_CRUISE_MISSION,
                            TimeJobType.ADD_CHAIN_REACTION_ORDER_MISSION,
                            DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
                            jobMaps
                    );
@@ -2115,7 +2172,7 @@
        xpOrder.setStatus(status);
        xpOrder.setAppUserId(null);
        this.updateById(xpOrder);
        redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), status, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(xpOrder.getId(),xpOrder,null);
        return R.ok();
    }
@@ -2183,7 +2240,7 @@
        xpOrder1.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode());
        xpOrder1.setUpdateTime(LocalDateTime.now());
        baseMapper.updateById(xpOrder1);
        redisService.setCacheObject("ORDER_STATUS:" + id, xpOrder1.getStatus(), 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(xpOrder1.getId(),xpOrder1,null);
    }
@@ -2214,7 +2271,7 @@
        order.setTripEnd(LocalDateTime.now());
        baseMapper.updateById(order);
        order.setAppUserId(appUserId);
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 8, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(order.getId(),order,null);
        //删除蓝牙秘钥
        String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId);
        if(StringUtils.isNotBlank(token)){
@@ -2705,7 +2762,7 @@
        log.info("添加巡游单成功 {}", xpCruiseOrder.getId());
        //下发XUP巡游订单报文
        PushOrderDto pushOrderDto = new PushOrderDto();
        pushOrderDto.setTaskId(xpCruiseOrder.getXpuTaskId());
        pushOrderDto.setEndTaskId(xpCruiseOrder.getXpuTaskId());
        pushOrderDto.setVin(xpCruiseOrder.getVehicleVin());
        pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
        pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat());
@@ -2714,6 +2771,9 @@
        pushOrderDto.setEndLongitude(xpCruiseOrder.getEndLon());
        pushOrderDto.setOrderType(OrderType.CRUISE_ORDER);
        pushOrderDto.setStage(2);
        pushOrderDto.setLastOrderId(order.getId() + "");
        pushOrderDto.setLastOrderId(order.getXpuEndTaskId());
        pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
        orderMissionClient.pushOrder(pushOrderDto);
        log.info("下发XUP巡游订单报文成功");
    }
@@ -2721,10 +2781,9 @@
    /**
     * 取消订单后的继续巡游任务
     * @param vehicleId
     */
    public void addCruiseMission(Long vehicleId) {
        XpVehicle vehicle = xpVehicleClient.queryById(vehicleId).getData();
    public void addCruiseMission(XpOrder order, Integer status) {
        XpVehicle vehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
        if (vehicle.getState() != 0 || vehicle.getOperatingStatus() != 1) {
            return;
        }
@@ -2823,7 +2882,7 @@
        //下发XPU消息报文
        PushOrderDto pushOrderDto = new PushOrderDto();
        pushOrderDto.setTaskId(xpCruiseOrder.getXpuTaskId());
        pushOrderDto.setEndTaskId(xpCruiseOrder.getXpuTaskId());
        pushOrderDto.setVin(xpCruiseOrder.getVehicleVin());
        pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
        pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat());
@@ -2832,6 +2891,9 @@
        pushOrderDto.setEndLongitude(xpCruiseOrder.getEndLon());
        pushOrderDto.setOrderType(OrderType.CRUISE_ORDER);
        pushOrderDto.setStage(2);
        pushOrderDto.setLastOrderId(order.getId() + "");
        pushOrderDto.setLastXpuTaskId(status < 5 ? order.getXpuStartTaskId() : order.getXpuEndTaskId());
        pushOrderDto.setTaskActionType(status < 5 ? TaskActionType.kTerminateForNewTask : TaskActionType.kWaitPrevTaskFinish);
        // 调用推送服务  orderId + carVin
        log.info("开始推送XPU巡游订单 {}", xpCruiseOrder.getVehicleVin());
        orderMissionClient.pushOrder(pushOrderDto);
@@ -3108,7 +3170,7 @@
            }
        }
        baseMapper.updateById(order);
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 9, 24L, TimeUnit.HOURS);
        bootCommonService.setCache_orderStatus(order.getId(),order,null);
        return R.ok();
    }
@@ -3382,10 +3444,12 @@
                order.setAcceptanceTime(LocalDateTime.now());
                R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin());
                XpVehicle vehicle = null;
                String plateNumber = null;
                if (byVehicleVin.getCode() == 200) {
                    vehicle = byVehicleVin.getData();
                    order.setVehicleId(vehicle.getId());
                    order.setFleetId(vehicle.getFleetId());
                    plateNumber = vehicle.getPlateNumber();
                    addTaxiPassengerVo.setVin(vehicle.getVehicleVin());
                }
                order.setStatus(2);
@@ -3410,7 +3474,7 @@
                addTaxiPassengerVo.setUid(appUserId.toString());
                order.setAppUserId(null);
                this.updateById(order);
                redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS);
                bootCommonService.setCache_orderStatus(order.getId(),order,null);
                //构建推送消息
                Map<String, Object> params = new HashMap<>();
@@ -3444,9 +3508,7 @@
                        }
                    });
                }
                redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS);
//                redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS);//没看懂为啥重复 缓存
                addTaxiPassengerVo.setOrderNo(order.getOrderNumber());
                addTaxiPassengerVo.setAppId(appid);
                userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
@@ -3791,13 +3853,20 @@
                return true;
            }
        }
        RouteVo routeVo = this.getRouteVo(xpOrder, vehicleVin);
        if(routeVo.getDistance() <sylc){
            isCancel = true;
        try {
            RouteVo routeVo = this.getRouteVo(xpOrder, vehicleVin);
            if(routeVo.getDistance() <sylc){
                isCancel = true;
            }
            if(routeVo.getDuration() < sysj){
                isCancel = true;
            }
        } catch (Exception e) {
            log.error("获取两个点位车的距离错误",e);
            throw new ServiceException("获取两个点位车的距离错误");
        }
        if(routeVo.getDuration() < sysj){
            isCancel = true;
        }
        return isCancel;
    }