refactor:PC 下发任务
This commit is contained in:
@@ -15,6 +15,8 @@ public enum TaskOperationTypeEnum {
|
|||||||
|
|
||||||
EXECUTING("EXECUTING", "执行中", true, false),
|
EXECUTING("EXECUTING", "执行中", true, false),
|
||||||
|
|
||||||
|
ISSUE("ISSUE", "下发任务", false, true),
|
||||||
|
|
||||||
FINISHED("FINISHED", "完成任务", true, true),
|
FINISHED("FINISHED", "完成任务", true, true),
|
||||||
|
|
||||||
CANCELLED("CANCELLED", "取消任务", true, true),
|
CANCELLED("CANCELLED", "取消任务", true, true),
|
||||||
|
|||||||
@@ -54,22 +54,13 @@ public class TransportTaskController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/operate")
|
@PostMapping("/operate")
|
||||||
@Operation(summary = "PC 端操作搬运任务(完成/取消/强制完成)")
|
@Operation(summary = "PC 端操作搬运任务(下发/完成/取消/强制完成)")
|
||||||
@PreAuthorize("@ss.hasPermission('task:transport-task:operate')")
|
@PreAuthorize("@ss.hasPermission('task:transport-task:operate')")
|
||||||
public CommonResult<Boolean> operateTransportTask(@Valid @RequestBody TransportTaskOperateReqVO reqVO) {
|
public CommonResult<Boolean> operateTransportTask(@Valid @RequestBody TransportTaskOperateReqVO reqVO) {
|
||||||
transportTaskService.operateTransportTask(reqVO);
|
transportTaskService.operateTransportTask(reqVO);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/issue")
|
|
||||||
@Operation(summary = "PC 端下发搬运任务到 ACS")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermission('task:transport-task:issue')")
|
|
||||||
public CommonResult<Boolean> issueTransportTask(@RequestParam("taskId") Long taskId) {
|
|
||||||
transportTaskService.issueTransportTask(taskId);
|
|
||||||
return success(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/delete")
|
@DeleteMapping("/delete")
|
||||||
@Operation(summary = "删除搬运任务")
|
@Operation(summary = "删除搬运任务")
|
||||||
@Parameter(name = "id", description = "编号", required = true)
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class TransportTaskOperateReqVO {
|
|||||||
@NotNull(message = "任务ID不能为空")
|
@NotNull(message = "任务ID不能为空")
|
||||||
private Long taskId;
|
private Long taskId;
|
||||||
|
|
||||||
@Schema(description = "操作类型:FINISHED/CANCELLED/FORCE-FINISH", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "操作类型:ISSUE/FINISHED/CANCELLED/FORCE-FINISH", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotEmpty(message = "操作类型不能为空")
|
@NotEmpty(message = "操作类型不能为空")
|
||||||
private String operationType;
|
private String operationType;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,13 @@ import org.springframework.transaction.support.TransactionSynchronization;
|
|||||||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
|
import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_AUTO_ISSUE_NOT_ALLOW_MANUAL;
|
||||||
|
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_STATUS_NOT_ALLOW;
|
||||||
import static cn.code.nl.module.task.framework.common.util.TaskUtil.isAllowedFrom;
|
import static cn.code.nl.module.task.framework.common.util.TaskUtil.isAllowedFrom;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,6 +44,9 @@ public class TransportTaskOperationManager {
|
|||||||
@Resource
|
@Resource
|
||||||
private TaskEventProducer taskEventProducer;
|
private TaskEventProducer taskEventProducer;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TransportTaskIssueManager transportTaskIssueManager;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RedissonClient redissonClient;
|
private RedissonClient redissonClient;
|
||||||
|
|
||||||
@@ -53,6 +60,7 @@ public class TransportTaskOperationManager {
|
|||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void initOperationHandlers() {
|
public void initOperationHandlers() {
|
||||||
operationHandlers.put(TaskOperationTypeEnum.EXECUTING, this::handleExecuting);
|
operationHandlers.put(TaskOperationTypeEnum.EXECUTING, this::handleExecuting);
|
||||||
|
operationHandlers.put(TaskOperationTypeEnum.ISSUE, (task, reqDTO) -> handleIssue(task));
|
||||||
operationHandlers.put(TaskOperationTypeEnum.FINISHED, this::handleFinished);
|
operationHandlers.put(TaskOperationTypeEnum.FINISHED, this::handleFinished);
|
||||||
operationHandlers.put(TaskOperationTypeEnum.CANCELLED, this::handleCancelled);
|
operationHandlers.put(TaskOperationTypeEnum.CANCELLED, this::handleCancelled);
|
||||||
operationHandlers.put(TaskOperationTypeEnum.FORCE_FINISH, (task, reqDTO) -> handleForceFinish(task));
|
operationHandlers.put(TaskOperationTypeEnum.FORCE_FINISH, (task, reqDTO) -> handleForceFinish(task));
|
||||||
@@ -72,6 +80,9 @@ public class TransportTaskOperationManager {
|
|||||||
}
|
}
|
||||||
handler.accept(task, reqDTO);
|
handler.accept(task, reqDTO);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
if (ex instanceof ServiceException serviceException) {
|
||||||
|
throw serviceException;
|
||||||
|
}
|
||||||
log.error("[messageResend][执行异常][lockKey={}]", task.getTaskId(), ex);
|
log.error("[messageResend][执行异常][lockKey={}]", task.getTaskId(), ex);
|
||||||
throw new ServiceException(500, ex.getMessage());
|
throw new ServiceException(500, ex.getMessage());
|
||||||
} finally {
|
} finally {
|
||||||
@@ -84,6 +95,19 @@ public class TransportTaskOperationManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理下发任务
|
||||||
|
*/
|
||||||
|
private void handleIssue(TransportTaskDO task) {
|
||||||
|
if ("1".equals(task.getIsAutoIssue())) {
|
||||||
|
throw exception(TRANSPORT_TASK_AUTO_ISSUE_NOT_ALLOW_MANUAL);
|
||||||
|
}
|
||||||
|
if (!TransportTaskStatusEnum.READY.getCode().equals(task.getTaskStatus())) {
|
||||||
|
throw exception(TRANSPORT_TASK_STATUS_NOT_ALLOW);
|
||||||
|
}
|
||||||
|
transportTaskIssueManager.issueTasks(List.of(task));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理执行中
|
* 处理执行中
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -31,10 +31,8 @@ import java.util.List;
|
|||||||
|
|
||||||
import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_ALREADY_FINAL;
|
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_ALREADY_FINAL;
|
||||||
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_AUTO_ISSUE_NOT_ALLOW_MANUAL;
|
|
||||||
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_NOT_EXISTS;
|
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_NOT_EXISTS;
|
||||||
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_OPERATION_NOT_SUPPORTED;
|
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_OPERATION_NOT_SUPPORTED;
|
||||||
import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_STATUS_NOT_ALLOW;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 搬运任务 Service 实现类
|
* 搬运任务 Service 实现类
|
||||||
@@ -170,10 +168,10 @@ public class TransportTaskServiceImpl implements TransportTaskService {
|
|||||||
if (task == null) {
|
if (task == null) {
|
||||||
throw exception(TRANSPORT_TASK_NOT_EXISTS);
|
throw exception(TRANSPORT_TASK_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
if ("1".equals(task.getIsAutoIssue())) {
|
AcsFeedbackReqDTO reqDTO = new AcsFeedbackReqDTO();
|
||||||
throw exception(TRANSPORT_TASK_AUTO_ISSUE_NOT_ALLOW_MANUAL);
|
reqDTO.setTaskId(task.getTaskId());
|
||||||
}
|
reqDTO.setStatus(TaskOperationTypeEnum.ISSUE.getCode());
|
||||||
transportTaskIssueManager.issueTasks(List.of(task));
|
transportTaskOperationManager.dispatchOperation(task, TaskOperationTypeEnum.ISSUE, reqDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -92,9 +92,3 @@ export function operateTransportTask(data: {
|
|||||||
}) {
|
}) {
|
||||||
return requestClient.post('/task/transport-task/operate', data);
|
return requestClient.post('/task/transport-task/operate', data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** PC 端下发搬运任务到 ACS */
|
|
||||||
export function issueTransportTask(taskId: number | string) {
|
|
||||||
return requestClient.post(`/task/transport-task/issue?taskId=${taskId}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import {
|
|||||||
deleteTransportTaskList,
|
deleteTransportTaskList,
|
||||||
exportTransportTask,
|
exportTransportTask,
|
||||||
getTransportTaskPage,
|
getTransportTaskPage,
|
||||||
issueTransportTask,
|
|
||||||
operateTransportTask,
|
operateTransportTask,
|
||||||
} from '#/api/task/transporttask';
|
} from '#/api/task/transporttask';
|
||||||
import { $t } from '#/locales';
|
import { $t } from '#/locales';
|
||||||
@@ -64,22 +63,6 @@ async function handleOperate(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** PC 端下发搬运任务到 ACS */
|
|
||||||
async function handleIssue(row: TaskTransportTaskApi.TransportTask) {
|
|
||||||
await confirm(`确认要下发【${row.taskCode}】到 ACS 吗?`);
|
|
||||||
const hideLoading = message.loading({
|
|
||||||
content: '正在下发...',
|
|
||||||
duration: 0,
|
|
||||||
});
|
|
||||||
try {
|
|
||||||
await issueTransportTask(row.taskId!);
|
|
||||||
message.success('下发成功');
|
|
||||||
handleRefresh();
|
|
||||||
} finally {
|
|
||||||
hideLoading();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 删除搬运任务 */
|
/** 删除搬运任务 */
|
||||||
async function handleDelete(row: TaskTransportTaskApi.TransportTask) {
|
async function handleDelete(row: TaskTransportTaskApi.TransportTask) {
|
||||||
const hideLoading = message.loading({
|
const hideLoading = message.loading({
|
||||||
@@ -196,9 +179,9 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||||||
label: '下发',
|
label: '下发',
|
||||||
type: 'link',
|
type: 'link',
|
||||||
icon: ACTION_ICON.SEND,
|
icon: ACTION_ICON.SEND,
|
||||||
auth: ['task:transport-task:issue'],
|
auth: ['task:transport-task:operate'],
|
||||||
disabled: row.taskStatus !== '40',
|
disabled: row.taskStatus !== '40',
|
||||||
onClick: handleIssue.bind(null, row),
|
onClick: handleOperate.bind(null, row, 'ISSUE', '下发任务'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '完成',
|
label: '完成',
|
||||||
|
|||||||
Reference in New Issue
Block a user