liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -39,6 +39,7 @@
import com.xiaopeng.common.core.enums.OrderStatusEnum;
import com.xiaopeng.common.core.enums.PushMessageTypeEnum;
import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.operation.config.UidVinBindingConfig;
import com.xiaopeng.operation.dto.PriorityMatchResult;
@@ -173,7 +174,9 @@
                    String orderId = split[0];
                    XpOrder xpOrder = xpOrderClient.queryOrderById(Long.valueOf(orderId)).getData();
                    if(xpOrder.getStatus() != OrderStatusEnum.PENDING_ORDER.getCode()){
                        redisService.popFirstElement(xpOrder.getQueueName());
                        if(StringUtils.isNotEmpty((xpOrder.getQueueName()))){
                            redisService.removeByPattern(xpOrder.getQueueName(), xpOrder.getOrderNumber());
                        }
                    }
                }
@@ -194,7 +197,7 @@
                String[] split = firstElement.toString().split("_");
                // 如果未处理 创建新任务
                if (split[2].equals("0")) {
                    String value = split[0] + "_" + split[1] + "_1" + "_" + split[3] + "_" + split[4] + "_" + split[5] + "_" + split[6] + "_" + split[7];
                    String value = split[0] + "_" + split[1] + "_1" + "_" + split[3] + "_" + split[4] + "_" + split[5] + "_" + split[6] + "_" + split[7] + "_" + split[8];
                    // 状态改为处理中
                    redisService.updateFirst(name, value);
                    threadPoolTaskExecutor.submit(() -> {
@@ -206,7 +209,9 @@
                    String orderId = split[0];
                    XpOrder xpOrder = xpOrderClient.queryOrderById(Long.valueOf(orderId)).getData();
                    if(xpOrder.getStatus() != OrderStatusEnum.PENDING_ORDER.getCode()){
                        redisService.popFirstElement(xpOrder.getQueueName());
                        if(StringUtils.isNotEmpty(xpOrder.getQueueName())){
                            redisService.removeByPattern(xpOrder.getQueueName(), xpOrder.getOrderNumber());
                        }
                    }
                }
@@ -308,8 +313,8 @@
        if (xpOrderR.getCode() == 200) {
            XpOrder xpOrder = xpOrderR.getData();
            if (xpOrder.getStatus() == 1) {
                log.info("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo);
                xpOrderClient.cancelOrder(orderId);
                log.info("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo);
                //推送订单状态给乘客
                SendMessageDTO dto = new SendMessageDTO();
                dto.setAppUserId(xpOrder.getAppUserId().toString());
@@ -333,9 +338,6 @@
                        }
                    });
                }
                //将订单从队列中移除
                log.info("五轮推单结束,无车辆接单,执行队列移除订单 {}", orderNo);
                redisService.popFirstElement(quoteName);
            }
        }
@@ -367,7 +369,11 @@
        }
        XpOrder xpOrder = xpOrderR.getData();
        if (xpOrder.getStatus() == 0) {
            redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
            log.info("订单已取消,退出退单逻辑 {}", orderNo);
            if(StringUtils.isNotEmpty(quoteName)){
                redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
            }
            return true;
        }
        // 找出围栏id
@@ -427,6 +433,8 @@
                                        PushOrderDto pushOrderDto = new PushOrderDto();
                                        pushOrderDto.setVin(priorityVin);
                                        pushOrderDto.setOrderId(orderCheck.getData().getId().toString());
                                        pushOrderDto.setStartTaskId(orderCheck.getData().getXpuStartTaskId());
                                        pushOrderDto.setEndTaskId(orderCheck.getData().getXpuEndTaskId());
                                        pushOrderDto.setStartWaypointId(orderCheck.getData().getStartPointId());
                                        pushOrderDto.setEndWaypointId(orderCheck.getData().getEndPointId());
                                        pushOrderDto.setStartLatitude(orderCheck.getData().getStartLat());
