feat:acs交互接口定义
This commit is contained in:
@@ -8,9 +8,9 @@ package cn.code.nl.module.task.enums;
|
||||
public interface AcsApiConstants {
|
||||
|
||||
/** 下发任务 */
|
||||
String ACS_TASK_API = "/acs-api/wms/issue-task";
|
||||
String ACS_TASK_API = "/acs-api/wms-to-acs/issue-task";
|
||||
|
||||
/** 检测任务 */
|
||||
String ACS_OPERATE_CHECK_API = "/acs-api/wms/check-enable-operate";
|
||||
String ACS_OPERATE_CHECK_API = "/acs-api/wms-to-acs/check-enable-operate";
|
||||
|
||||
}
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
package cn.code.nl.module.task.job.dto;
|
||||
|
||||
import cn.code.nl.framework.common.pojo.AcsBaseRespDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ACS 任务下发响应
|
||||
* ACS 任务下发 data 响应
|
||||
*/
|
||||
@Data
|
||||
public class AcsIssueResultRespDTO extends AcsBaseRespDTO {
|
||||
public class AcsIssueResultRespDTO {
|
||||
|
||||
/**
|
||||
* 下发失败的任务
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package cn.code.nl.module.task.job.dto;
|
||||
|
||||
import cn.code.nl.framework.common.pojo.AcsBaseReqDTO;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ACS 任务操作校验请求
|
||||
*/
|
||||
@Data
|
||||
public class AcsOperateCheckReqDTO {
|
||||
public class AcsOperateCheckReqDTO extends AcsBaseReqDTO {
|
||||
|
||||
/**
|
||||
* 任务标识
|
||||
|
||||
@@ -1,29 +1,18 @@
|
||||
package cn.code.nl.module.task.job.dto;
|
||||
|
||||
import cn.code.nl.framework.common.pojo.AcsBaseRespDTO;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* ACS 任务操作校验响应
|
||||
* ACS 任务操作校验 data 响应
|
||||
*/
|
||||
@Data
|
||||
public class AcsOperateCheckRespDTO extends AcsBaseRespDTO {
|
||||
public class AcsOperateCheckRespDTO {
|
||||
|
||||
/**
|
||||
* 是否允许操作
|
||||
*/
|
||||
private Boolean enableOperate;
|
||||
|
||||
/**
|
||||
* 是否允许操作,兼容 ACS 字段
|
||||
*/
|
||||
private Boolean canOperate;
|
||||
|
||||
/**
|
||||
* 是否允许操作,兼容通用 data 字段
|
||||
*/
|
||||
private Boolean data;
|
||||
|
||||
/**
|
||||
* 不允许操作的原因
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.code.nl.module.task.manage;
|
||||
|
||||
import cn.code.nl.framework.common.exception.ServiceException;
|
||||
import cn.code.nl.framework.common.pojo.AcsCommonResult;
|
||||
import cn.code.nl.framework.common.pojo.CommonResult;
|
||||
import cn.code.nl.framework.common.util.json.JsonUtils;
|
||||
import cn.code.nl.framework.execute.util.http.AcsUtil;
|
||||
@@ -74,7 +75,8 @@ public class TransportTaskIssueManager {
|
||||
String requestJson = JsonUtils.toJsonString(acsTasks);
|
||||
try {
|
||||
String serverAddress = getAcsServerAddress(task.getProductArea());
|
||||
AcsIssueResultRespDTO result = AcsUtil.post(serverAddress, ACS_TASK_API, acsTasks, AcsIssueResultRespDTO.class);
|
||||
AcsCommonResult<AcsIssueResultRespDTO> result = AcsUtil.post(serverAddress, ACS_TASK_API, acsTasks,
|
||||
AcsIssueResultRespDTO.class);
|
||||
handleSingleIssueResult(task, result);
|
||||
} catch (ServiceException ex) {
|
||||
throw ex;
|
||||
@@ -95,7 +97,8 @@ public class TransportTaskIssueManager {
|
||||
String requestJson = JsonUtils.toJsonString(acsTasks);
|
||||
try {
|
||||
String serverAddress = getAcsServerAddress(productArea);
|
||||
AcsIssueResultRespDTO result = AcsUtil.post(serverAddress, ACS_TASK_API, acsTasks, AcsIssueResultRespDTO.class);
|
||||
AcsCommonResult<AcsIssueResultRespDTO> result = AcsUtil.post(serverAddress, ACS_TASK_API, acsTasks,
|
||||
AcsIssueResultRespDTO.class);
|
||||
handleIssueResult(tasks, result);
|
||||
} catch (Exception ex) {
|
||||
log.error("自动下发任务失败,productArea={},tasks={}", productArea, requestJson, ex);
|
||||
@@ -125,20 +128,18 @@ public class TransportTaskIssueManager {
|
||||
* @param tasks 本次下发任务
|
||||
* @param result ACS 响应
|
||||
*/
|
||||
private void handleIssueResult(List<TransportTaskDO> tasks, AcsIssueResultRespDTO result) {
|
||||
private void handleIssueResult(List<TransportTaskDO> tasks, AcsCommonResult<AcsIssueResultRespDTO> result) {
|
||||
if (result == null) {
|
||||
tasks.forEach(task -> updateIssueFailed(task.getTaskId(), "ACS 返回为空", null));
|
||||
return;
|
||||
}
|
||||
String resultJson = JsonUtils.toJsonString(result);
|
||||
List<AcsIssueResultRespDTO.FailedTask> failedTasks = result.getFailedTasks() == null
|
||||
? Collections.emptyList()
|
||||
: result.getFailedTasks();
|
||||
if (Boolean.FALSE.equals(result.getSuccess()) && CollUtil.isEmpty(failedTasks)) {
|
||||
String errorMessage = StrUtil.blankToDefault(result.getMsg(), "ACS 下发失败");
|
||||
if (!AcsCommonResult.isSuccess(result.getCode())) {
|
||||
String errorMessage = StrUtil.blankToDefault(result.getMessage(), "ACS 下发失败");
|
||||
tasks.forEach(task -> updateIssueFailed(task.getTaskId(), errorMessage, resultJson));
|
||||
return;
|
||||
}
|
||||
List<AcsIssueResultRespDTO.FailedTask> failedTasks = getFailedTasks(result);
|
||||
Map<Long, AcsIssueResultRespDTO.FailedTask> failedTaskMap = failedTasks.stream()
|
||||
.filter(failedTask -> failedTask.getTaskId() != null)
|
||||
.collect(Collectors.toMap(AcsIssueResultRespDTO.FailedTask::getTaskId, Function.identity(), (first, second) -> first));
|
||||
@@ -158,21 +159,34 @@ public class TransportTaskIssueManager {
|
||||
* @param task 本次下发任务
|
||||
* @param result ACS 响应
|
||||
*/
|
||||
private void handleSingleIssueResult(TransportTaskDO task, AcsIssueResultRespDTO result) {
|
||||
private void handleSingleIssueResult(TransportTaskDO task, AcsCommonResult<AcsIssueResultRespDTO> result) {
|
||||
if (result == null) {
|
||||
throw exception(TRANSPORT_TASK_ISSUE_FAILED, "ACS 返回为空");
|
||||
}
|
||||
String resultJson = JsonUtils.toJsonString(result);
|
||||
if (Boolean.TRUE.equals(result.getSuccess())) {
|
||||
if (!AcsCommonResult.isSuccess(result.getCode())) {
|
||||
throw exception(TRANSPORT_TASK_ISSUE_FAILED, StrUtil.blankToDefault(result.getMessage(), "ACS 下发失败"));
|
||||
}
|
||||
List<AcsIssueResultRespDTO.FailedTask> failedTasks = getFailedTasks(result);
|
||||
if (CollUtil.isEmpty(failedTasks)) {
|
||||
transportTaskMapper.updateIssueResult(task.getTaskId(), TransportTaskStatusEnum.ISSUED.getCode(), resultJson, null);
|
||||
return;
|
||||
}
|
||||
String errorMessage = CollUtil.isNotEmpty(result.getFailedTasks())
|
||||
? result.getFailedTasks().get(0).getErrorMessage()
|
||||
: result.getMsg();
|
||||
String errorMessage = failedTasks.get(0).getErrorMessage();
|
||||
throw exception(TRANSPORT_TASK_ISSUE_FAILED, StrUtil.blankToDefault(errorMessage, "ACS 下发失败"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下发失败任务
|
||||
*/
|
||||
private List<AcsIssueResultRespDTO.FailedTask> getFailedTasks(AcsCommonResult<AcsIssueResultRespDTO> result) {
|
||||
AcsIssueResultRespDTO data = result.getData();
|
||||
if (data == null || data.getFailedTasks() == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return data.getFailedTasks();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务为下发失败
|
||||
*
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.code.nl.module.task.manage;
|
||||
|
||||
import cn.code.nl.framework.common.exception.ServiceException;
|
||||
import cn.code.nl.framework.common.pojo.AcsCommonResult;
|
||||
import cn.code.nl.framework.common.pojo.CommonResult;
|
||||
import cn.code.nl.framework.common.util.json.JsonUtils;
|
||||
import cn.code.nl.framework.execute.util.http.AcsUtil;
|
||||
@@ -48,7 +49,7 @@ public class TransportTaskOperateCheckManager {
|
||||
}
|
||||
String serverAddress = getAcsServerAddress(task.getProductArea());
|
||||
AcsOperateCheckReqDTO reqDTO = buildReqDTO(task, type);
|
||||
AcsOperateCheckRespDTO result;
|
||||
AcsCommonResult<AcsOperateCheckRespDTO> result;
|
||||
try {
|
||||
result = AcsUtil.post(serverAddress, ACS_OPERATE_CHECK_API, reqDTO, AcsOperateCheckRespDTO.class);
|
||||
} catch (ServiceException ex) {
|
||||
@@ -103,15 +104,23 @@ public class TransportTaskOperateCheckManager {
|
||||
/**
|
||||
* 处理 ACS 操作校验结果
|
||||
*/
|
||||
private void handleCheckResult(AcsOperateCheckReqDTO reqDTO, AcsOperateCheckRespDTO result) {
|
||||
private void handleCheckResult(AcsOperateCheckReqDTO reqDTO, AcsCommonResult<AcsOperateCheckRespDTO> result) {
|
||||
if (result == null) {
|
||||
throw exception(TRANSPORT_TASK_ACS_OPERATE_CHECK_RESULT_EMPTY);
|
||||
}
|
||||
Boolean enableOperate = getEnableOperate(result);
|
||||
if (!AcsCommonResult.isSuccess(result.getCode())) {
|
||||
log.warn("ACS 操作校验失败,reqDTO={},result={}", JsonUtils.toJsonString(reqDTO), JsonUtils.toJsonString(result));
|
||||
throw exception(TRANSPORT_TASK_ACS_OPERATE_CHECK_FAILED);
|
||||
}
|
||||
AcsOperateCheckRespDTO data = result.getData();
|
||||
if (data == null) {
|
||||
throw exception(TRANSPORT_TASK_ACS_OPERATE_CHECK_RESULT_EMPTY);
|
||||
}
|
||||
Boolean enableOperate = data.getEnableOperate();
|
||||
if (Boolean.TRUE.equals(enableOperate)) {
|
||||
return;
|
||||
}
|
||||
String message = getMessage(result);
|
||||
String message = getMessage(result, data);
|
||||
log.warn("ACS 拒绝 PC 端任务操作,reqDTO={},result={}",
|
||||
JsonUtils.toJsonString(reqDTO), JsonUtils.toJsonString(result));
|
||||
throw exception(TRANSPORT_TASK_ACS_OPERATE_NOT_ALLOW, message);
|
||||
@@ -120,27 +129,11 @@ public class TransportTaskOperateCheckManager {
|
||||
/**
|
||||
* 获取 ACS 是否允许操作
|
||||
*/
|
||||
private Boolean getEnableOperate(AcsOperateCheckRespDTO result) {
|
||||
if (result.getEnableOperate() != null) {
|
||||
return result.getEnableOperate();
|
||||
private String getMessage(AcsCommonResult<AcsOperateCheckRespDTO> result, AcsOperateCheckRespDTO data) {
|
||||
if (StrUtil.isNotBlank(data.getMessage())) {
|
||||
return data.getMessage();
|
||||
}
|
||||
if (result.getCanOperate() != null) {
|
||||
return result.getCanOperate();
|
||||
}
|
||||
if (result.getData() != null) {
|
||||
return result.getData();
|
||||
}
|
||||
return result.getSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 ACS 拒绝原因
|
||||
*/
|
||||
private String getMessage(AcsOperateCheckRespDTO result) {
|
||||
if (StrUtil.isNotBlank(result.getMessage())) {
|
||||
return result.getMessage();
|
||||
}
|
||||
return StrUtil.blankToDefault(result.getMsg(), "ACS 不允许执行该操作");
|
||||
return StrUtil.blankToDefault(result.getMessage(), "ACS 不允许执行该操作");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user