puzhibing
2026-03-12 2b73d5cfaa57aee00ff41c37a136c764f5c8194b
修改bug
12个文件已修改
140 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpCruiseOrderClientFallbackFactory.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpCruiseOrderClient.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpCruiseOrder.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpCruiseOrderService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpCruiseOrderClientFallbackFactory.java
@@ -43,20 +43,20 @@
            }
            @Override
            public R<Long> updateCruiseOrder(String vin) {
                log.error("订单服务调用失败: {}", cause.getMessage());
                return R.fail("根据车辆VIN查询取消订单失败:" + cause.getMessage());
            public R<Long> cancelCruiseOrderByVin(String vin) {
                log.error("根据车辆VIN码取消订单失败: {}", cause.getMessage());
                return R.fail("根据车辆VIN码取消订单失败:" + cause.getMessage());
            }
            @Override
            public R<Long> updateCruiseOrderId(Long orderId) {
            public R<?> cancelCruiseOrderById(Long orderId) {
                return R.fail("根据订单ID查询取消订单失败:" + cause.getMessage());
            }
            @Override
            public R<Long> closeCruiseOrder(String vin) {
                log.error("订单服务调用失败: {}", cause.getMessage());
                return R.fail("根据VIN码关闭巡游单失败");
            public R<?> completeCruiseOrder(Long orderId) {
                log.error("完成巡游订单失败: {}", cause.getMessage());
                return R.fail("完成巡游订单失败");
            }
            @Override
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpCruiseOrderClient.java
@@ -48,12 +48,12 @@
    /**
     * 查询并关闭订单信息  返回id信息
     * 根据车辆VIN码取消订单
     *
     * @param vin 订单信息
     */
    @PostMapping("/inner/cruiseOrder/updateCruiseOrder")
    R<Long> updateCruiseOrder(@RequestParam String vin);
    @PostMapping("/inner/cruiseOrder/cancelCruiseOrderByVin")
    R<Long> cancelCruiseOrderByVin(@RequestParam String vin);
    /**
@@ -61,15 +61,15 @@
     * @param orderId
     * @return
     */
    @PostMapping("/inner/cruiseOrder/updateCruiseOrderId")
    R<Long> updateCruiseOrderId(@RequestParam Long orderId);
    @PostMapping("/inner/cruiseOrder/cancelCruiseOrderById")
    R<?> cancelCruiseOrderById(@RequestParam Long orderId);
    /**
     * 关闭
     * 完成巡游订单
     */
    @PostMapping("/inner/cruiseOrder/closeCruiseOrder")
    R<Long> closeCruiseOrder(@RequestParam String vin);
    @PostMapping("/inner/cruiseOrder/completeCruiseOrder")
    R<?> completeCruiseOrder(@RequestParam Long orderId);
    /**
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpCruiseOrder.java
@@ -58,7 +58,7 @@
    @ApiModelProperty(value = "目的地纬度")
    private Double endLat;
    @ApiModelProperty(value = "状态 1进行中 2已停止")
    @ApiModelProperty(value = "状态 1进行中 2已停止 3已完成")
    private Integer status;
    @ApiModelProperty(value = "下单站点id")
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -92,7 +92,7 @@
            pointBuilderEnd.setActionType(ActionType.DRIVE_THROUGH);
            geoPointBuilder = GeoPoint.newBuilder();
            geoPointBuilder.setLatitude(dto.getEndLatitude());
            geoPointBuilder.setLongitude(dto.getEndLatitude());
            geoPointBuilder.setLongitude(dto.getEndLongitude());
            pointBuilderEnd.setPoint(geoPointBuilder.build());
            taskBuilder.addPoints(pointBuilderEnd);
            taskBuilder.setSequence(1);
@@ -148,7 +148,7 @@
                    pointBuilderEnd.setSequence(2);
                    geoPointBuilder = GeoPoint.newBuilder();
                    geoPointBuilder.setLatitude(dto.getEndLatitude());
                    geoPointBuilder.setLongitude(dto.getEndLatitude());
                    geoPointBuilder.setLongitude(dto.getEndLongitude());
                    pointBuilderEnd.setPoint(geoPointBuilder.build());
                    taskBuilder.addPoints(pointBuilderEnd);
                    taskBuilder.setSequence(i);
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -390,7 +390,7 @@
            String orderId = systemRuntimeStatus.getRunningOrderStatusInfo().getOrderId();
            if(!orderId.contains("XU")){
                //巡游订单,需要关闭订单
                xpCruiseOrderClient.updateCruiseOrderId(Long.parseLong(orderId.substring(2)));
                xpCruiseOrderClient.cancelCruiseOrderById(Long.parseLong(orderId.substring(2)));
                XpCruiseOrder cruiseOrder = xpCruiseOrderClient.getCruiseOrder(Long.parseLong(orderId.substring(2))).getData();
                vehicle = xpVehicleClient.queryById(cruiseOrder.getVehicleId()).getData();
                if (vehicle != null) {
@@ -889,22 +889,16 @@
            //响应消息
            // TODO 1.处理结束当前巡游订单  2.创建新的巡游订单 返航  3.调用xpu车机接口  (判断是返航还是正常  返航需要存储之前的订单id)
            responseMessage(sequence, "");
            //前往目的地
            if(OrderStatusEnum.IN_SERVICE.equals(status)){
            }
            //到达目的地
            if(OrderStatusEnum.COMPLETED.equals(status)){
                // 返程找到目前的订单 -》之前的订单 查询生成一个   正常巡游 找到下一个点位   若到达最后点位  则反向找点位  每次判断是否收车状态 是则不进行处理了
                // 找到这个订单
                R<XpCruiseOrder> cruiseOrder = xpCruiseOrderClient.getCruiseOrder(Long.parseLong(orderId.substring(2)));
                if(cruiseOrder!=null){
                    XpCruiseOrder xpCruiseOrder = cruiseOrder.getData();
                    Long vehicleId = xpCruiseOrder.getVehicleId();
                    // 完成当前巡游单子 已完成
                    xpCruiseOrderClient.closeCruiseOrder(xpCruiseOrder.getVehicleVin());
                    xpCruiseOrderClient.completeCruiseOrder(Long.parseLong(orderId.substring(2)));
                    R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId);
                    XpVehicle xpVehicle = xpVehicleR.getData();
                    // 运营中 继续执行
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java
@@ -90,9 +90,7 @@
            }
        }else if(dto.getDepartureStatus()==3){
            // 收车 关闭当前巡游单子 生成新的返程单子  找到收车站点
            R<Long> r = xpCruiseOrderClient.updateCruiseOrder(xpVehicle.getVehicleVin());
            // redis 获取当前最新经纬度位置
            xpCruiseOrderClient.cancelCruiseOrderByVin(xpVehicle.getVehicleVin());
            XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
            if(vehiclePosition!=null){
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java
@@ -201,7 +201,7 @@
     */
    private void sendCollectionCommand(XpVehicle xpVehicle) {
        // 收车 关闭当前巡游单子 生成新的返程单子  找到收车站点
        R<Long> r = xpCruiseOrderClient.updateCruiseOrder(xpVehicle.getVehicleVin());
        R<Long> r = xpCruiseOrderClient.cancelCruiseOrderByVin(xpVehicle.getVehicleVin());
        // mongodb 获取当前最新经纬度位置
        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -7,6 +7,7 @@
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.common.core.utils.HttpUtils;
import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@@ -18,6 +19,7 @@
/**
 * 高德地图的地理编码工具类
 */
@Slf4j
@Component
@Lazy
public class GDMapGeocodingUtil {
@@ -117,7 +119,7 @@
        params.put("sdkVersion", "9.850.152.3.532");
        params.put("encoderVersion", "5.1");
        String post = HttpUtils.post(url, JSON.toJSONString(params));
        System.out.println("高德地图返回结果:"+ post);
        log.info("高德地图返回结果:"+ post);
        return post;
    }
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -811,7 +811,7 @@
                            continue;
                        }
                        //  关闭巡游单子
                        R<Long> stringR = xpCruiseOrderClient.updateCruiseOrder(vehiclePosition.getVehicleVin());
                        R stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehiclePosition.getVehicleVin());
                        if (stringR == null || stringR.getCode() != 200) {
                            log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber());
                            continue;
@@ -860,7 +860,7 @@
                            continue;
                        }
                        //  关闭巡游单子
                        R<Long> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin());
                        R<?> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehicleId1.getVehicleVin());
                        if (stringR == null || stringR.getCode() != 200) {
                            log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber());
                            continue;
