xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -53,7 +53,7 @@ * @return 用户列表 */ @GetMapping("/inner/xpOperationsUser/queryById") R<XpOperationsUser> queryById(Long id){ R<XpOperationsUser> queryById(@RequestParam Long id){ return R.ok(xpOperationsUserService.getById(id)); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/automatic/OrderMissionClientFallbackFactory.java
@@ -2,7 +2,6 @@ import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; import com.xiaopeng.api.feignClient.automatic.OrderMissionClient; import com.xiaopeng.api.feignClient.maintenance.XpChargingRecordClient; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/maintenance/XpCheckLocationClientFallbackFactory.java
New file @@ -0,0 +1,31 @@ package com.xiaopeng.api.factory.maintenance; import com.xiaopeng.api.feignClient.maintenance.XpCheckLocationClient; import com.xiaopeng.api.model.maintenance.XpCheckLocation; 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-13 */ @Slf4j @Component public class XpCheckLocationClientFallbackFactory implements FallbackFactory<XpCheckLocationClient> { @Override public XpCheckLocationClient create(Throwable cause) { log.error("打卡地址服务调用失败: {}", cause.getMessage()); return new XpCheckLocationClient() { @Override public R<XpCheckLocation> queryById(Long id) { log.error("远程调用获取检查点位信息异常:{}", cause.getMessage()); return R.fail("远程调用获取检查点位信息异常"); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
@@ -36,7 +36,7 @@ * @return 用户列表 */ @GetMapping("/inner/xpOperationsUser/queryById") R<XpOperationsUser> queryById(Long id); R<XpOperationsUser> queryById(@RequestParam Long id); /** * 根据昵称查询运维用户信息 xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/maintenance/XpCheckLocationClient.java
New file @@ -0,0 +1,24 @@ package com.xiaopeng.api.feignClient.maintenance; import com.xiaopeng.api.factory.maintenance.XpCheckLocationClientFallbackFactory; import com.xiaopeng.api.model.maintenance.XpCheckLocation; 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 Client * * @author mitao */ @FeignClient(contextId = "XpCheckLocationClient", value = ServiceNameConstantsEnum.XP_MAINTENANCE_SERVICE, fallbackFactory = XpCheckLocationClientFallbackFactory.class) public interface XpCheckLocationClient { /** * 根据ID查询打卡地址 */ @GetMapping("/inner/check-location/queryById") R<XpCheckLocation> queryById(@RequestParam Long id); } xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -23,4 +23,5 @@ com.xiaopeng.api.factory.account.UserResourcesClientFallbackFactory com.xiaopeng.api.factory.vehicleConvoy.VehicleControlClientFallbackFactory com.xiaopeng.api.factory.automaticPilot.XPUClientFallbackFactory com.xiaopeng.api.factory.automaticPilot.XpuVimClientFallbackFactory com.xiaopeng.api.factory.automaticPilot.XpuVimClientFallbackFactory com.xiaopeng.api.factory.maintenance.XpCheckLocationClientFallbackFactory xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationController.java
@@ -9,6 +9,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -29,4 +30,10 @@ public R<List<XpCheckLocation>> getList(){ return R.ok(xpCheckLocationService.lambdaQuery().eq(XpCheckLocation::getStatus, DisabledEnum.YES.getCode()).list()); } @GetMapping("/inner/check-location/queryById") @ApiOperation(value = "根据ID查询打卡地址", tags = {"内部接口"}) public R<XpCheckLocation> queryById(@RequestParam Long id) { return R.ok(xpCheckLocationService.getById(id)); } } xp-robotaxi-operation-boot/pom.xml
@@ -21,11 +21,13 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>com.github.stuxuhai</groupId> <artifactId>jpinyin</artifactId> xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
@@ -189,7 +189,7 @@ } @ApiOperation(value = "获取已启用的电子围栏列表",tags = {"管理后台-在库车辆管理"}) @ApiOperation(value = "获取不分页的电子围栏列表",tags = {"管理后台-在库车辆管理"}) @GetMapping("/list") R<List<XpElectronicFence>> getList(){ return R.ok(xpElectronicFenceService.getList()); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
@@ -11,8 +11,8 @@ import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.ElectronicPageListQuery; import com.xiaopeng.api.model.operation.XpRegion; import com.xiaopeng.api.query.operation.ElectronicPageListQuery; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.exception.ServiceException; import com.xiaopeng.common.core.utils.DateUtils; @@ -26,15 +26,11 @@ import com.xiaopeng.operation.mapper.XpElectronicFenceAreaMapper; import com.xiaopeng.operation.mapper.XpElectronicFenceMapper; import com.xiaopeng.operation.mapper.XpPointMapper; import com.xiaopeng.api.query.operation.ElectronicPageListQuery; import com.xiaopeng.operation.mapper.XpRegionMapper; import com.xiaopeng.operation.service.IXpElectronicFenceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.operation.service.IXpRegionService; import com.xiaopeng.operation.utils.PolygonOverlapService; import lombok.extern.slf4j.Slf4j; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -5,12 +5,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.dto.account.XpOperationsUserQueryDTO; import com.xiaopeng.api.feignClient.account.XpOperationUserClient; import com.xiaopeng.api.feignClient.maintenance.XpCheckLocationClient; import com.xiaopeng.api.feignClient.operation.XpElectronicClient; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.model.vehicleConvoy.XpFleetOperations; import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle; @@ -66,7 +66,7 @@ private final XpElectronicClient xpElectronicClient; private final XpPointClient xpPointClient; private final XpCheckLocationClient xpCheckLocationClient; @Override public List<XpFleet> listByIds(List<Long> ids) { @@ -250,9 +250,9 @@ // 6. 查询打卡地信息 if (fleet.getLocationId() != null) { R<XpPoint> pointResult = xpPointClient.queryById(fleet.getLocationId()); if (pointResult.getData() != null) { vo.setLocationName(pointResult.getData().getPointName()); R<XpCheckLocation> locationResult = xpCheckLocationClient.queryById(fleet.getLocationId()); if (locationResult.getData() != null) { vo.setLocationName(locationResult.getData().getLocationAddress()); } }