puzhibing
2026-03-14 0b69e73c13a55b18c78da409bda9a7e5371bfdb1
修改巡游单bug
4个文件已修改
88 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpCruiseOrder.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpCruiseOrder.java
@@ -61,19 +61,19 @@
    @ApiModelProperty(value = "状态 1进行中 2已停止 3已完成")
    private Integer status;
    @ApiModelProperty(value = "下单站点id")
    @ApiModelProperty(value = "起点站点id")
    @TableField("start_point_id")
    private Long startPointId;
    @ApiModelProperty(value = "下单终点站点Id")
    @ApiModelProperty(value = "终点站点Id")
    @TableField("end_point_id")
    private Long endPointId;
    @ApiModelProperty(value = "下单站点名称")
    @ApiModelProperty(value = "站点名称")
    @TableField("start_point_name")
    private String startPointName;
    @ApiModelProperty(value = "下单终点站点名称")
    @ApiModelProperty(value = "终点站点名称")
    @TableField("end_point_name")
    private String endPointName;
@@ -81,7 +81,7 @@
    @TableField("mission_id")
    private Long missionId;
    @ApiModelProperty(value = "返程上次的订单id")
    @ApiModelProperty(value = "上笔巡游单ID")
    @TableField("last_order_id")
    private Long lastOrderId;
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -350,11 +350,11 @@
                mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(vin)), update, VehiclePosition.class);
            }
            //调用推送服务接口
            if (null != orderId) {
            if (null != orderId && !order_id.contains("XU")) {
                RtTripInfo rtTripInfo = systemRuntimeStatus.getRtTripInfo();
                PushOrderRouteDTO dto = new PushOrderRouteDTO();
                dto.setOrderId(orderId);
                dto.setRouteType(order_id.contains("XU") ? 2 : 1);
                dto.setRouteType(1);
                dto.setLongitude(longitude);
                dto.setLatitude(latitude);
                //TODO 这两个字段现在拿不到
@@ -901,41 +901,33 @@
                    XpVehicle xpVehicle = xpVehicleR.getData();
                    // 运营中 继续执行
                    if(xpVehicle.getOperatingStatus()==1 && xpVehicle.getState()==0){
                        log.info("巡游单到达终点,继续执行下一笔巡游单");
                        // 创建新的巡游单子  判断是否为返程单子
                        if(xpCruiseOrder.getOrderType()==2){
                            R<XpCruiseOrder> lastOrder = xpCruiseOrderClient.getCruiseOrder(xpCruiseOrder.getLastOrderId());
                            XpCruiseOrder lastXpCruiseOrder = lastOrder.getData();
                            // 修改一下id 加一个一样的巡游单子
                            lastXpCruiseOrder.setId(null);
                            lastXpCruiseOrder.setStatus(1);
                            xpCruiseOrderClient.addCruiseOrder(lastXpCruiseOrder);
                        }else if(xpCruiseOrder.getOrderType()==1){
                           // 正常巡游 找到下一个点位   若到达最后点位  则反向找点位
                            // 起点
                            Double endLon = xpCruiseOrder.getEndLon();
                            Double endLat = xpCruiseOrder.getEndLat();
                            XpCruiseOrder newXpCruiseOrder = new XpCruiseOrder();
                            newXpCruiseOrder.setVehicleId(xpCruiseOrder.getVehicleId());
                            newXpCruiseOrder.setVehicleVin(xpCruiseOrder.getVehicleVin());
                            newXpCruiseOrder.setFleetId(xpCruiseOrder.getFleetId());
                            newXpCruiseOrder.setOrderType(1);
                            newXpCruiseOrder.setStartLat(endLat);
                            newXpCruiseOrder.setStartLon(endLon);
                            newXpCruiseOrder.setStartPointId(xpCruiseOrder.getEndPointId());
                            newXpCruiseOrder.setStartPointName(xpCruiseOrder.getEndPointName());
                            newXpCruiseOrder.setStatus(1);
                            newXpCruiseOrder.setLastOrderId(xpCruiseOrder.getId());
                        // 正常巡游 找到下一个点位   若到达最后点位  则反向找点位
                        // 起点
                        Double endLon = xpCruiseOrder.getEndLon();
                        Double endLat = xpCruiseOrder.getEndLat();
                        XpCruiseOrder newXpCruiseOrder = new XpCruiseOrder();
                        newXpCruiseOrder.setVehicleId(xpCruiseOrder.getVehicleId());
                        newXpCruiseOrder.setVehicleVin(xpCruiseOrder.getVehicleVin());
                        newXpCruiseOrder.setFleetId(xpCruiseOrder.getFleetId());
                        newXpCruiseOrder.setOrderType(1);
                        newXpCruiseOrder.setStartLat(endLat);
                        newXpCruiseOrder.setStartLon(endLon);
                        newXpCruiseOrder.setStartPointId(xpCruiseOrder.getEndPointId());
                        newXpCruiseOrder.setStartPointName(xpCruiseOrder.getEndPointName());
                        newXpCruiseOrder.setStatus(1);
                        newXpCruiseOrder.setLastOrderId(xpCruiseOrder.getId());
                            // 通过车找终点id
                            CruisePointDto cruisePointDto = new CruisePointDto();
                            cruisePointDto.setNewXpCruiseOrder(newXpCruiseOrder);
                            cruisePointDto.setVehicleId(xpCruiseOrder.getVehicleId());
                            cruisePointDto.setPointId(newXpCruiseOrder.getStartPointId());
                            cruisePointDto.setOrderReverse(xpCruiseOrder.getOrderReverse());
                            R<XpCruiseOrder> cruisePoint = xpCruisePlanClient.getCruisePoint(cruisePointDto);
                            if(cruisePoint!=null){
                                xpCruiseOrderClient.addCruiseOrder(cruisePoint.getData());
                            }
                        // 通过车找终点id
                        CruisePointDto cruisePointDto = new CruisePointDto();
                        cruisePointDto.setNewXpCruiseOrder(newXpCruiseOrder);
                        cruisePointDto.setVehicleId(xpCruiseOrder.getVehicleId());
                        cruisePointDto.setPointId(newXpCruiseOrder.getStartPointId());
                        cruisePointDto.setOrderReverse(xpCruiseOrder.getOrderReverse());
                        R<XpCruiseOrder> cruisePoint = xpCruisePlanClient.getCruisePoint(cruisePointDto);
                        if(cruisePoint!=null){
                            xpCruiseOrderClient.addCruiseOrder(cruisePoint.getData());
                        }
                    }
                }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java
@@ -85,7 +85,12 @@
            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());
                //标记订单为返程类型巡游单
                //方向为正向
                XpCruiseOrder cruiseOrder = newCruiseOrder.getData();
                cruiseOrder.setOrderType(2);
                cruiseOrder.setOrderReverse(1);
                R<Long> longR = xpCruiseOrderClient.addCruiseOrder(cruiseOrder);
                if(200 != longR.getCode()){
                    return R.fail(longR.getMsg());
                }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -15,6 +15,7 @@
import com.xiaopeng.api.dto.account.UcUserInfo;
import com.xiaopeng.api.dto.account.UseUserCouponDto;
import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
import com.xiaopeng.api.dto.operation.CruisePointDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.dto.order.GetOrderNumDto;
import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
@@ -2008,6 +2009,7 @@
                xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
                xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
            }
            xpCruiseOrder.setOrderReverse(xpCruiseOrders.getOrderReverse());
            xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
            xpCruiseOrder.setMissionId(xpCruiseOrders.getMissionId());
        }
