liujie
2026-03-14 b1baa6cac108eb9c7599556e1afd3ec351caf2e2
修改bug
2个文件已添加
6个文件已修改
88 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/maintenance/XpWorkOrderClientFallbackFactory.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/maintenance/XpWorkOrderClient.java 26 ●●●●● 补丁 | 查看 | 原始文档 | 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/XpWorkOrderController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/constant/I18nKeyConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpFeedbackTypeManagementController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/i18n/messages.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/i18n/messages_zh_CN.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/maintenance/XpWorkOrderClientFallbackFactory.java
New file
@@ -0,0 +1,26 @@
package com.xiaopeng.api.factory.maintenance;
import com.xiaopeng.api.feignClient.maintenance.XpTaskClient;
import com.xiaopeng.api.feignClient.maintenance.XpWorkOrderClient;
import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class XpWorkOrderClientFallbackFactory implements FallbackFactory<XpWorkOrderClient> {
    @Override
    public XpWorkOrderClient create(Throwable cause) {
        return new XpWorkOrderClient() {
            @Override
            public R<Boolean> include(Long id) {
                log.error("XpWorkOrderClientFallbackFactory.include error:{}", cause.getMessage());
                return null;
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/maintenance/XpWorkOrderClient.java
New file
@@ -0,0 +1,26 @@
package com.xiaopeng.api.feignClient.maintenance;
import com.xiaopeng.api.factory.maintenance.XpClockInClientFallbackFactory;
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
 * @date 2026-02-14
 */
@FeignClient(
    contextId = "XpClockInClient",
    value = ServiceNameConstantsEnum.XP_MAINTENANCE_SERVICE,
    fallbackFactory = XpClockInClientFallbackFactory.class
)
public interface XpWorkOrderClient {
    @GetMapping("/api/v1/workOrder/include")
    R<Boolean> include(@RequestParam Long id);
}
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -41,4 +41,5 @@
com.xiaopeng.api.factory.maintenance.XpTaskHandleDetailRoutineClientFallbackFactory
com.xiaopeng.api.factory.maintenance.XpTaskClientFallbackFactory
com.xiaopeng.api.factory.maintenance.XpTaskRuleClientFallbackFactory
com.xiaopeng.api.factory.maintenance.XpWorkOrderClientFallbackFactory
com.xiaopeng.api.factory.pushMessage.XpAliPushMessageClientFallbackFactory
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpWorkOrderController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.maintenance.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.model.maintenance.XpWorkOrder;
import com.xiaopeng.api.model.maintenance.XpWorkOrderLog;
import com.xiaopeng.common.core.domain.R;
@@ -74,4 +75,19 @@
        XpWorkOrder detail =workOrderService.workOrderDetail(id);
        return R.ok(detail);
    }
    /**
     * 判断工单是否包含这个类型的id
     * @param id
     * @return
     */
    @GetMapping("/include")
    public R<Boolean> include(@RequestParam Long id){
        long count = workOrderService.count(new LambdaQueryWrapper<XpWorkOrder>().eq(XpWorkOrder::getFeedbackTypeId, id));
        if(count>0){
            return R.ok(true);
        }
        return R.ok(false);
    }
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/constant/I18nKeyConstant.java
@@ -100,4 +100,6 @@
    // 邀请码数量上限
    String INVITATION_LIMIT_EXCEEDED = "invitation.limit.exceeded";
    // 包含这个反馈类型
    String INCLUDE = "include";
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpFeedbackTypeManagementController.java
@@ -1,8 +1,11 @@
package com.xiaopeng.operation.controller;
import com.xiaopeng.api.feignClient.maintenance.XpWorkOrderClient;
import com.xiaopeng.api.model.operation.XpFeedbackType;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.operation.constant.I18nKeyConstant;
import com.xiaopeng.operation.service.IXpFeedbackTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -28,9 +31,14 @@
    private final IXpFeedbackTypeService xpFeedbackTypeService;
    private final XpWorkOrderClient xpWorkOrderClient;
    public XpFeedbackTypeManagementController(IXpFeedbackTypeService xpFeedbackTypeService) {
    public XpFeedbackTypeManagementController(IXpFeedbackTypeService xpFeedbackTypeService, XpWorkOrderClient xpWorkOrderClient) {
        this.xpFeedbackTypeService = xpFeedbackTypeService;
        this.xpWorkOrderClient = xpWorkOrderClient;
    }
    @GetMapping("/getList")
    @ApiOperation(value = "获取意见反馈类型列表")
@@ -51,6 +59,11 @@
    @ApiOperation(value = "删除意见反馈类型")
    @DeleteMapping(value = "/deleteFeedbackType")
    public R<Boolean> deleteFeedbackType(Long id) {
        // 判断工单是否包含这个类型
        R<Boolean> include = xpWorkOrderClient.include(id);
        if(include==null || include.getData()){
           throw new ServiceException("该类型被工单引用,无法删除",I18nKeyConstant.INCLUDE);
        }
        return R.ok(xpFeedbackTypeService.removeById(id));
    }
}
xp-robotaxi-operation-boot/src/main/resources/i18n/messages.properties
@@ -43,3 +43,4 @@
invitation.import.code.contains.chinese=第{0}行邀请码包含中文:{1}
invitation.import.code.duplicate=导入文件中邀请码重复:{0}
invitation.import.code.exists=以下邀请码已存在:{0}
include=该类型被工单引用,无法删除
xp-robotaxi-operation-boot/src/main/resources/i18n/messages_zh_CN.properties
@@ -36,4 +36,5 @@
invitation.import.code.contains.chinese=第{0}行邀请码包含中文:{1}
invitation.import.code.duplicate=导入文件中邀请码重复:{0}
invitation.import.code.exists=以下邀请码已存在:{0}
include=该类型被工单引用,无法删除
invitation.limit.exceeded=系统最多只能有{0}个邀请码,当前已有{1}个,本次新增{2}个,无法生成