@@ -441,7 +449,10 @@
                                                orderCheck.getData().getEndLat(), orderCheck.getData().getEndLon(), orderNo);
                                        orderMissionClient.pushOrder(pushOrderDto);
                                        log.info("[人车订单绑定测试] ====== 派单成功! uid={}, vin={}, orderNo={}, 从队列移除订单 ======", uid, priorityVin, orderNo);
                                        redisService.removeByPattern(quoteName, orderNo);
                                        if(StringUtils.isNotEmpty(quoteName)){
                                            redisService.removeByPattern(quoteName, orderNo);
                                        }
                                        return true;
                                    } else {
                                        log.info("[人车订单绑定测试] 关闭巡游单失败, 回退常规流程, vin={}, orderNo={}", priorityVin, orderNo);
@@ -1067,77 +1078,68 @@
                    }
                    VehiclePositionVo vehiclePositionVo = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getTotal).reversed()).collect(Collectors.toList()).get(0);
//
//                    VehiclePositionVo vehiclePositionVo1 = vehiclePositionVo;
                    RLock lock = redissonClient.getLock("FIND_CAR_" + vehiclePositionVo.getVin());
                    lock.lock(10, TimeUnit.SECONDS);
                    log.info("队列 {} 车辆 {} 单号 {}", quoteName, vehiclePositionVo.getVin(), orderNo);
                    try {
//                        VehiclePosition vehiclePosition = vehiclePositionService.findByVehicleId(vehiclePositionVo.getVehicle_id());
                        R<XpVehicle> vehiclePositionR = xpVehicleClient.findByVehicleVin(vehiclePositionVo.getVin());
                        if (vehiclePositionR.getCode() != 200) {
                            continue;
                        }
                        XpVehicle vehiclePosition = vehiclePositionR.getData();
                        log.info("符合条件的车辆 {} ,直接推单XPU。单号 {}", vehiclePosition.getPlateNumber(), orderNo);
                        log.info("当前车辆状态 {} 单号 {}", vehiclePosition.getStatus(), orderNo);
                        if (vehiclePositionR.getCode() == 200) {
                            XpVehicle vehiclePosition = vehiclePositionR.getData();
                            log.info("符合条件的车辆 {} ,直接推单XPU。单号 {}", vehiclePosition.getPlateNumber(), orderNo);
                            log.info("当前车辆状态 {} 单号 {}", vehiclePosition.getState(), orderNo);
                        String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehiclePosition.getVehicleVin());
                        // 再次查询一下订单 看是否取消
                        xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
                        if (xpOrderR.getCode() != 200) {
                            continue;
                        }
                        xpOrder = xpOrderR.getData();
                        if (xpOrder.getStatus() != 1) {
                            continue;
                        }
                        //所有条件满足,走正常派单,不满足走后面的连环派单
                        if (vehiclePosition.getOperatingStatus() == 1 && vehiclePosition.getState() == 0 && vehiclePosition.getVehicleType() == 2) {
                            //非合作商的车辆需要处理巡游单
                            if(null == vehiclePosition.getOfficialPartnerId()){
                                //  关闭巡游单子
                                R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
                                if (stringR == null || stringR.getCode() != 200) {
                                    log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber());
                                    continue;
                            String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehiclePosition.getVehicleVin());
                            // 再次查询一下订单 看是否取消
                            xpOrder = xpOrderClient.queryOrderByOrderNo(orderNo).getData();
                            if (xpOrder.getStatus() == 1) {
                                //所有条件满足,走正常派单,不满足走后面的连环派单
                                if (vehiclePosition.getOperatingStatus() == 1 && vehiclePosition.getState() == 0 && vehiclePosition.getVehicleType() == 2) {
                                    //非合作商的车辆需要处理巡游单
                                    if(null == vehiclePosition.getOfficialPartnerId()){
                                        //  关闭巡游单子
                                        R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
                                        if (stringR != null && stringR.getCode() == 200) {
                                            log.info("关闭巡游单成功 {} {}", vehiclePosition.getPlateNumber(), orderNo);
                                            XpCruiseOrder cruiseOrder = stringR.getData();
                                            // 下发命令
                                            PushOrderDto pushOrderDto = new PushOrderDto();
                                            pushOrderDto.setVin(vin);
                                            pushOrderDto.setOrderId(xpOrder.getId().toString());
                                            pushOrderDto.setStartTaskId(xpOrder.getXpuStartTaskId());
                                            pushOrderDto.setEndTaskId(xpOrder.getXpuEndTaskId());
                                            pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
                                            pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
                                            pushOrderDto.setStartLatitude(xpOrder.getStartLat());
                                            pushOrderDto.setStartLongitude(xpOrder.getStartLon());
                                            pushOrderDto.setEndLatitude(xpOrder.getEndLat());
                                            pushOrderDto.setEndLongitude(xpOrder.getEndLon());
                                            pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
                                            pushOrderDto.setOrderType(OrderType.USER_ORDER);
                                            pushOrderDto.setStage(1);
                                            if(null != cruiseOrder){
                                                pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
                                                pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
                                            }
                                            pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
                                            // 调用推送服务  orderId + carVin
                                            orderMissionClient.pushOrder(pushOrderDto);
                                            log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
                                        }
                                    }else {
                                        //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
                                        officialPartnerUtil.pushNewOrder(vehiclePosition.getOfficialPartnerId(), xpOrder);
                                    }
                                    if(StringUtils.isNotEmpty(quoteName)){
                                        redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
                                    }
                                    log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                                    return true;
                                }
                                log.info("关闭巡游单成功 {} {}", vehiclePosition.getPlateNumber(), orderNo);
                                XpCruiseOrder cruiseOrder = stringR.getData();
                                // 下发命令
                                PushOrderDto pushOrderDto = new PushOrderDto();
                                pushOrderDto.setVin(vin);
                                pushOrderDto.setOrderId(xpOrder.getId().toString());
                                pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
                                pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
                                pushOrderDto.setStartLatitude(xpOrder.getStartLat());
                                pushOrderDto.setStartLongitude(xpOrder.getStartLon());
                                pushOrderDto.setEndLatitude(xpOrder.getEndLat());
                                pushOrderDto.setEndLongitude(xpOrder.getEndLon());
                                pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
                                pushOrderDto.setOrderType(OrderType.USER_ORDER);
                                pushOrderDto.setStage(1);
                                if(null != cruiseOrder){
                                    pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
                                    pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
                                }
                                pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
                                // 调用推送服务  orderId + carVin
                                orderMissionClient.pushOrder(pushOrderDto);
                                log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
                            }else {
                                //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
                                officialPartnerUtil.pushNewOrder(vehiclePosition.getOfficialPartnerId(), xpOrder);
                            }
                            redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                            log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                            return true;
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    } finally {
@@ -1154,62 +1156,59 @@
                    try {
                        // 查询车辆状态
                        R<XpVehicle> vehicleR = xpVehicleClient.findByVehicleVin(vehicleVin);
                        if (vehicleR.getCode() != 200) {
                            continue;
                        }
                        XpVehicle vehicleId1 = vehicleR.getData();
                        log.info("附近只有一个车辆 {} ,直接推单XPU。单号 {}", vehicleId1.getPlateNumber(), orderNo);
                        log.info("当前车辆状态 运营状态 {} 单号 {}", vehicleId1.getState(), orderNo);
                        if (vehicleR.getCode() == 200) {
                            XpVehicle vehicleId1 = vehicleR.getData();
                            log.info("附近只有一个车辆 {} ,直接推单XPU。单号 {}", vehicleId1.getPlateNumber(), orderNo);
                            log.info("当前车辆状态 运营状态 {} 单号 {}", vehicleId1.getState(), orderNo);
                        // 再次查询一下订单 看是否取消
                        xpOrderR = xpOrderClient.queryOrderByOrderNo(orderNo);
                        if (xpOrderR.getCode() != 200) {
                            continue;
                        }
                        xpOrder = xpOrderR.getData();
                        if (xpOrder.getStatus() != 1) {
                            continue;
                        }
                            // 再次查询一下订单 看是否取消
                            xpOrder = xpOrderClient.queryOrderByOrderNo(orderNo).getData();
                            if (xpOrder.getStatus() == 1) {
                                // 所有条件满足走正常派单,不满足走循环派单
                                if (vehicleId1.getOperatingStatus() == 1 && vehicleId1.getState() == 0 && vehicleId1.getVehicleType() == 2) {
                                    if(null == vehicleId1.getOfficialPartnerId()){
                                        //  关闭巡游单子
                                        String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehicleId1.getVehicleVin());
                                        R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
                                        if (stringR != null && stringR.getCode() == 200) {
                                            log.info("关闭巡游单成功 {} {}", vehicleId1.getPlateNumber(), orderNo);
                                            XpCruiseOrder cruiseOrder = stringR.getData();
                                            PushOrderDto pushOrderDto = new PushOrderDto();
                                            pushOrderDto.setVin(vehiclePosition.getVin());
                                            pushOrderDto.setOrderId(xpOrder.getId().toString());
                                            pushOrderDto.setStartTaskId(xpOrder.getXpuStartTaskId());
                                            pushOrderDto.setEndTaskId(xpOrder.getXpuEndTaskId());
                                            pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
                                            pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
                                            pushOrderDto.setStartLatitude(xpOrder.getStartLat());
                                            pushOrderDto.setStartLongitude(xpOrder.getStartLon());
                                            pushOrderDto.setEndLatitude(xpOrder.getEndLat());
                                            pushOrderDto.setEndLongitude(xpOrder.getEndLon());
                                            pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
                                            pushOrderDto.setOrderType(OrderType.USER_ORDER);
                                            pushOrderDto.setStage(1);
                                            if(null != cruiseOrder){
                                                pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
                                                pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
                                            }
                                            pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
                                            // 调用推送服务  orderId + carVin
                                            orderMissionClient.pushOrder(pushOrderDto);
                                        }
                                    }else {
                                        //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
                                        officialPartnerUtil.pushNewOrder(vehicleId1.getOfficialPartnerId(), xpOrder);
                                    }
                                    log.info("开始推送 {} 订单到XPU", xpOrder.getOrderNumber());
                        // 所有条件满足走正常派单,不满足走循环派单
                        if (vehicleId1.getOperatingStatus() == 1 && vehicleId1.getState() == 0 && vehicleId1.getVehicleType() == 2) {
                            if(null == vehicleId1.getOfficialPartnerId()){
                                //  关闭巡游单子
                                String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehicleId1.getVehicleVin());
                                R<XpCruiseOrder> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vin);
                                if (stringR == null || stringR.getCode() != 200) {
                                    log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber());
                                    continue;
                                    if(StringUtils.isNotEmpty(quoteName)){
                                        redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
                                    }
                                    log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                                    return true;
                                }
                                log.info("关闭巡游单成功 {} {}", vehicleId1.getPlateNumber(), orderNo);
                                XpCruiseOrder cruiseOrder = stringR.getData();
                                PushOrderDto pushOrderDto = new PushOrderDto();
                                pushOrderDto.setVin(vehiclePosition.getVin());
                                pushOrderDto.setOrderId(xpOrder.getId().toString());
                                pushOrderDto.setStartWaypointId(xpOrder.getStartPointId());
                                pushOrderDto.setEndWaypointId(xpOrder.getEndPointId());
                                pushOrderDto.setStartLatitude(xpOrder.getStartLat());
                                pushOrderDto.setStartLongitude(xpOrder.getStartLon());
                                pushOrderDto.setEndLatitude(xpOrder.getEndLat());
                                pushOrderDto.setEndLongitude(xpOrder.getEndLon());
                                pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
                                pushOrderDto.setOrderType(OrderType.USER_ORDER);
                                pushOrderDto.setStage(1);
                                if(null != cruiseOrder){
                                    pushOrderDto.setLastOrderId("XU" + cruiseOrder.getId());
                                    pushOrderDto.setLastXpuTaskId(cruiseOrder.getXpuTaskId());
                                }
                                pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
                                // 调用推送服务  orderId + carVin
                                orderMissionClient.pushOrder(pushOrderDto);
                            }else {
                                //流量接入-接单推送 合作商的车辆需要调用合作商的订单通知接口
                                officialPartnerUtil.pushNewOrder(vehicleId1.getOfficialPartnerId(), xpOrder);
                            }
                            log.info("开始推送 {} 订单到XPU", xpOrder.getOrderNumber());
                            redisService.popFirstElement(quoteName);
                            log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                            return true;
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
@@ -1250,6 +1249,11 @@
                    continue;
                }
                XpOrder xpOrder1 = xpOrderClient.queryOrderById(vehiclePosition.getOrderId()).getData();
                String json = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder1.getId().toString()));
                if (StringUtils.isNotEmpty(json)){
                    log.info("车辆已经有连环订单 {} 单号 {}", vin, orderNo);
                    continue;
                }
                Object cacheObject = redisService.getCacheObject(CacheConstants.navigationEnd(xpOrder1.getAppUserId().toString()));
                RouteVo routeRemain = JSON.parseObject(cacheObject.toString(), RouteVo.class);
                //距离和时间只要有一个满足条件就达到候选对象
