From c96fbe6b0aeb413a17c429133ee6d81d138144b9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 09 六月 2026 10:58:52 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java |  279 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 147 insertions(+), 132 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
index d590732..27c5b4f 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -174,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());
+                        }
                     }
 
                 }
@@ -195,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(() -> {
@@ -207,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());
+                        }
                     }
 
                 }
@@ -311,9 +315,6 @@
             if (xpOrder.getStatus() == 1) {
                 xpOrderClient.cancelOrder(orderId);
                 log.info("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo);
-                //将订单从队列中移除
-                redisService.popFirstElement(quoteName);
-                log.info("五轮推单结束,无车辆接单,执行队列移除订单 {}", orderNo);
                 //推送订单状态给乘客
                 SendMessageDTO dto = new SendMessageDTO();
                 dto.setAppUserId(xpOrder.getAppUserId().toString());
@@ -368,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
@@ -428,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());
@@ -442,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);
@@ -1068,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.getState(), 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 {
@@ -1155,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();
@@ -1303,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));
 
                     //构建推送消息
@@ -1376,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
@@ -1452,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);
@@ -2132,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) {
@@ -2205,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) {
@@ -2298,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;
             }
@@ -2452,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);

--
Gitblit v1.7.1