From d47c911a0c09a7399874f0c95628e2df6812ae88 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Wed, 15 Jul 2026 16:31:42 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/NlExecuteAutoConfiguration.java | 16 ++++ .../config/NlExecuteRpcAutoConfiguration.java | 18 ++++ .../execute/core/TaskCommonApiFactory.java | 16 ++-- ...ot.autoconfigure.AutoConfiguration.imports | 2 + .../nl/module/task/dto/AcsFeedbackReqDTO.java | 30 ------ .../task/dto/TaskCallbackResultReqDTO.java | 29 ------ .../nl/module/task/dto/TaskEventMessage.java | 39 -------- .../task/dto/TaskStatusCallbackReqDTO.java | 37 -------- .../task/dto/TaskStatusCallbackRespDTO.java | 28 ------ .../task/dto/TransportTaskCreateReqDTO.java | 91 ------------------- .../rpc/config/RpcConfiguration.java | 5 +- 11 files changed, 47 insertions(+), 264 deletions(-) create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteAutoConfiguration.java create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteRpcAutoConfiguration.java create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/AcsFeedbackReqDTO.java delete mode 100644 nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskCallbackResultReqDTO.java delete mode 100644 nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskEventMessage.java delete mode 100644 nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackReqDTO.java delete mode 100644 nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackRespDTO.java delete mode 100644 nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TransportTaskCreateReqDTO.java diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteAutoConfiguration.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteAutoConfiguration.java new file mode 100644 index 00000000..f3784887 --- /dev/null +++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteAutoConfiguration.java @@ -0,0 +1,16 @@ +package cn.code.nl.framework.execute.config; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.context.annotation.ComponentScan; + +/** + * 任务执行模块自动配置 + * 扫描框架包下的 Spring 组件(如 TaskCommonApiFactory、TaskFactory 等) + * + * @Author: liyongde + * @Date: 2026/7/15 + */ +@AutoConfiguration +@ComponentScan(basePackages = "cn.code.nl.framework.execute") +public class NlExecuteAutoConfiguration { +} diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteRpcAutoConfiguration.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteRpcAutoConfiguration.java new file mode 100644 index 00000000..44100c07 --- /dev/null +++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/config/NlExecuteRpcAutoConfiguration.java @@ -0,0 +1,18 @@ +package cn.code.nl.framework.execute.config; + +import cn.code.nl.framework.execute.biz.lms.LmsTaskCommonApi; +import cn.code.nl.framework.execute.biz.wms.WmsTaskCommonApi; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * 任务执行模块 RPC 配置 + * 在框架层注册 Feign Client,确保引用此框架的模块自动拥有对应的 Bean + * + * @Author: liyongde + * @Date: 2026/7/15 + */ +@AutoConfiguration +@EnableFeignClients(clients = {LmsTaskCommonApi.class, WmsTaskCommonApi.class}) +public class NlExecuteRpcAutoConfiguration { +} diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/TaskCommonApiFactory.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/TaskCommonApiFactory.java index b03bc84f..ce0a049d 100644 --- a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/TaskCommonApiFactory.java +++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/TaskCommonApiFactory.java @@ -6,7 +6,7 @@ import cn.code.nl.framework.execute.biz.TaskCommonApi; import cn.code.nl.framework.execute.biz.lms.LmsTaskCommonApi; import cn.code.nl.framework.execute.biz.wms.WmsTaskCommonApi; import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.HashMap; @@ -23,10 +23,10 @@ import java.util.Map; @Component public class TaskCommonApiFactory { - @Resource + @Autowired(required = false) private LmsTaskCommonApi lmsTaskCommonApi; - @Resource + @Autowired(required = false) private WmsTaskCommonApi wmsTaskCommonApi; /** @@ -35,12 +35,16 @@ public class TaskCommonApiFactory { private final Map apiMap = new HashMap<>(); /** - * 初始化映射关系 + * 初始化映射关系(仅注册当前模块已配置的 Feign Client) */ @PostConstruct public void init() { - apiMap.put(RpcConstants.LMS_NAME, lmsTaskCommonApi); - apiMap.put(RpcConstants.WMS_NAME, wmsTaskCommonApi); + if (lmsTaskCommonApi != null) { + apiMap.put(RpcConstants.LMS_NAME, lmsTaskCommonApi); + } + if (wmsTaskCommonApi != null) { + apiMap.put(RpcConstants.WMS_NAME, wmsTaskCommonApi); + } } /** diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/nl-framework/nl-spring-boot-starter-execute/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..81824b65 --- /dev/null +++ b/nl-framework/nl-spring-boot-starter-execute/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +cn.code.nl.framework.execute.config.NlExecuteAutoConfiguration +cn.code.nl.framework.execute.config.NlExecuteRpcAutoConfiguration diff --git a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/AcsFeedbackReqDTO.java b/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/AcsFeedbackReqDTO.java deleted file mode 100644 index 19f8b76c..00000000 --- a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/AcsFeedbackReqDTO.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.code.nl.module.task.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Map; - -/** - * ACS 状态反馈请求 DTO - */ -@Schema(description = "ACS 状态反馈 Request DTO") -@Data -public class AcsFeedbackReqDTO { - - @Schema(description = "任务ID", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "任务ID不能为空") - private Long taskId; - - @Schema(description = "ACS反馈状态:EXECUTING/PICKED/FINISHED/CANCELLED", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "反馈状态不能为空") - private String status; - - @Schema(description = "事件ID(幂等键)") - private String eventId; - - @Schema(description = "ACS反馈扩展数据") - private Map payload; -} diff --git a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskCallbackResultReqDTO.java b/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskCallbackResultReqDTO.java deleted file mode 100644 index 439a5bc6..00000000 --- a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskCallbackResultReqDTO.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.code.nl.module.task.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * LMS/WMS 业务处理结果回调请求 DTO - */ -@Schema(description = "RPC - 业务结果回调 Request DTO") -@Data -public class TaskCallbackResultReqDTO { - - @Schema(description = "任务ID", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "任务ID不能为空") - private Long taskId; - - @Schema(description = "事件ID", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "事件ID不能为空") - private String eventId; - - @Schema(description = "处理结果:SUCCESS/FAILED", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "处理结果不能为空") - private String result; - - @Schema(description = "结果描述") - private String message; -} diff --git a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskEventMessage.java b/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskEventMessage.java deleted file mode 100644 index 5f8ee3b4..00000000 --- a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskEventMessage.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.code.nl.module.task.dto; - -import lombok.Data; - -import java.util.Map; - -/** - * 任务事件 MQ 消息体 - */ -@Data -public class TaskEventMessage { - - /** 事件ID */ - private String eventId; - - /** 事件类型:TASK_FINISHED / TASK_CANCELLED */ - private String eventType; - - /** 任务ID */ - private Long taskId; - - /** 任务编码 */ - private String taskCode; - - /** 业务归属服务:LMS / WMS */ - private String ownerService; - - /** 业务类型 */ - private String bizType; - - /** 业务侧标识 */ - private String bizId; - - /** 业务回调处理器编码 */ - private String handleCode; - - /** 扩展数据 */ - private Map payload; -} diff --git a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackReqDTO.java b/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackReqDTO.java deleted file mode 100644 index 123aa1c3..00000000 --- a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackReqDTO.java +++ /dev/null @@ -1,37 +0,0 @@ -package cn.code.nl.module.task.dto; - -import lombok.Data; - -import java.util.Map; - -/** - * Task→LMS/WMS 同步状态回调请求 DTO - * LMS/WMS 需依此 DTO 实现回调端点 - */ -@Data -public class TaskStatusCallbackReqDTO { - - /** 任务ID */ - private Long taskId; - - /** 任务编码 */ - private String taskCode; - - /** 回调状态:当前为 PICKED(61) */ - private String status; - - /** 业务归属服务 */ - private String ownerService; - - /** 业务类型 */ - private String bizType; - - /** 业务侧标识 */ - private String bizId; - - /** 业务回调处理器编码(LMS/WMS 内部路由) */ - private String handleCode; - - /** 扩展数据 */ - private Map payload; -} diff --git a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackRespDTO.java b/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackRespDTO.java deleted file mode 100644 index bdd14817..00000000 --- a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TaskStatusCallbackRespDTO.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.code.nl.module.task.dto; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * Task→LMS/WMS 同步状态回调响应 DTO - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class TaskStatusCallbackRespDTO { - - /** 是否成功 */ - private Boolean success; - - /** 响应消息 */ - private String message; - - public static TaskStatusCallbackRespDTO success() { - return new TaskStatusCallbackRespDTO(true, "ok"); - } - - public static TaskStatusCallbackRespDTO fail(String message) { - return new TaskStatusCallbackRespDTO(false, message); - } -} diff --git a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TransportTaskCreateReqDTO.java b/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TransportTaskCreateReqDTO.java deleted file mode 100644 index 96271cbf..00000000 --- a/nl-module-task-api/src/main/java/cn/code/nl/module/task/dto/TransportTaskCreateReqDTO.java +++ /dev/null @@ -1,91 +0,0 @@ -package cn.code.nl.module.task.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -import java.util.Map; - -/** - * LMS/WMS 创建搬运任务请求 DTO - */ -@Schema(description = "RPC - 搬运任务创建 Request DTO") -@Data -public class TransportTaskCreateReqDTO { - - @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "任务名称不能为空") - private String taskName; - - @Schema(description = "业务归属服务:LMS/WMS", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "业务归属服务不能为空") - private String ownerService; - - @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "业务类型不能为空") - private String bizType; - - @Schema(description = "业务侧标识", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "业务侧标识不能为空") - private String bizId; - - @Schema(description = "业务回调处理器编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "业务回调处理器编码不能为空") - private String handleCode; - - @Schema(description = "ACS任务类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "ACS任务类型不能为空") - private String acsTaskType; - - @Schema(description = "AGV系统类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "AGV系统类型不能为空") - private String agvSystemType; - - @Schema(description = "取货点1") - private String pointCode1; - - @Schema(description = "放货点1") - private String pointCode2; - - @Schema(description = "取货点2") - private String pointCode3; - - @Schema(description = "放货点2") - private String pointCode4; - - @Schema(description = "载具编码") - private String vehicleCode; - - @Schema(description = "载具编码2") - private String vehicleCode2; - - @Schema(description = "优先级") - private String priority; - - @Schema(description = "生产区域") - private String productArea; - - @Schema(description = "是否自动下发") - private String isAutoIssue; - - @Schema(description = "任务类型") - private String taskType; - - @Schema(description = "载具类型") - private String vehicleType; - - @Schema(description = "载具数量") - private Long vehicleQty; - - @Schema(description = "车号") - private String carNo; - - @Schema(description = "任务组标识") - private Long taskGroupId; - - @Schema(description = "任务组顺序号") - private Long sortSeq; - - @Schema(description = "扩展参数(JSON)") - private Map requestParam; -} diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/framework/rpc/config/RpcConfiguration.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/framework/rpc/config/RpcConfiguration.java index 2bc5deda..64e9c9d5 100644 --- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/framework/rpc/config/RpcConfiguration.java +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/framework/rpc/config/RpcConfiguration.java @@ -1,14 +1,11 @@ package cn.code.nl.module.task.framework.rpc.config; -import cn.code.nl.framework.execute.biz.lms.LmsTaskCommonApi; -import cn.code.nl.framework.execute.biz.wms.WmsTaskCommonApi; -import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; /** * Task 服务 RPC 配置 + * Feign Client 注册已移至框架层 {@link cn.code.nl.framework.execute.config.NlExecuteRpcAutoConfiguration} */ @Configuration(value = "taskRpcConfiguration", proxyBeanMethods = false) -@EnableFeignClients(clients = {LmsTaskCommonApi.class, WmsTaskCommonApi.class}) public class RpcConfiguration { }