@@ -944,7 +944,7 @@
                    continue;
                }
                //  关闭巡游单子
                R<Long> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin());
                R<?> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehicleId1.getVehicleVin());
                if (stringR == null || stringR.getData() == null) {
                    log.info("关闭巡游单子失败");
                    continue;
@@ -963,7 +963,7 @@
                orderMissionClient.pushOrder(pushOrderDto);
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                lock.unlock();
            }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
@@ -41,24 +41,24 @@
    /**
     * 查询并终止订单信息  返回id信息
     *
     * 根据车辆VIN码取消订单
     * 发送取消订单XPU报文
     * @param
     */
    @PostMapping("/inner/cruiseOrder/updateCruiseOrder")
    public R<Long> updateCruiseOrder(@RequestParam String vin) {
        Long id = xpCruiseOrderService.updateCruiseOrder(vin);
    @PostMapping("/inner/cruiseOrder/cancelCruiseOrderByVin")
    public R<Long> cancelCruiseOrderByVin(@RequestParam String vin) {
        Long id = xpCruiseOrderService.cancelCruiseOrderByVin(vin);
        return R.ok(id);
    }
    /**
     * 查询并完成订单信息  返回id信息
     * 完成订单
     *
     * @param
     */
    @PostMapping("/inner/cruiseOrder/closeCruiseOrder")
    public R<Long> closeCruiseOrder(@RequestParam String vin) {
        Long id = xpCruiseOrderService.closeCruiseOrder(vin);
        return R.ok(id);
    @PostMapping("/inner/cruiseOrder/completeCruiseOrder")
    public R<?> completeCruiseOrder(@RequestParam Long orderId) {
        xpCruiseOrderService.completeCruiseOrder(orderId);
        return R.ok();
    }
@@ -67,9 +67,9 @@
     * @param orderId
     * @return
     */
    @PostMapping("/inner/cruiseOrder/updateCruiseOrderId")
    public R<Long> updateCruiseOrderId(@RequestParam Long orderId){
        return xpCruiseOrderService.updateCruiseOrderId(orderId);
    @PostMapping("/inner/cruiseOrder/cancelCruiseOrderById")
    public R<?> cancelCruiseOrderById(@RequestParam Long orderId){
        return xpCruiseOrderService.cancelCruiseOrderById(orderId);
    }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpCruiseOrderService.java
@@ -38,13 +38,13 @@
 */
public interface IXpCruiseOrderService extends IService<XpCruiseOrder> {
    Long updateCruiseOrder(String vin);
    Long cancelCruiseOrderByVin(String vin);
    R updateCruiseOrderId(Long orderId);
    R cancelCruiseOrderById(Long orderId);
    Long closeCruiseOrder(String vin);
    void completeCruiseOrder(Long id);
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -52,29 +52,33 @@
     * @param vin
     */
    @Override
    public Long updateCruiseOrder(String vin) {
    public Long cancelCruiseOrderByVin(String vin) {
        LambdaQueryWrapper<XpCruiseOrder> wrapper = new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleVin, vin).eq(XpCruiseOrder::getStatus, 1);
        XpCruiseOrder xpCruiseOrder = this.getOne(wrapper);
        if (xpCruiseOrder != null) {
            xpCruiseOrder.setStatus(2);
            this.update(xpCruiseOrder, wrapper);
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setVin(vin);
            pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
            R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto);
            if(booleanR==null || !booleanR.getData()){
                log.info("XPU取消巡游订单失败");
                return null;
        List<XpCruiseOrder> xpCruiseOrder = this.list(wrapper.orderByDesc(XpCruiseOrder::getCreateTime));
        if (xpCruiseOrder != null && !xpCruiseOrder.isEmpty()) {
            xpCruiseOrder.forEach(s->{
                s.setStatus(2);
                s.setVehicleId(null);
            });
            this.updateBatchById(xpCruiseOrder);
            for (XpCruiseOrder cruiseOrder : xpCruiseOrder) {
                PushOrderDto pushOrderDto = new PushOrderDto();
                pushOrderDto.setVin(vin);
                pushOrderDto.setOrderId("XU" + cruiseOrder.getId());
                pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
                R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto);
                if(booleanR==null || !booleanR.getData()){
                    log.info("XPU取消巡游订单失败");
                }
            }
            return xpCruiseOrder.getId();
            return xpCruiseOrder.get(0).getId();
        }
        return null;
    }
    @Override
    public R updateCruiseOrderId(Long orderId) {
    public R cancelCruiseOrderById(Long orderId) {
        XpCruiseOrder xpCruiseOrder = this.getById(orderId);
        if (xpCruiseOrder != null) {
            xpCruiseOrder.setStatus(2);
@@ -95,15 +99,13 @@
    }
    @Override
    public Long closeCruiseOrder(String vin) {
        LambdaQueryWrapper<XpCruiseOrder> wrapper = new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleVin, vin).eq(XpCruiseOrder::getStatus, 1);
        XpCruiseOrder xpCruiseOrder = this.getOne(wrapper);
    public void completeCruiseOrder(Long id) {
        XpCruiseOrder xpCruiseOrder = this.getById(id);
        if (xpCruiseOrder != null) {
            xpCruiseOrder.setStatus(3);
            this.update(xpCruiseOrder, wrapper);
            return xpCruiseOrder.getId();
            xpCruiseOrder.setVehicleId(null);
            this.updateById(xpCruiseOrder);
        }
        return null;
    }