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