fix:框架
This commit is contained in:
@@ -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 {
|
||||||
|
}
|
||||||
@@ -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 {
|
||||||
|
}
|
||||||
@@ -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.lms.LmsTaskCommonApi;
|
||||||
import cn.code.nl.framework.execute.biz.wms.WmsTaskCommonApi;
|
import cn.code.nl.framework.execute.biz.wms.WmsTaskCommonApi;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.annotation.Resource;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -23,10 +23,10 @@ import java.util.Map;
|
|||||||
@Component
|
@Component
|
||||||
public class TaskCommonApiFactory {
|
public class TaskCommonApiFactory {
|
||||||
|
|
||||||
@Resource
|
@Autowired(required = false)
|
||||||
private LmsTaskCommonApi lmsTaskCommonApi;
|
private LmsTaskCommonApi lmsTaskCommonApi;
|
||||||
|
|
||||||
@Resource
|
@Autowired(required = false)
|
||||||
private WmsTaskCommonApi wmsTaskCommonApi;
|
private WmsTaskCommonApi wmsTaskCommonApi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,13 +35,17 @@ public class TaskCommonApiFactory {
|
|||||||
private final Map<String, TaskCommonApi> apiMap = new HashMap<>();
|
private final Map<String, TaskCommonApi> apiMap = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化映射关系
|
* 初始化映射关系(仅注册当前模块已配置的 Feign Client)
|
||||||
*/
|
*/
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
|
if (lmsTaskCommonApi != null) {
|
||||||
apiMap.put(RpcConstants.LMS_NAME, lmsTaskCommonApi);
|
apiMap.put(RpcConstants.LMS_NAME, lmsTaskCommonApi);
|
||||||
|
}
|
||||||
|
if (wmsTaskCommonApi != null) {
|
||||||
apiMap.put(RpcConstants.WMS_NAME, wmsTaskCommonApi);
|
apiMap.put(RpcConstants.WMS_NAME, wmsTaskCommonApi);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据 RPC 服务名获取对应的 TaskCommonApi
|
* 根据 RPC 服务名获取对应的 TaskCommonApi
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
cn.code.nl.framework.execute.config.NlExecuteAutoConfiguration
|
||||||
|
cn.code.nl.framework.execute.config.NlExecuteRpcAutoConfiguration
|
||||||
@@ -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<String, Object> payload;
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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<String, Object> payload;
|
|
||||||
}
|
|
||||||
@@ -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<String, Object> payload;
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String, Object> requestParam;
|
|
||||||
}
|
|
||||||
@@ -1,14 +1,11 @@
|
|||||||
package cn.code.nl.module.task.framework.rpc.config;
|
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;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task 服务 RPC 配置
|
* Task 服务 RPC 配置
|
||||||
|
* Feign Client 注册已移至框架层 {@link cn.code.nl.framework.execute.config.NlExecuteRpcAutoConfiguration}
|
||||||
*/
|
*/
|
||||||
@Configuration(value = "taskRpcConfiguration", proxyBeanMethods = false)
|
@Configuration(value = "taskRpcConfiguration", proxyBeanMethods = false)
|
||||||
@EnableFeignClients(clients = {LmsTaskCommonApi.class, WmsTaskCommonApi.class})
|
|
||||||
public class RpcConfiguration {
|
public class RpcConfiguration {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user