liujie
2026-02-12 dd0fdda3404ba4d2be7a86464c963a63cbf1e984
refactor(vehicle): 更新车辆信息查询接口返回类型

- 将 findByVehicleVin 接口从返回 VehiclePosition 改为返回 XpVehicle
- 修改 TaskOrderUtil 中的车辆信息获取逻辑,使用新的数据类型
- 更新车辆状态检查逻辑,统一使用 XpVehicle 对象
- 移除不必要的对象转换,直接返回数据库查询结果
4个文件已修改
31 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpVehicleClientFallbackFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpVehicleClientFallbackFactory.java
@@ -63,7 +63,7 @@
            }
            @Override
            public VehiclePosition findByVehicleVin(String vehicleId) {
            public R<XpVehicle> findByVehicleVin(String vehicleId) {
                log.error("查询车辆信息失败,原因: {}", cause.getMessage());
                return R.fail();
            }
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java
@@ -80,5 +80,5 @@
     * @return
     */
    @GetMapping("/inner/vehicle/findByVehicleVin")
    R<VehiclePosition> findByVehicleVin(String vehicleVin);
    R<XpVehicle> findByVehicleVin(String vehicleVin);
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -13,6 +13,7 @@
import com.xiaopeng.api.model.operation.XpElectronicFence;
import com.xiaopeng.api.model.operation.XpTradingStrategy;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
@@ -607,20 +608,19 @@
                    lock.lock(10, TimeUnit.SECONDS);
                    try {
//                        VehiclePosition vehiclePosition = vehiclePositionService.findByVehicleId(vehiclePositionVo.getVehicle_id());
                        R<VehiclePosition> vehiclePositionR = xpVehicleClient.findByVehicleVin(vehiclePositionVo.getVin());
                        R<XpVehicle> vehiclePositionR = xpVehicleClient.findByVehicleVin(vehiclePositionVo.getVin());
                        if (vehiclePositionR.getCode() != 200) {
                            continue;
                        }
                        VehiclePosition vehiclePosition = vehiclePositionR.getData();
                        XpVehicle vehiclePosition = vehiclePositionR.getData();
                        if (vehiclePosition.getStatus() != 1 || vehiclePosition.getState() != 0) {
                            lock.unlock();
                            continue;
                        }
                        //  关闭巡游单子 TODO
                        AddTaxiPassengerVo addTaxiPassengerVo = new AddTaxiPassengerVo();
                        addTaxiPassengerVo.setVin(vehiclePosition.getVin());
                        addTaxiPassengerVo.setVin(vehiclePosition.getVehicleVin());
                        addTaxiPassengerVo.setUid(uid);
                        addTaxiPassengerVo.setOrderNo(orderNo);
                        // TODO appid
@@ -643,13 +643,17 @@
                } else {
                    // 直接派单  定义一个锁来锁定车辆
                    VehiclePosition vehiclePosition = positionList.get(0);
                    Long vehicleId = vehiclePosition.getVehicle_id();
                    String vehicleVin = vehiclePosition.getVin();
                    RLock lock = redissonClient.getLock("FIND_CAR_" + vehiclePosition.getVin());
                    lock.lock(10, TimeUnit.SECONDS);
                    try {
                        // 查询车辆状态
                        VehiclePosition vehicleId1 = vehiclePositionService.findByVehicleId(vehicleId);
                       R<XpVehicle> vehicleR = xpVehicleClient.findByVehicleVin(vehicleVin);
                       if(vehicleR.getCode()!=200){
                           continue;
                       }
                       XpVehicle vehicleId1 = vehicleR.getData();
                        if (vehicleId1.getStatus() != 1 || vehicleId1.getState() != 0) {
                            lock.unlock();
                            continue;
xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -402,16 +402,9 @@
     * @return
     */
    @GetMapping("/inner/vehicle/findByVehicleVin")
    public R<VehiclePosition> findByVehicleVin(String vehicleVin){
    public R<XpVehicle> findByVehicleVin(String vehicleVin){
        XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, vehicleVin));
        VehiclePosition vehiclePosition = new VehiclePosition();
        vehiclePosition.setVin(xpVehicle.getVehicleVin());
        vehiclePosition.setState(xpVehicle.getState());
        vehiclePosition.setStatus(xpVehicle.getStatus());
        return R.ok(vehiclePosition);
        return R.ok(xpVehicle);
    }
    /**
     * 查询可改派的车辆列表