liujie
2026-03-14 52e0d9f8bb4b82a9869286a6fe2bbd9f7c5d1098
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi
6个文件已修改
98 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpCruiseOrderClientFallbackFactory.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpCruiseOrderClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpCruiseOrderClientFallbackFactory.java
@@ -62,7 +62,13 @@
            @Override
            public R<XpCruiseOrder> getCruiseOrder(Long orderId) {
                log.error("订单服务调用失败: {}", cause.getMessage());
                return null;
                return R.fail("订单服务调用失败:" + cause.getMessage());
            }
            @Override
            public R<?> stopAllCruiseOrder(String vin) {
                log.error("终止所有没结束或者终止的订单失败: {}", cause.getMessage());
                return R.fail("终止所有没结束或者终止的订单失败::" + cause.getMessage());
            }
        };
    }
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpCruiseOrderClient.java
@@ -79,4 +79,12 @@
     */
    @PostMapping("/inner/cruiseOrder/getCruiseOrder")
    R<XpCruiseOrder> getCruiseOrder(@RequestParam Long orderId);
    /**
     * 终止所有没结束或者终止的订单
     * @param vin
     * @return
     */
    @PostMapping("/inner/cruiseOrder/stopAllCruiseOrder")
    R<?> stopAllCruiseOrder(@RequestParam String vin);
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java
@@ -81,6 +81,8 @@
        // 发车
        if(dto.getDepartureStatus()==1){
            // 找车辆的任务  生成巡游单子 下发命令
            //发车之前,检查所有之前没终止的数据,将其终止
            xpCruiseOrderClient.stopAllCruiseOrder(xpVehicle.getVehicleVin());
            R<XpCruiseOrder> newCruiseOrder = xpCruisePlanClient.getNewCruiseOrder(new NewCruiseOrderDto(xpVehicle.getId(),xpVehicle.getVehicleVin(),xpVehicle.getFleetId(),vehiclePosition.getPoint()));
            if(newCruiseOrder.getData()!=null){
                R<Long> longR = xpCruiseOrderClient.addCruiseOrder(newCruiseOrder.getData());
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java
@@ -222,7 +222,6 @@
        return R.ok(newXpCruiseOrder);
    }
@@ -244,6 +243,7 @@
        xpCruiseOrder.setEndPointName(xpPoint.getPointName());
        xpCruiseOrder.setEndLon(xpPoint.getPointLon());
        xpCruiseOrder.setEndLat(xpPoint.getPointLat());
        xpCruiseOrder.setMissionId(plan.getCruisePlanId());
        return R.ok(xpCruiseOrder);
    }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.order.controller;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
import com.xiaopeng.api.dto.order.AddCruiseMissionDto;
import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
@@ -21,6 +22,8 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
/**
 * <p>
@@ -137,4 +140,18 @@
        xpOrderService.addCruiseMission(dto.getVehicle(),dto.getOrder());
        return R.ok();
    }
    /**
     * 终止所有没结束或者终止的订单
     * @param vin
     * @return
     */
    @PostMapping("/inner/cruiseOrder/stopAllCruiseOrder")
    public R<?> stopAllCruiseOrder(@RequestParam String vin){
        xpCruiseOrderService.update(new UpdateWrapper<XpCruiseOrder>().eq("vehicleVin", vin)
                .in("status", Arrays.asList(0, 1)).set("status", 2));
        return R.ok();
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -948,6 +948,7 @@
            returnOrder.setStatus(1);    // 进行中
            returnOrder.setLastOrderId(lastCruise.getId());
            returnOrder.setCreateTime(LocalDateTime.now());
            returnOrder.setMissionId(lastCruise.getMissionId());
            // 返程起点 = 当前订单的终点(车辆当前位置附近)
            returnOrder.setStartPointId(order.getEndPointId());
@@ -1991,17 +1992,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);
@@ -2083,10 +2106,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());
@@ -2094,7 +2121,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);
@@ -2104,6 +2134,7 @@
            xpCruiseOrder.setEndPointName(endPoint.getPointName());
            xpCruiseOrder.setEndLon(endPoint.getPointLon());
            xpCruiseOrder.setEndLat(endPoint.getPointLat());
            xpCruiseOrder.setMissionId(xpCruisePlanPoint.getCruisePlanId());
        }