feat:空载具出入库、及各模块任务类补齐
This commit is contained in:
@@ -42,6 +42,9 @@ public class TaskEventMessage {
|
||||
/** 业务回调处理器编码 */
|
||||
private String handleCode;
|
||||
|
||||
/** 触发任务状态完成时的登录用户 */
|
||||
private Long operatorId;
|
||||
|
||||
/** 扩展数据 */
|
||||
private Map<String, Object> payload;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.code.nl.module.task.manage;
|
||||
|
||||
import cn.code.nl.framework.common.exception.ServiceException;
|
||||
import cn.code.nl.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.code.nl.module.task.dal.dataobject.transporttask.TransportTaskDO;
|
||||
import cn.code.nl.module.task.dal.mysql.transporttask.TransportTaskMapper;
|
||||
import cn.code.nl.module.task.dto.AcsFeedbackReqDTO;
|
||||
@@ -166,19 +167,13 @@ public class TransportTaskOperationManager {
|
||||
* 处理取消
|
||||
*/
|
||||
private void handleCancelled(TransportTaskDO task, AcsFeedbackReqDTO reqDTO) {
|
||||
if (!isAllowedFrom(task.getTaskStatus(), TransportTaskStatusEnum.CREATED.getCode(),
|
||||
TransportTaskStatusEnum.READY.getCode(), TransportTaskStatusEnum.ISSUING.getCode(),
|
||||
TransportTaskStatusEnum.ISSUED.getCode(), TransportTaskStatusEnum.EXECUTING.getCode(),
|
||||
TransportTaskStatusEnum.PICKED.getCode(),
|
||||
TransportTaskStatusEnum.FINISHED_CALLBACK_PENDING.getCode(),
|
||||
TransportTaskStatusEnum.CANCEL_CALLBACK_PENDING.getCode())) {
|
||||
log.warn("取消反馈状态校验不通过, taskId={}, currentStatus={}",
|
||||
// 任务一旦进入待下发、已下发或执行中等后续状态,就不能再从 WMS 侧取消。
|
||||
if (!TransportTaskStatusEnum.CREATED.getCode().equals(task.getTaskStatus())) {
|
||||
log.warn("仅生成状态的任务允许取消, taskId={}, currentStatus={}",
|
||||
task.getTaskId(), task.getTaskStatus());
|
||||
return;
|
||||
}
|
||||
if (!TransportTaskStatusEnum.CANCEL_CALLBACK_PENDING.getCode().equals(task.getTaskStatus())) {
|
||||
task.setTaskStatus(TransportTaskStatusEnum.CANCEL_CALLBACK_PENDING.getCode());
|
||||
throw exception(TRANSPORT_TASK_STATUS_NOT_ALLOW);
|
||||
}
|
||||
task.setTaskStatus(TransportTaskStatusEnum.CANCEL_CALLBACK_PENDING.getCode());
|
||||
task.setCallbackStatus(CallbackStatusEnum.PENDING.getCode());
|
||||
transportTaskMapper.updateById(task);
|
||||
|
||||
@@ -221,6 +216,8 @@ public class TransportTaskOperationManager {
|
||||
msg.setBizId(task.getBizId());
|
||||
msg.setTaskType(task.getTaskType());
|
||||
msg.setHandleCode(task.getHandleCode());
|
||||
// MQ 消费线程没有 Web 登录上下文,在生产事件时捕获最后任务完成操作人。
|
||||
msg.setOperatorId(SecurityFrameworkUtils.getLoginUserId());
|
||||
msg.setPayload(payload);
|
||||
|
||||
try {
|
||||
|
||||
@@ -53,12 +53,14 @@ public class TransportTaskCallbackServiceImpl implements TransportTaskCallbackSe
|
||||
|
||||
// 3. 根据结果处理
|
||||
boolean success = "SUCCESS".equalsIgnoreCase(reqDTO.getResult());
|
||||
boolean deleteCancelledTask = false;
|
||||
if (success) {
|
||||
// 根据当前状态决定目标终态
|
||||
if (statusCode(TransportTaskStatusEnum.FINISHED_CALLBACK_PENDING).equals(currentStatus)) {
|
||||
task.setTaskStatus(finalFinished);
|
||||
} else if (statusCode(TransportTaskStatusEnum.CANCEL_CALLBACK_PENDING).equals(currentStatus)) {
|
||||
task.setTaskStatus(finalCancelled);
|
||||
deleteCancelledTask = true;
|
||||
}
|
||||
task.setCallbackStatus(CallbackStatusEnum.SUCCESS.getCode());
|
||||
} else {
|
||||
@@ -69,7 +71,12 @@ public class TransportTaskCallbackServiceImpl implements TransportTaskCallbackSe
|
||||
? task.getCallbackRetryCount() + 1 : 1);
|
||||
}
|
||||
|
||||
transportTaskMapper.updateById(task);
|
||||
if (deleteCancelledTask) {
|
||||
// WMS 已完成分配记录回退后再删除任务,避免提前删除导致取消回调无法消费。
|
||||
transportTaskMapper.deleteById(task.getTaskId());
|
||||
} else {
|
||||
transportTaskMapper.updateById(task);
|
||||
}
|
||||
|
||||
LogRecordContext.putVariable("ownerService", task.getOwnerService());
|
||||
LogRecordContext.putVariable("taskId", task.getTaskId());
|
||||
@@ -79,6 +86,6 @@ public class TransportTaskCallbackServiceImpl implements TransportTaskCallbackSe
|
||||
}
|
||||
|
||||
private String statusCode(TransportTaskStatusEnum statusEnum) {
|
||||
return String.format("%03d", statusEnum.getCode());
|
||||
return statusEnum.getCode();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user