From a9f99b7fd2745ec42f5b13ed118410b51b2c50ef Mon Sep 17 00:00:00 2001 From: wsm <2746563060@侵权。> Date: Tue, 26 May 2026 09:47:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(xispeak):=20=E6=96=B0=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8D=95=E4=B8=AA=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提供按 processInstId 删除单个流程的能力,区别于 withDrawXiSpeak 的批量删除整个业务表单下的所有流程。 Co-Authored-By: Claude Opus 4.7 --- .../controller/BgXiSpeakController.java | 18 ++++++++++++++ .../bg/xispeak/service/IBgXiSpeakService.java | 2 ++ .../service/impl/BgXiSpeakServiceImpl.java | 24 +++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/controller/BgXiSpeakController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/controller/BgXiSpeakController.java index bd686b4..4ee02cd 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/controller/BgXiSpeakController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/controller/BgXiSpeakController.java @@ -281,6 +281,24 @@ public class BgXiSpeakController extends JeecgController deleteSingleProcess(@RequestParam("processInstId") String processInstId) { + if (oConvertUtils.isEmpty(processInstId)) { + return Result.error("流程实例ID不能为空"); + } + if (bgXiSpeakService.deleteSingleProcess(processInstId)) { + return Result.OK("删除流程成功"); + } + return Result.error("删除流程失败"); + } + /** * 通过id删除 * diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/IBgXiSpeakService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/IBgXiSpeakService.java index 0ff70f6..390edfa 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/IBgXiSpeakService.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/IBgXiSpeakService.java @@ -82,6 +82,8 @@ public interface IBgXiSpeakService extends IService { boolean withDrawXiSpeak(String id); + boolean deleteSingleProcess(String processInstId); + List getRootListWithDept(String pid); void checkAndMarkCompletedByProcessInstId(String processInstanceId); diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/impl/BgXiSpeakServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/impl/BgXiSpeakServiceImpl.java index 6c87ef0..e7ad321 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/impl/BgXiSpeakServiceImpl.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/bg/xispeak/service/impl/BgXiSpeakServiceImpl.java @@ -280,6 +280,30 @@ public class BgXiSpeakServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() + .eq(TaskTask::getProcessInstId, processInstId) + .last("for update"); + TaskTask taskTask = taskTaskServiceImpl.getOne(queryWrapper, false); + if (taskTask == null) { + log.warn("删除单个流程时未找到关联的tasktask记录, processInstId: {}", processInstId); + return false; + } + long count = runtimeService.createProcessInstanceQuery() + .processInstanceId(processInstId) + .count(); + if (count > 0) { + runtimeService.deleteProcessInstance(processInstId, "删除单个流程"); + log.info("成功中止运行中的流程实例: {}", processInstId); + } + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() + .eq(TaskTask::getProcessInstId, processInstId); + taskTaskServiceImpl.remove(deleteWrapper); + return true; + } + public List getRootListWithDept(String pid) { // 1. 这里的参数 pid 实际是前端传过来的部门逗号拼接字符串,将其清洗并转换为 Set