xuhy
2026-03-15 cefdf53b4c19c6780c2064b5084cffc5a9f60e5e
运维bug修改
2个文件已添加
4个文件已修改
94 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/maintenance/XpVehicleRepairClientFallbackFactory.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/maintenance/XpVehicleRepairClient.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/XpVehicleVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/maintenance/XpVehicleRepairClientFallbackFactory.java
New file
@@ -0,0 +1,30 @@
package com.xiaopeng.api.factory.maintenance;
import com.xiaopeng.api.feignClient.maintenance.XpVehicleRepairClient;
import com.xiaopeng.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
 * 车辆维修Feign客户端降级工厂
 *
 * @author mitao
 * @since 2026-02-11
 */
@Slf4j
@Component
public class XpVehicleRepairClientFallbackFactory implements FallbackFactory<XpVehicleRepairClient> {
    @Override
    public XpVehicleRepairClient create(Throwable cause) {
        log.error("车辆维修服务调用失败: {}", cause.getMessage());
        return new XpVehicleRepairClient() {
            @Override
            public R<Integer> getMaintenanceStatus(Long vehicleId) {
                return R.fail("获取车辆维修状态失败:"+cause.getMessage());
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/maintenance/XpVehicleRepairClient.java
New file
@@ -0,0 +1,29 @@
package com.xiaopeng.api.feignClient.maintenance;
import com.xiaopeng.api.factory.maintenance.XpVehicleRepairClientFallbackFactory;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * 车辆维修Feign客户端
 *
 * @author mitao
 * @since 2026-02-11
 */
@FeignClient(contextId = "XpVehicleRepairClient",
        value = ServiceNameConstantsEnum.XP_MAINTENANCE_SERVICE,
        fallbackFactory = XpVehicleRepairClientFallbackFactory.class)
public interface XpVehicleRepairClient {
    /**
     * 获取车辆维修状态
     * @param vehicleId
     * @return
     */
    @GetMapping("/inner/xpVehicleRepair/getMaintenanceStatus")
    R<Integer> getMaintenanceStatus(@RequestParam Long vehicleId);
}
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -43,3 +43,4 @@
com.xiaopeng.api.factory.maintenance.XpTaskRuleClientFallbackFactory
com.xiaopeng.api.factory.maintenance.XpWorkOrderClientFallbackFactory
com.xiaopeng.api.factory.pushMessage.XpAliPushMessageClientFallbackFactory
com.xiaopeng.api.factory.maintenance.XpVehicleRepairClientFallbackFactory
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.maintenance.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.model.maintenance.XpVehicleRepair;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
@@ -22,6 +23,7 @@
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Objects;
/**
 * <p>
@@ -97,5 +99,23 @@
        PageInfo<XpVehicleRepairVO> pageInfo = xpVehicleRepairService.queryDetectionByVehicleId(query);
        return R.ok(pageInfo);
    }
    @GetMapping("/inner/xpVehicleRepair/getMaintenanceStatus")
    public R<Integer> getMaintenanceStatus(@RequestParam Long vehicleId){
        XpVehicleRepair xpVehicleRepair = xpVehicleRepairService.getOne(new LambdaQueryWrapper<XpVehicleRepair>()
                .eq(XpVehicleRepair::getVehicleId, vehicleId)
                .isNull(XpVehicleRepair::getReturnTime)
                .isNull(XpVehicleRepair::getTaskId)
                .orderByDesc(XpVehicleRepair::getCreateTime)
                .last("LIMIT 1"));
        if(Objects.nonNull(xpVehicleRepair)){
            return R.ok(2);
        }else {
            return R.ok(1);
        }
    }
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -13,12 +13,11 @@
import com.mongodb.client.MongoCollection;import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
import com.xiaopeng.api.feignClient.maintenance.XpChargingRecordClient;
import com.xiaopeng.api.feignClient.maintenance.XpTaskClient;
import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient;
import com.xiaopeng.api.feignClient.maintenance.XpVehiclePreparationClient;
import com.xiaopeng.api.feignClient.maintenance.*;
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
import com.xiaopeng.api.model.maintenance.XpVehicleRepair;
import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
@@ -105,6 +104,7 @@
    private final MongoTemplate mongoTemplate;
    private final MessageSource messageSource;
    private final TokenService tokenService;
    private final XpVehicleRepairClient xpVehicleRepairClient;
    /**
     * 根据ID列表批量查询车辆信息(内部接口)
     *
@@ -853,6 +853,9 @@
            xpVehicleVO.setMileageRange(0F);
            xpVehicleVO.setCurrentElectricity(0);
        }
        // 判断车辆维修状态
        Integer maintenanceStatus = xpVehicleRepairClient.getMaintenanceStatus(xpVehicleVO.getId()).getData();
        xpVehicleVO.setMaintenanceStatus(maintenanceStatus);
        return R.ok(xpVehicleVO);
    }
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/XpVehicleVO.java
@@ -33,4 +33,7 @@
    @ApiModelProperty(value = "车辆纬度")
    private Double latitude=30.586688;
    @ApiModelProperty(value = "车辆维修状态 1=取回 2=送修")
    private Integer maintenanceStatus;
}