From 181e542313427317af1b69118d75aa5f4a628e43 Mon Sep 17 00:00:00 2001 From: hubin Date: Wed, 21 Aug 2024 22:38:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B9=B6=E8=A1=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=8B=BF=E5=9B=9E=E4=BB=BB=E5=8A=A1=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aizuda/bpm/engine/impl/TaskServiceImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/flowlong-core/src/main/java/com/aizuda/bpm/engine/impl/TaskServiceImpl.java b/flowlong-core/src/main/java/com/aizuda/bpm/engine/impl/TaskServiceImpl.java index 9b8159c7..0a730f39 100644 --- a/flowlong-core/src/main/java/com/aizuda/bpm/engine/impl/TaskServiceImpl.java +++ b/flowlong-core/src/main/java/com/aizuda/bpm/engine/impl/TaskServiceImpl.java @@ -540,11 +540,19 @@ public boolean resolveTask(Long taskId, FlowCreator flowCreator) { */ @Override public Optional reclaimTask(Long taskId, FlowCreator flowCreator) { - // 当前任务子任务已经执行完成不允许撤回 - Assert.isTrue(taskDao.selectCountByParentTaskId(taskId) == 0, "Do not allow reclaim task"); // 下面执行撤回逻辑 Optional flwTaskOptional = this.undoHisTask(taskId, flowCreator, hisTask -> { + boolean checkReclaim = true; + // 顺序签或会签情况,判断存在未执行并行任务不检查允许拿回 + if (PerformType.sort.eq(hisTask.getPerformType()) || PerformType.countersign.eq(hisTask.getPerformType())) { + checkReclaim = taskDao.selectCountByParentTaskId(hisTask.getParentTaskId()) < 1; + } + if (checkReclaim) { + // 当前任务子任务已经执行完成不允许撤回 + Assert.isTrue(taskDao.selectCountByParentTaskId(taskId) == 0, "Do not allow reclaim task"); + } + List flwTaskList = taskDao.selectListByInstanceId(hisTask.getInstanceId()); Assert.isEmpty(flwTaskList, "No approval tasks found"); FlwTask existFlwTask = flwTaskList.get(0);