puzhibing
2026-03-14 c7ea86a668f263989b14003f1f03b6fe31308c8a
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -932,6 +932,7 @@
            returnOrder.setStatus(1);    // 进行中
            returnOrder.setLastOrderId(lastCruise.getId());
            returnOrder.setCreateTime(LocalDateTime.now());
            returnOrder.setMissionId(lastCruise.getMissionId());
            // 返程起点 = 当前订单的终点(车辆当前位置附近)
            returnOrder.setStartPointId(order.getEndPointId());
@@ -1963,17 +1964,39 @@
        xpCruiseOrder.setStartLat(order.getEndLat());
        // 完成的直接走终点   终止的走起点
        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());
        if(null != xpCruiseOrders){
            if (temp == 0) {
                //当上一笔单有起点点位,才需要将上一笔巡游单的起点作为本次的终点导航
                //上一笔单没有起点点位,统一用后面的巡游计划的第一个点位作为本次的终点导航
                if(null != xpCruiseOrders.getStartPointId()){
                    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.setLastOrderId(xpCruiseOrders.getId());
            xpCruiseOrder.setMissionId(xpCruiseOrders.getMissionId());
        }
        //所有没有赋值终点点位的情况,全部导航到巡游计划的第一个点位开始执行巡游任务
        if(null == xpCruiseOrder.getEndPointId()){
            // 先找计划
            List<XpCruisePlanPoint> planPointList = xpCruisePlanClient.getCruisePlanPointList(vehicle.getId()).getData();
            XpCruisePlanPoint xpCruisePlanPoint = planPointList.get(0);
            Long endPointId = xpCruisePlanPoint.getPointId();
            XpPoint endPoint = xpPointClient.queryById(endPointId).getData();
            xpCruiseOrder.setEndPointId(endPointId);
            xpCruiseOrder.setEndPointName(endPoint.getPointName());
            xpCruiseOrder.setEndLon(endPoint.getPointLon());
            xpCruiseOrder.setEndLat(endPoint.getPointLat());
            xpCruiseOrder.setMissionId(xpCruisePlanPoint.getCruisePlanId());
        }
        xpCruiseOrder.setStatus(0);
@@ -2055,10 +2078,14 @@
        // 完成的直接走终点   终止的走起点
        if(null != xpCruiseOrders){
            if (temp == 0) {
                xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
                xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
                xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
                xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
                //当上一笔单有起点点位,才需要将上一笔巡游单的起点作为本次的终点导航
                //上一笔单没有起点点位,统一用后面的巡游计划的第一个点位作为本次的终点导航
                if(null != xpCruiseOrders.getStartPointId()){
                    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());
@@ -2066,7 +2093,10 @@
                xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
            }
            xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
        }else{
            xpCruiseOrder.setMissionId(xpCruiseOrders.getMissionId());
        }
        //所有没有赋值终点点位的情况,全部导航到巡游计划的第一个点位开始执行巡游任务
        if(null == xpCruiseOrder.getEndPointId()){
            // 先找计划
            List<XpCruisePlanPoint> planPointList = xpCruisePlanClient.getCruisePlanPointList(vehicle.getId()).getData();
            XpCruisePlanPoint xpCruisePlanPoint = planPointList.get(0);
@@ -2076,6 +2106,7 @@
            xpCruiseOrder.setEndPointName(endPoint.getPointName());
            xpCruiseOrder.setEndLon(endPoint.getPointLon());
            xpCruiseOrder.setEndLat(endPoint.getPointLat());
            xpCruiseOrder.setMissionId(xpCruisePlanPoint.getCruisePlanId());
        }