From 49f8549b844623c3295af35b6a658a6e94d7edd5 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 14 Jul 2026 17:40:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20TransportTaskStatu?= =?UTF-8?q?sClient=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=90=8C=E6=AD=A5=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=20LMS/WMS=20=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/TransportTaskStatusClient.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/client/TransportTaskStatusClient.java diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/client/TransportTaskStatusClient.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/client/TransportTaskStatusClient.java new file mode 100644 index 00000000..3eba30ab --- /dev/null +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/client/TransportTaskStatusClient.java @@ -0,0 +1,54 @@ +package cn.code.nl.module.task.client; + +import cn.code.nl.module.task.dto.TaskStatusCallbackReqDTO; +import cn.code.nl.module.task.dto.TaskStatusCallbackRespDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import jakarta.annotation.Resource; + +/** + * LMS/WMS 同步状态回调 HTTP 客户端 + * 通过 Nacos 服务发现 + RestTemplate 调用目标服务 + */ +@Slf4j +@Component +public class TransportTaskStatusClient { + + @Resource + @Qualifier("loadBalancedRestTemplate") + private RestTemplate restTemplate; + + /** + * 同步回调 LMS/WMS,通知任务状态变更(取货完成) + */ + public TaskStatusCallbackRespDTO notifyStatus(TaskStatusCallbackReqDTO reqDTO) { + String serviceName = resolveServiceName(reqDTO.getOwnerService()); + String url = "http://" + serviceName + "/rpc-api/transport-task/status-callback"; + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity request = new HttpEntity<>(reqDTO, headers); + + TaskStatusCallbackRespDTO resp = restTemplate.postForObject(url, request, TaskStatusCallbackRespDTO.class); + log.info("同步回调 {} 成功, taskId={}", serviceName, reqDTO.getTaskId()); + return resp != null ? resp : TaskStatusCallbackRespDTO.success(); + } catch (Exception e) { + log.error("同步回调 {} 失败, taskId={}, error={}", serviceName, reqDTO.getTaskId(), e.getMessage(), e); + return TaskStatusCallbackRespDTO.fail(e.getMessage()); + } + } + + private String resolveServiceName(String ownerService) { + if ("WMS".equalsIgnoreCase(ownerService)) { + return "wms-server"; + } + return "lms-server"; + } +}