From 90c4a9e8e9510b86f15c11121884367da3e8fe49 Mon Sep 17 00:00:00 2001
From: liyongde <1419499670@qq.com>
Date: Wed, 15 Jul 2026 14:59:05 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BB=BB=E5=8A=A1=E6=8B=86?=
=?UTF-8?q?=E8=A7=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
nl-dependencies/pom.xml | 6 +++
.../framework/common/enums/RpcConstants.java | 24 +++++++++
.../nl-spring-boot-starter-execute/pom.xml | 51 +++++++++++++++++++
.../framework/execute/biz/TaskCommonApi.java | 10 ++++
.../execute/biz/lms/LmsTaskCommonApi.java | 16 ++++++
.../framework/execute/biz/package-info.java | 6 +++
.../execute/biz/wms/WmsTaskCommonApi.java | 16 ++++++
.../framework/execute/core/AbstractTask.java | 28 ++++++++++
.../nl/framework/execute/package-info.java | 6 +++
nl-framework/pom.xml | 1 +
nl-module-lms/nl-module-lms-server/pom.xml | 4 ++
.../java/cn/code/nl/module/lms/DemoTask.java | 25 +++++++++
nl-module-task/nl-module-task-api/pom.xml | 5 ++
.../task/enums/TransportTaskStatusEnum.java | 14 +++--
.../task/mq/producer/TaskEventProducer.java | 2 +-
.../TransportTaskFeedbackServiceImpl.java | 1 +
16 files changed, 206 insertions(+), 9 deletions(-)
create mode 100644 nl-framework/nl-spring-boot-starter-execute/pom.xml
create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/TaskCommonApi.java
create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/lms/LmsTaskCommonApi.java
create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/package-info.java
create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/wms/WmsTaskCommonApi.java
create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/AbstractTask.java
create mode 100644 nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/package-info.java
create mode 100644 nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/DemoTask.java
diff --git a/nl-dependencies/pom.xml b/nl-dependencies/pom.xml
index 82657709..f58d31e3 100644
--- a/nl-dependencies/pom.xml
+++ b/nl-dependencies/pom.xml
@@ -185,6 +185,12 @@
${revision}
+
+ cn.nl.cloud
+ nl-spring-boot-starter-execute
+ ${revision}
+
+
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
diff --git a/nl-framework/nl-common/src/main/java/cn/code/nl/framework/common/enums/RpcConstants.java b/nl-framework/nl-common/src/main/java/cn/code/nl/framework/common/enums/RpcConstants.java
index aba002d7..25844976 100644
--- a/nl-framework/nl-common/src/main/java/cn/code/nl/framework/common/enums/RpcConstants.java
+++ b/nl-framework/nl-common/src/main/java/cn/code/nl/framework/common/enums/RpcConstants.java
@@ -43,4 +43,28 @@ public interface RpcConstants {
*/
String TASK_PREFIX = RPC_API_PREFIX + "/task";
+
+ /**
+ * lms 服务名
+ *
+ * 注意,需要保证和 spring.application.name 保持一致
+ */
+ String LMS_NAME = "lms-server";
+
+ /**
+ * lms 服务的前缀
+ */
+ String LMS_PREFIX = RPC_API_PREFIX + "/lms";
+
+ /**
+ * wms 服务名
+ *
+ * 注意,需要保证和 spring.application.name 保持一致
+ */
+ String WMS_NAME = "wms-server";
+
+ /**
+ * wms 服务的前缀
+ */
+ String WMS_PREFIX = RPC_API_PREFIX + "/wms";
}
diff --git a/nl-framework/nl-spring-boot-starter-execute/pom.xml b/nl-framework/nl-spring-boot-starter-execute/pom.xml
new file mode 100644
index 00000000..9d57493b
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+ cn.nl.cloud
+ nl-framework
+ ${revision}
+
+
+ nl-spring-boot-starter-execute
+ ${project.artifactId}
+
+
+
+ cn.nl.cloud
+ nl-common
+
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+
+ cn.nl.cloud
+ nl-spring-boot-starter-rpc
+ true
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ provided
+
+
+
+
\ No newline at end of file
diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/TaskCommonApi.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/TaskCommonApi.java
new file mode 100644
index 00000000..31dd840a
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/TaskCommonApi.java
@@ -0,0 +1,10 @@
+package cn.code.nl.framework.execute.biz;
+
+/**
+ *
+ * @Author: liyongde
+ * @Date: 2026/7/15 14:54
+ */
+public interface TaskCommonApi {
+ void doHandlePicked();
+}
diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/lms/LmsTaskCommonApi.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/lms/LmsTaskCommonApi.java
new file mode 100644
index 00000000..04b36e7e
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/lms/LmsTaskCommonApi.java
@@ -0,0 +1,16 @@
+package cn.code.nl.framework.execute.biz.lms;
+
+import cn.code.nl.framework.common.enums.RpcConstants;
+import cn.code.nl.framework.execute.biz.TaskCommonApi;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * lms通用API
+ * @Author: liyongde
+ * @Date: 2026/7/15 14:39
+ */
+@FeignClient(name = RpcConstants.LMS_NAME, primary = false) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - lms任务")
+public interface LmsTaskCommonApi extends TaskCommonApi {
+}
diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/package-info.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/package-info.java
new file mode 100644
index 00000000..277056e1
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 业务实现的API
+ * @Author: liyongde
+ * @Date: 2026/7/15 14:38
+ */
+package cn.code.nl.framework.execute.biz;
\ No newline at end of file
diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/wms/WmsTaskCommonApi.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/wms/WmsTaskCommonApi.java
new file mode 100644
index 00000000..601f4cfd
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/wms/WmsTaskCommonApi.java
@@ -0,0 +1,16 @@
+package cn.code.nl.framework.execute.biz.wms;
+
+import cn.code.nl.framework.common.enums.RpcConstants;
+import cn.code.nl.framework.execute.biz.TaskCommonApi;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ *
+ * @Author: liyongde
+ * @Date: 2026/7/15 14:48
+ */
+@FeignClient(name = RpcConstants.WMS_NAME, primary = false) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - wms任务")
+public interface WmsTaskCommonApi extends TaskCommonApi {
+}
diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/AbstractTask.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/AbstractTask.java
new file mode 100644
index 00000000..06270134
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/core/AbstractTask.java
@@ -0,0 +1,28 @@
+package cn.code.nl.framework.execute.core;
+
+/**
+ * 抽象类任务契约
+ * LMS/WMS子类遵守
+ *
+ * @Author: liyongde
+ * @Date: 2026/7/15 11:21
+ */
+public abstract class AbstractTask {
+
+ // ========== 取货完成、完成、取消的逻辑 ==========
+ public void doHandlePicked(Long taskId) {
+ // 子类实现取货完成业务
+ }
+
+ public abstract void doHandleFinish(Long taskId);
+
+ public abstract void doHandleCancel(Long taskId);
+
+ /**
+ * 二次请求
+ * @param taskId:任务id
+ */
+ public Long againApply(Long taskId) {
+ return null;
+ }
+}
diff --git a/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/package-info.java b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/package-info.java
new file mode 100644
index 00000000..a2e1cfca
--- /dev/null
+++ b/nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 任务模板父类
+ * @Author: liyongde
+ * @Date: 2026/7/15 11:03
+ */
+package cn.code.nl.framework.execute;
\ No newline at end of file
diff --git a/nl-framework/pom.xml b/nl-framework/pom.xml
index 7ae5c781..d03e7122 100644
--- a/nl-framework/pom.xml
+++ b/nl-framework/pom.xml
@@ -30,6 +30,7 @@
nl-spring-boot-starter-biz-tenant
nl-spring-boot-starter-biz-data-permission
nl-spring-boot-starter-biz-ip
+ nl-spring-boot-starter-execute
nl-framework
diff --git a/nl-module-lms/nl-module-lms-server/pom.xml b/nl-module-lms/nl-module-lms-server/pom.xml
index 562d3f5f..8f91845d 100644
--- a/nl-module-lms/nl-module-lms-server/pom.xml
+++ b/nl-module-lms/nl-module-lms-server/pom.xml
@@ -32,6 +32,10 @@
nl-module-lms-api
${revision}
+
+ cn.nl.cloud
+ nl-spring-boot-starter-execute
+
diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/DemoTask.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/DemoTask.java
new file mode 100644
index 00000000..18671e11
--- /dev/null
+++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/DemoTask.java
@@ -0,0 +1,25 @@
+package cn.code.nl.module.lms;
+
+import cn.code.nl.framework.execute.core.AbstractTask;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * 案例代码
+ * @Author: liyongde
+ * @Date: 2026/7/15 14:30
+ */
+@Slf4j
+@Component
+public class DemoTask extends AbstractTask {
+
+ @Override
+ public void doHandleFinish(Long taskId) {
+
+ }
+
+ @Override
+ public void doHandleCancel(Long taskId) {
+
+ }
+}
diff --git a/nl-module-task/nl-module-task-api/pom.xml b/nl-module-task/nl-module-task-api/pom.xml
index 62bda8dd..c6d3884c 100644
--- a/nl-module-task/nl-module-task-api/pom.xml
+++ b/nl-module-task/nl-module-task-api/pom.xml
@@ -44,6 +44,11 @@
true
+
+ cn.nl.cloud
+ nl-spring-boot-starter-execute
+
+
\ No newline at end of file
diff --git a/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TransportTaskStatusEnum.java b/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TransportTaskStatusEnum.java
index 7cb148c6..9ff62481 100644
--- a/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TransportTaskStatusEnum.java
+++ b/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TransportTaskStatusEnum.java
@@ -20,19 +20,17 @@ public enum TransportTaskStatusEnum {
EXECUTING("60", "执行中"),
- PICKED("61", "已取货搬运中"),
+ PICKED("65", "已取货搬运中"),
- FINISHED_CALLBACK_PENDING("67", "外部完成待业务处理"),
+ FINISHED_CALLBACK_PENDING("75", "外部完成待业务处理"),
- CANCEL_EXTERNAL_PENDING("68", "外部取消中"),
+ CANCEL_CALLBACK_PENDING("85", "外部取消待业务处理"),
- CANCEL_CALLBACK_PENDING("69", "外部取消待业务处理"),
+ FINISHED("79", "完成"),
- FINISHED("70", "完成"),
+ CANCELLED("89", "取消"),
- CANCELLED("80", "取消"),
-
- FAILED("90", "失败");
+ FAILED("99", "失败");
private final String code;
private final String name;
diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/mq/producer/TaskEventProducer.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/mq/producer/TaskEventProducer.java
index 6de3f0d1..4168d271 100644
--- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/mq/producer/TaskEventProducer.java
+++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/mq/producer/TaskEventProducer.java
@@ -34,7 +34,7 @@ public class TaskEventProducer {
message.setEventId(UUID.randomUUID().toString());
}
- String destination = TOPIC + ":" + message.getOwnerService();
+ String destination = TOPIC + "_" + message.getOwnerService();
try {
rocketMQTemplate.syncSend(destination, message);
log.info("MQ 发送成功, destination={}, taskId={}, eventType={}",
diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskFeedbackServiceImpl.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskFeedbackServiceImpl.java
index 531871b3..f68c26ce 100644
--- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskFeedbackServiceImpl.java
+++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskFeedbackServiceImpl.java
@@ -105,6 +105,7 @@ public class TransportTaskFeedbackServiceImpl implements TransportTaskFeedbackSe
/**
* 处理取货完成(61):更新状态 + 同步 HTTP 回调 LMS/WMS
+ * ownerService: 服务提供商
*/
private void handlePicked(TransportTaskDO task, AcsFeedbackReqDTO reqDTO) {
if (!isAllowedFrom(task.getTaskStatus(), "60", "61")) {