feat: 新增 TransportTaskStatusClient,用于同步回调 LMS/WMS 任务状态

This commit is contained in:
2026-07-14 17:40:29 +08:00
parent c82f309548
commit 49f8549b84

View File

@@ -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<TaskStatusCallbackReqDTO> 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";
}
}