From ed0b18a4af4a933fa574bcc4f594ca0b6f59d91b Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Fri, 24 Jul 2026 16:36:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor=EF=BC=9APC=20=E4=B8=8B=E5=8F=91?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/enums/TaskOperationTypeEnum.java | 2 ++ .../TransportTaskController.java | 11 +-------- .../vo/TransportTaskOperateReqVO.java | 2 +- .../manage/TransportTaskOperationManager.java | 24 +++++++++++++++++++ .../TransportTaskServiceImpl.java | 10 ++++---- .../src/api/task/transporttask/index.ts | 6 ----- .../src/views/task/transporttask/index.vue | 21 ++-------------- 7 files changed, 34 insertions(+), 42 deletions(-) diff --git a/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskOperationTypeEnum.java b/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskOperationTypeEnum.java index 508e2e22..d89540d6 100644 --- a/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskOperationTypeEnum.java +++ b/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskOperationTypeEnum.java @@ -15,6 +15,8 @@ public enum TaskOperationTypeEnum { EXECUTING("EXECUTING", "执行中", true, false), + ISSUE("ISSUE", "下发任务", false, true), + FINISHED("FINISHED", "完成任务", true, true), CANCELLED("CANCELLED", "取消任务", true, true), diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/TransportTaskController.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/TransportTaskController.java index 3bc88d3a..5f452518 100644 --- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/TransportTaskController.java +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/TransportTaskController.java @@ -54,22 +54,13 @@ public class TransportTaskController { } @PostMapping("/operate") - @Operation(summary = "PC 端操作搬运任务(完成/取消/强制完成)") + @Operation(summary = "PC 端操作搬运任务(下发/完成/取消/强制完成)") @PreAuthorize("@ss.hasPermission('task:transport-task:operate')") public CommonResult operateTransportTask(@Valid @RequestBody TransportTaskOperateReqVO reqVO) { transportTaskService.operateTransportTask(reqVO); 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 issueTransportTask(@RequestParam("taskId") Long taskId) { - transportTaskService.issueTransportTask(taskId); - return success(true); - } - @DeleteMapping("/delete") @Operation(summary = "删除搬运任务") @Parameter(name = "id", description = "编号", required = true) diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/vo/TransportTaskOperateReqVO.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/vo/TransportTaskOperateReqVO.java index 1d56ada9..4fa3f70e 100644 --- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/vo/TransportTaskOperateReqVO.java +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/controller/admin/transporttask/vo/TransportTaskOperateReqVO.java @@ -19,7 +19,7 @@ public class TransportTaskOperateReqVO { @NotNull(message = "任务ID不能为空") 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 = "操作类型不能为空") private String operationType; } diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/manage/TransportTaskOperationManager.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/manage/TransportTaskOperationManager.java index 0a09e89b..6718ce1e 100644 --- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/manage/TransportTaskOperationManager.java +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/manage/TransportTaskOperationManager.java @@ -22,9 +22,13 @@ import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationManager; import java.util.EnumMap; +import java.util.List; import java.util.Map; 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; /** @@ -40,6 +44,9 @@ public class TransportTaskOperationManager { @Resource private TaskEventProducer taskEventProducer; + @Resource + private TransportTaskIssueManager transportTaskIssueManager; + @Resource private RedissonClient redissonClient; @@ -53,6 +60,7 @@ public class TransportTaskOperationManager { @PostConstruct public void initOperationHandlers() { operationHandlers.put(TaskOperationTypeEnum.EXECUTING, this::handleExecuting); + operationHandlers.put(TaskOperationTypeEnum.ISSUE, (task, reqDTO) -> handleIssue(task)); operationHandlers.put(TaskOperationTypeEnum.FINISHED, this::handleFinished); operationHandlers.put(TaskOperationTypeEnum.CANCELLED, this::handleCancelled); operationHandlers.put(TaskOperationTypeEnum.FORCE_FINISH, (task, reqDTO) -> handleForceFinish(task)); @@ -72,6 +80,9 @@ public class TransportTaskOperationManager { } handler.accept(task, reqDTO); } catch (Exception ex) { + if (ex instanceof ServiceException serviceException) { + throw serviceException; + } log.error("[messageResend][执行异常][lockKey={}]", task.getTaskId(), ex); throw new ServiceException(500, ex.getMessage()); } 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)); + } + /** * 处理执行中 */ diff --git a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskServiceImpl.java b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskServiceImpl.java index 678f4710..660fb53e 100644 --- a/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskServiceImpl.java +++ b/nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskServiceImpl.java @@ -31,10 +31,8 @@ import java.util.List; 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_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_OPERATION_NOT_SUPPORTED; -import static cn.code.nl.module.task.enums.ErrorCodeConstants.TRANSPORT_TASK_STATUS_NOT_ALLOW; /** * 搬运任务 Service 实现类 @@ -170,10 +168,10 @@ public class TransportTaskServiceImpl implements TransportTaskService { if (task == null) { throw exception(TRANSPORT_TASK_NOT_EXISTS); } - if ("1".equals(task.getIsAutoIssue())) { - throw exception(TRANSPORT_TASK_AUTO_ISSUE_NOT_ALLOW_MANUAL); - } - transportTaskIssueManager.issueTasks(List.of(task)); + AcsFeedbackReqDTO reqDTO = new AcsFeedbackReqDTO(); + reqDTO.setTaskId(task.getTaskId()); + reqDTO.setStatus(TaskOperationTypeEnum.ISSUE.getCode()); + transportTaskOperationManager.dispatchOperation(task, TaskOperationTypeEnum.ISSUE, reqDTO); } @Override diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/task/transporttask/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/task/transporttask/index.ts index 3edc4346..93edf5f8 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/task/transporttask/index.ts +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/task/transporttask/index.ts @@ -92,9 +92,3 @@ export function operateTransportTask(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}`); -} - diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/task/transporttask/index.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/task/transporttask/index.vue index 8727716e..84ea4080 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/task/transporttask/index.vue +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/task/transporttask/index.vue @@ -15,7 +15,6 @@ import { deleteTransportTaskList, exportTransportTask, getTransportTaskPage, - issueTransportTask, operateTransportTask, } from '#/api/task/transporttask'; 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) { const hideLoading = message.loading({ @@ -196,9 +179,9 @@ const [Grid, gridApi] = useVbenVxeGrid({ label: '下发', type: 'link', icon: ACTION_ICON.SEND, - auth: ['task:transport-task:issue'], + auth: ['task:transport-task:operate'], disabled: row.taskStatus !== '40', - onClick: handleIssue.bind(null, row), + onClick: handleOperate.bind(null, row, 'ISSUE', '下发任务'), }, { label: '完成',