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
@@ -42,4 +42,5 @@ com.xiaopeng.api.factory.maintenance.XpTaskClientFallbackFactory com.xiaopeng.api.factory.maintenance.XpTaskRuleClientFallbackFactory com.xiaopeng.api.factory.maintenance.XpWorkOrderClientFallbackFactory com.xiaopeng.api.factory.pushMessage.XpAliPushMessageClientFallbackFactory 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; }