feat: 新增 TransportTaskStatusClient,用于同步回调 LMS/WMS 任务状态
This commit is contained in:
@@ -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";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user