From 4c7575322ba52bbaf5c17f2f7e89c46fea7e6b4e Mon Sep 17 00:00:00 2001 From: wsm <2746563060@侵权。> Date: Tue, 26 May 2026 10:21:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(xispeak):=20=E5=88=A0=E9=99=A4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=97=B6=E5=90=8C=E6=AD=A5=E9=80=BB=E8=BE=91=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=85=B3=E8=81=94=E7=9A=84=E5=AE=A1=E6=89=B9=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E8=A1=A8=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 withDrawXiSpeak 批量删除和 deleteSingleProcess 单个删除中, 按 processInstId 调用 ITaskApprovalOpinionService.remove 逻辑删除 task_approval_opinion 表中的关联记录。 Co-Authored-By: Claude Opus 4.7 --- .../xispeak/service/impl/BgXiSpeakServiceImpl.java | 12 +++++++++--- .../tasktask/service/impl/TaskTaskServiceImpl.java | 7 +++++++ 2 files changed, 16 insertions(+), 3 deletions(-) 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..482686a 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 @@ -10,6 +10,8 @@ import org.jeecg.common.system.vo.SelectTreeModel; import org.jeecg.modules.bg.xispeak.entity.BgXiSpeak; import org.jeecg.modules.bg.xispeak.mapper.BgXiSpeakMapper; import org.jeecg.modules.bg.xispeak.service.IBgXiSpeakService; +import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion; +import org.jeecg.modules.taskapprovalopinion.service.ITaskApprovalOpinionService; import org.jeecg.modules.tasktask.entity.TaskTask; import org.jeecg.modules.tasktask.service.impl.TaskTaskServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +38,7 @@ public class BgXiSpeakServiceImpl extends ServiceImpl() + .eq(TaskApprovalOpinion::getProcessInstId, procId)); } - // 4. 【核心修改:删除用】重新创建一个干净的 Wrapper,绝不能带 for update! + // 4. 重新创建一个干净的 Wrapper,绝不能带 for update! LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() - .eq(TaskTask::getBusinessId, id); // 不要加 .last("for update") + .eq(TaskTask::getBusinessId, id); - taskTaskServiceImpl.remove(deleteWrapper); // 使用干净的 Wrapper 执行删除 + taskTaskServiceImpl.remove(deleteWrapper); return true; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java index 9fc8278..1178c96 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java @@ -9,6 +9,8 @@ import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.extbpm.process.exception.BpmException; +import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion; +import org.jeecg.modules.taskapprovalopinion.service.ITaskApprovalOpinionService; import org.jeecg.modules.extbpm.process.service.impl.BpmBaseExtApiImpl; import org.jeecg.modules.tasktask.constant.FlowConstants; import org.jeecg.modules.tasktask.entity.TaskTask; @@ -38,6 +40,8 @@ public class TaskTaskServiceImpl extends ServiceImpl i private BpmBaseExtApiImpl bpmBaseExtApiImpl; @Autowired private RuntimeService runtimeService; + @Autowired + private ITaskApprovalOpinionService taskApprovalOpinionService; @Transactional(rollbackFor = Exception.class) public boolean singleFlowStart(TaskTask taskTask, String userName) throws Exception { String jsonString = Optional.ofNullable(taskTask.getJsonData()) @@ -193,6 +197,9 @@ public class TaskTaskServiceImpl extends ServiceImpl i runtimeService.deleteProcessInstance(processInstId, "删除单个流程"); log.info("成功中止运行中的流程实例: {}", processInstId); } + taskApprovalOpinionService.remove( + new LambdaQueryWrapper() + .eq(TaskApprovalOpinion::getProcessInstId, processInstId)); LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() .eq(TaskTask::getProcessInstId, processInstId); return this.remove(deleteWrapper);