fix(bug): 临时提交

This commit is contained in:
yjz
2024-01-30 11:17:10 +08:00
parent 04b4a68e84
commit 7e6a02bed1
@@ -0,0 +1,117 @@
package com.jero.modules.activiti.process.fb.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey;
import com.jero.modules.activiti.process.fb.entity.ProcessFbConsultationList;
import com.jero.modules.activiti.process.fb.entity.ProcessFbConsultationUserLink;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation;
import com.jero.modules.activiti.process.fb.service.IProcessFbConsultationListService;
import com.jero.modules.activiti.process.fb.service.IProcessFbConsultationUserLinkService;
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName: OverDueJob
* @Description:
* @Author: yjz
* @Date: 2024-01-30 09:22
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
public class OverDueJob implements Job {
@Resource
private IProcessFbStandardConsultationService processFbStandardConsultationService;
@Resource
private IProcessFbConsultationUserLinkService processFbConsultationUserLinkService;
@Resource
private IProcessFbConsultationListService processFbConsultationListService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private TaskService taskService;
/**
* 征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,应该汇总生成一条待办给下一节点
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,应该汇总生成一条待办给下一节点定时任务开始");
// 查询所有未完成的 设计工程师填写征求意见 节点
List<String> designEngineerNodeList = Arrays.asList(ConsultationTaskKey.DESIGN_ENGINEER_1,
ConsultationTaskKey.DESIGN_ENGINEER_2);
List<ProcessApprovalRecord> nodeList = processApprovalRecordService.list(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.in(ProcessApprovalRecord::getNodeId, designEngineerNodeList)
.isNull(ProcessApprovalRecord::getEndTime));
if (!nodeList.isEmpty()){
// 查询节点相关的流程的征求意见结束日期 < 当前日期的
List<String> projectIdList = nodeList.stream()
.map(ProcessApprovalRecord::getProjectId)
.collect(Collectors.toList());
List<ProcessFbStandardConsultation> fbStandardConsultationList = processFbStandardConsultationService.list(
new LambdaQueryWrapper<ProcessFbStandardConsultation>()
.in(ProcessFbStandardConsultation::getId, projectIdList)
.lt(ProcessFbStandardConsultation::getConsultationDueDate, new Date()));
if (!fbStandardConsultationList.isEmpty()){
List<String> idList = fbStandardConsultationList.stream()
.map(ProcessFbStandardConsultation::getId)
.collect(Collectors.toList());
// 过滤符合条件的待办
nodeList = nodeList.stream()
.filter(v -> idList.contains(v.getProjectId()))
.collect(Collectors.toList());
for (ProcessApprovalRecord processApprovalRecord : nodeList) {
// 获取任务信息
Task task = taskService.createTaskQuery().taskId(processApprovalRecord.getTaskId()).singleResult();
String executionId = task.getExecutionId();
// 查询用户关联表
ProcessFbConsultationUserLink userLink = processFbConsultationUserLinkService.getOne(
new LambdaQueryWrapper<ProcessFbConsultationUserLink>()
.eq(ProcessFbConsultationUserLink::getParentExecutionId, executionId)
.eq(ProcessFbConsultationUserLink::getDesignEngineerId,
processApprovalRecord.getUserId())
.eq(ProcessFbConsultationUserLink::getBusinessId,
processApprovalRecord.getProjectId()));
if (!Objects.isNull(userLink)){
// 修改流程相关业务数据
LambdaUpdateWrapper<ProcessFbConsultationList> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ProcessFbConsultationList::getBusinessId, processApprovalRecord.getProjectId());
updateWrapper.eq(ProcessFbConsultationList::getDesignEngineerId, userLink.getDesignEngineerId());
updateWrapper.eq(ProcessFbConsultationList::getUserLinkId, userLink.getId());
updateWrapper.set(ProcessFbConsultationList::getModificationBefore, null);
updateWrapper.set(ProcessFbConsultationList::getModificationAfter, null);
updateWrapper.set(ProcessFbConsultationList::getModificationReason, "无意见");
processFbConsultationListService.update(updateWrapper);
}
// 完成任务
taskService.complete(processApprovalRecord.getTaskId());
}
}
}
log.info("征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,应该汇总生成一条待办给下一节点定时任务结束");
}
}