From 97b32c753c48e958db4979a0f021f47c48662dd8 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Sun, 30 Apr 2023 20:53:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=8A=9E=E5=85=AC=E6=A8=A1=E5=9D=97):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=88=91=E7=9A=84=E6=B5=81=E7=A8=8B=E6=98=BE=E7=A4=BAundefined?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E9=99=90=E5=88=B6=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=88=A0=E9=99=A4=E8=BF=9B=E8=A1=8C=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=88=E9=9C=80=E8=A6=81=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=90=8E=E5=88=A0=E9=99=A4=EF=BC=89=E3=80=82?= =?UTF-8?q?[I6PS1N](https://gitee.com/KonBAI-Q/ruoyi-flowable-plus/issues/?= =?UTF-8?q?I6PS1N)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/WfInstanceController.java | 1 + .../controller/workflow/WfProcessController.java | 11 +++++++++++ .../workflow/service/IWfProcessService.java | 5 +++++ .../service/impl/WfProcessServiceImpl.java | 16 +++++++++++++++- ruoyi-ui/src/api/workflow/process.js | 16 ++++++++-------- ruoyi-ui/src/views/workflow/work/own.vue | 9 +++++---- 6 files changed, 45 insertions(+), 13 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfInstanceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfInstanceController.java index 4de0cdc6..5030e9a3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfInstanceController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfInstanceController.java @@ -51,6 +51,7 @@ public class WfInstanceController { * @param instanceId 流程实例ID * @param deleteReason 删除原因 */ + @Deprecated @DeleteMapping(value = "/delete") public R delete(@RequestParam String instanceId, String deleteReason) { instanceService.delete(instanceId, deleteReason); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java index 615fedf4..04f48ada 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfProcessController.java @@ -206,6 +206,17 @@ public class WfProcessController extends BaseController { } + /** + * 删除流程实例 + * + * @param instanceIds 流程实例ID串 + */ + @DeleteMapping("/instance/{instanceIds}") + public R delete(@PathVariable String[] instanceIds) { + processService.deleteProcessByIds(instanceIds); + return R.ok(); + } + /** * 读取xml文件 * @param processDefId 流程定义ID diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java index dfc268e0..1befc0bc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfProcessService.java @@ -94,6 +94,11 @@ public interface IWfProcessService { */ void startProcessByDefKey(String procDefKey, Map variables); + /** + * 删除流程实例 + */ + void deleteProcessByIds(String[] instanceIds); + /** * 读取xml文件 diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java index 56d97e29..be272d30 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfProcessServiceImpl.java @@ -613,6 +613,20 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce } } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteProcessByIds(String[] instanceIds) { + List ids = Arrays.asList(instanceIds); + // 校验流程是否结束 + long activeInsCount = runtimeService.createProcessInstanceQuery() + .processInstanceIds(new HashSet<>(ids)).active().count(); + if (activeInsCount > 0) { + throw new ServiceException("不允许删除进行中的流程实例"); + } + // 删除历史流程实例 + historyService.bulkDeleteHistoricProcessInstances(ids); + } + /** * 读取xml文件 * @param processDefId 流程定义ID @@ -764,7 +778,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce .eq(WfDeployForm::getDeployId, historicProcIns.getDeploymentId()) .eq(WfDeployForm::getFormKey, formKey) .eq(localScope, WfDeployForm::getNodeKey, flowElement.getId())); - + //@update by Brath:避免空集合导致的NULL空指针 WfDeployFormVo formInfo = formInfoList.stream().findFirst().orElse(null); diff --git a/ruoyi-ui/src/api/workflow/process.js b/ruoyi-ui/src/api/workflow/process.js index 66f204ec..a6a8862b 100644 --- a/ruoyi-ui/src/api/workflow/process.js +++ b/ruoyi-ui/src/api/workflow/process.js @@ -27,6 +27,14 @@ export function startProcess(processDefId, data) { }) } +// 删除流程实例 +export function delProcess(ids) { + return request({ + url: '/workflow/process/instance/' + ids, + method: 'delete' + }) +} + // 获取流程图 export function getBpmnXml(processDefId) { return request({ @@ -96,11 +104,3 @@ export function stopProcess(data) { data: data }) } - -// 删除流程实例 -export function delProcess(id) { - return request({ - url: '/workflow/instance/delete/?instanceId=' + id, - method: 'delete' - }) -} diff --git a/ruoyi-ui/src/views/workflow/work/own.vue b/ruoyi-ui/src/views/workflow/work/own.vue index eca2f510..d48e519e 100644 --- a/ruoyi-ui/src/views/workflow/work/own.vue +++ b/ruoyi-ui/src/views/workflow/work/own.vue @@ -103,6 +103,7 @@ size="mini" icon="el-icon-delete" @click="handleDelete(scope.row)" + v-if="scope.row.finishTime" v-hasPermi="['workflow:process:remove']" >删除 item.id) - this.single = selection.length!==1 - this.multiple = !selection.length + this.ids = selection.map(item => item.procInsId); + this.single = selection.length !== 1; + this.multiple = !selection.length; }, handleAgain(row) { this.$router.push({ @@ -275,7 +276,7 @@ export default { }, /** 删除按钮操作 */ handleDelete(row) { - const ids = row.procInsId; + const ids = row.procInsId || this.ids; this.$confirm('是否确认删除流程定义编号为"' + ids + '"的数据项?', "警告", { confirmButtonText: "确定", cancelButtonText: "取消",