!30 feat(xispeak): 撤回流程时同步删除抄送记录

* feat(xispeak): 撤回流程时同步删除抄送记录
* feat(tasktask): 周期性任务改为按年月日匹配当天需发起的任务
This commit is contained in:
new_new_new
2026-06-02 09:04:38 +00:00
parent 2f804da58d
commit 198a657f17
3 changed files with 15 additions and 3 deletions
@@ -12,7 +12,7 @@ flow-biz:
business-key: "business_id" business-key: "business_id"
dept-worker-key: "subApproveUser" dept-worker-key: "subApproveUser"
xi-speak-fb-flowcode: "process_1778315114392" xi-speak-fb-flowcode: "process_1778315114392"
form-url: "bg/xispeak/components/BgXiSpeakBPMForm" form-url: "bg/xispeak/components/BgXiSpeakBPMForm?showFeedbackInfo=1&showJiJianFields=1"
tem-impl-worker-key: "tem_impl_worker" tem-impl-worker-key: "tem_impl_worker"
tem-impl-leader-key: "tem_impl_leader" tem-impl-leader-key: "tem_impl_leader"
tem-bg-leader-key: "tem_bg_leader" tem-bg-leader-key: "tem_bg_leader"
@@ -3,6 +3,7 @@ package org.jeecg.modules.bg.xispeak.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService; import org.flowable.engine.RuntimeService;
import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.util.oConvertUtils;
@@ -10,6 +11,8 @@ import org.jeecg.common.system.vo.SelectTreeModel;
import org.jeecg.modules.bg.xispeak.entity.BgXiSpeak; import org.jeecg.modules.bg.xispeak.entity.BgXiSpeak;
import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetail; import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetail;
import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetailMap; import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetailMap;
import org.jeecg.modules.extbpm.process.entity.ExtActTaskCc;
import org.jeecg.modules.extbpm.process.service.IExtActTaskCcService;
import org.jeecg.modules.bg.xispeak.mapper.BgXiSpeakMapper; import org.jeecg.modules.bg.xispeak.mapper.BgXiSpeakMapper;
import org.jeecg.modules.bg.xispeak.service.IBgXiSpeakService; import org.jeecg.modules.bg.xispeak.service.IBgXiSpeakService;
import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion; import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion;
@@ -40,7 +43,9 @@ public class BgXiSpeakServiceImpl extends ServiceImpl<BgXiSpeakMapper, BgXiSpeak
private final TaskTaskServiceImpl taskTaskServiceImpl; private final TaskTaskServiceImpl taskTaskServiceImpl;
private final RuntimeService runtimeService; private final RuntimeService runtimeService;
private final HistoryService historyService;
private final ITaskApprovalOpinionService taskApprovalOpinionService; private final ITaskApprovalOpinionService taskApprovalOpinionService;
private final IExtActTaskCcService extActTaskCcService;
@Override @Override
public void addBgXiSpeak(BgXiSpeak bgXiSpeak) { public void addBgXiSpeak(BgXiSpeak bgXiSpeak) {
@@ -273,9 +278,15 @@ public class BgXiSpeakServiceImpl extends ServiceImpl<BgXiSpeakMapper, BgXiSpeak
runtimeService.deleteProcessInstance(procId, delReason); runtimeService.deleteProcessInstance(procId, delReason);
log.info("成功中止运行中的流程实例: {}", procId); log.info("成功中止运行中的流程实例: {}", procId);
} }
taskApprovalOpinionService.remove( taskApprovalOpinionService.remove(
new LambdaQueryWrapper<TaskApprovalOpinion>() new LambdaQueryWrapper<TaskApprovalOpinion>()
.eq(TaskApprovalOpinion::getProcessInstId, procId)); .eq(TaskApprovalOpinion::getProcessInstId, procId));
// 删除抄送记录
extActTaskCcService.remove(
new LambdaQueryWrapper<ExtActTaskCc>()
.eq(ExtActTaskCc::getProcInstId, procId));
} }
// 4. 重新创建一个干净的 Wrapper,绝不能带 for update // 4. 重新创建一个干净的 Wrapper,绝不能带 for update
@@ -45,14 +45,15 @@ public class TaskJob implements Job {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
LocalDateTime startDateTime = LocalDateTime.now(); LocalDateTime startDateTime = LocalDateTime.now();
// 1. 查询建议:只查询必要的字段,避免 select * // 1. 查询建议:只查询必要的字段,避免 select *
List<TaskTask> executeTaskTaskList = taskTaskServiceImpl List<TaskTask> executeTaskTaskList = taskTaskServiceImpl
.lambdaQuery() .lambdaQuery()
.select(TaskTask::getId, TaskTask::getFlowCode, TaskTask::getJsonData, .select(TaskTask::getId, TaskTask::getFlowCode, TaskTask::getJsonData,
TaskTask::getFormUrl, TaskTask::getCreateBy) TaskTask::getFormUrl, TaskTask::getCreateBy)
.eq(TaskTask::getBpmStatus, 1) .eq(TaskTask::getBpmStatus, 1)
.eq(TaskTask::getTriggerType, FlowConstants.Strategy.RECURRING_ONLY) .eq(TaskTask::getTriggerType, FlowConstants.Strategy.RECURRING_ONLY)
.lt(TaskTask::getStartTime, startDateTime) .ge(TaskTask::getStartTime, startDateTime.toLocalDate().atStartOfDay())
.lt(TaskTask::getStartTime, startDateTime.toLocalDate().plusDays(1).atStartOfDay())
.list(); .list();
// 2. 集合判空实践 // 2. 集合判空实践