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