@@ -1297,11 +1301,14 @@
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("orderId", xpOrder.getId());
                    jsonObject.put("endLongitude", xpOrder.getEndLat());
                    jsonObject.put("endLongitude", xpOrder.getEndLon());
                    jsonObject.put("endLatitude", xpOrder.getEndLat());
                    redisService.setCacheObject(CacheConstants.nextOrder(xpOrder1.getId().toString()), jsonObject.toJSONString());
                    redisService.setCacheObject(CacheConstants.navigationStart(xpOrder.getAppUserId().toString()), JSON.toJSONString(route));
                    redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                    if(StringUtils.isNotEmpty(quoteName)){
                        redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                    }
                    log.info("连环派单 {} 设置下一单接驾导航数据 {}", orderNo, JSON.toJSONString(route));
                    //构建推送消息
@@ -1370,7 +1377,10 @@
        }
        XpOrder xpOrder = xpOrderR.getData();
        if (xpOrder.getStatus() == 0) {
            redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
            if(StringUtils.isNotEmpty(quoteName)){
                redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
            }
        }
        // 找出围栏id
@@ -1446,7 +1456,11 @@
                                                orderCheck.getData().getEndLat(), orderCheck.getData().getEndLon(), orderNo);
                                        orderMissionClient.pushOrder(pushOrderDto);
                                        log.info("[人车订单绑定测试] ====== 派单成功! uid={}, vin={}, orderNo={}, 从队列移除订单 ======", uid, priorityVin, orderNo);
                                        redisService.removeByPattern(quoteName, orderNo);
                                        if(StringUtils.isNotEmpty(quoteName)){
                                            redisService.removeByPattern(quoteName, orderNo);
                                        }
                                        return true;
                                    } else {
                                        log.info("[人车订单绑定测试] 关闭巡游单失败, 回退常规流程, vin={}, orderNo={}", priorityVin, orderNo);
@@ -2126,8 +2140,9 @@
                        // 调用推送服务  orderId + carVin
                        orderMissionClient.pushOrder(pushOrderDto);
                        log.info("开始推送 {} 订单到XPU。单号 {}", xpOrder.getOrderNumber(), orderNo);
                        redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                        if(StringUtils.isNotEmpty(quoteName)){
                            redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
                        }
                        log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                        return true;
                    } catch (Exception e) {
@@ -2199,7 +2214,10 @@
                        // 调用推送服务  orderId + carVin
                        orderMissionClient.pushOrder(pushOrderDto);
                        log.info("开始推送 {} 订单到XPU", xpOrder.getOrderNumber());
                        redisService.popFirstElement(quoteName);
                        if(StringUtils.isNotEmpty(quoteName)){
                            redisService.removeByPattern(quoteName, xpOrder.getOrderNumber());
                        }
                        log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                        return true;
                    } catch (Exception e) {
@@ -2292,11 +2310,14 @@
//                orderMissionClient.pushOrder(pushOrderDto);
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("orderId", xpOrder.getId());
                jsonObject.put("endLongitude", xpOrder.getEndLat());
                jsonObject.put("endLongitude", xpOrder.getEndLon());
                jsonObject.put("endLatitude", xpOrder.getEndLat());
                redisService.setCacheObject(CacheConstants.nextOrder(luckyOder.getId().toString()), jsonObject.toJSONString());
                redisService.setCacheObject(CacheConstants.navigationStart(xpOrder.getAppUserId().toString()), routeToOrigin);
                redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                if(StringUtils.isNotEmpty(quoteName)){
                    redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                }
                log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                break;
            }
@@ -2446,7 +2467,7 @@
                    routeToOrigin.setDistance(routeToOrigin.getDistance() + routeRemain.getDistance());
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("orderId", data.getId());
                    jsonObject.put("endLongitude", data.getEndLat());
                    jsonObject.put("endLongitude", data.getEndLon());
                    jsonObject.put("endLatitude", data.getEndLat());
                    redisService.setCacheObject(CacheConstants.nextOrder(luckyOder.getId().toString()), jsonObject.toJSONString());
                    redisService.setCacheObject(CacheConstants.navigationStart(data.getAppUserId().toString()), routeToOrigin);