@@ -2023,6 +2025,7 @@
            xpCruiseOrder.setEndLon(endPoint.getPointLon());
            xpCruiseOrder.setEndLat(endPoint.getPointLat());
            xpCruiseOrder.setMissionId(xpCruisePlanPoint.getCruisePlanId());
            xpCruiseOrder.setOrderReverse(1);
        }
@@ -2039,6 +2042,8 @@
                //找到车辆的收车点位 更新终点点位
                R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
                xpCruiseOrder = returnCruisePoint.getData();
                xpCruiseOrder.setOrderType(2);
                xpCruiseOrder.setOrderReverse(1);
            }
            xpVehicleClient.updateVehicleById(vehicle);
        }
@@ -2120,6 +2125,7 @@
                xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
                xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
            }
            xpCruiseOrder.setOrderReverse(xpCruiseOrders.getOrderReverse());
            xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
            xpCruiseOrder.setMissionId(xpCruiseOrders.getMissionId());
        }
@@ -2135,6 +2141,7 @@
            xpCruiseOrder.setEndLon(endPoint.getPointLon());
            xpCruiseOrder.setEndLat(endPoint.getPointLat());
            xpCruiseOrder.setMissionId(xpCruisePlanPoint.getCruisePlanId());
            xpCruiseOrder.setOrderReverse(1);
        }
@@ -2149,6 +2156,8 @@
                //找到车辆的收车点位 更新终点点位
                R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
                xpCruiseOrder = returnCruisePoint.getData();
                xpCruiseOrder.setOrderType(2);
                xpCruiseOrder.setOrderReverse(1);
            }
            xpVehicleClient.updateVehicleById(vehicle);
        }