feat: 制修订流程自动完成定时任务
This commit is contained in:
+34
-35
@@ -1,16 +1,19 @@
|
|||||||
package com.jero.modules.activiti.process.esRevisionAdvice.job;
|
package com.jero.modules.activiti.process.esRevisionAdvice.job;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
import com.jero.modules.activiti.entity.ProcessAll;
|
||||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||||
|
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||||
|
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||||
import com.jero.modules.activiti.process.esRevisionAdvice.entity.ProcessEsRevision;
|
import com.jero.modules.activiti.process.esRevisionAdvice.entity.ProcessEsRevision;
|
||||||
|
import com.jero.modules.activiti.process.esRevisionAdvice.entity.vo.ProcessRevisionVO;
|
||||||
import com.jero.modules.activiti.process.esRevisionAdvice.service.EsRevisionService;
|
import com.jero.modules.activiti.process.esRevisionAdvice.service.EsRevisionService;
|
||||||
|
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||||
|
import com.jero.modules.activiti.service.ProcessAllService;
|
||||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.engine.RuntimeService;
|
|
||||||
import org.activiti.engine.TaskService;
|
import org.activiti.engine.TaskService;
|
||||||
import org.activiti.engine.runtime.Execution;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.quartz.Job;
|
import org.quartz.Job;
|
||||||
import org.quartz.JobExecutionContext;
|
import org.quartz.JobExecutionContext;
|
||||||
@@ -37,7 +40,7 @@ public class AdviceDeadlineJob implements Job {
|
|||||||
private ProcessApprovalRecordService approvalRecordService;
|
private ProcessApprovalRecordService approvalRecordService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RuntimeService runtimeService;
|
private ProcessAllService processAllService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TaskService taskService;
|
private TaskService taskService;
|
||||||
@@ -45,11 +48,20 @@ public class AdviceDeadlineJob implements Job {
|
|||||||
@Override
|
@Override
|
||||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||||
log.info("开始执行征求意见截止日期每日定时任务");
|
log.info("开始执行征求意见截止日期每日定时任务");
|
||||||
|
// 获取所有正在进行中的企标制修订流程
|
||||||
|
List<ProcessAll> processAlls = processAllService.list(new LambdaQueryWrapper<ProcessAll>()
|
||||||
|
.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_REVISION_ADVICE.getValue())
|
||||||
|
.eq(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue()));
|
||||||
|
if (processAlls.isEmpty()) {
|
||||||
|
log.info("没有进行中的企标制修订流程");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> processInstanceIds = processAlls.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||||
LambdaQueryWrapper<ProcessEsRevision> revisionLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProcessEsRevision> revisionLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
revisionLambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue());
|
revisionLambdaQueryWrapper.in(ProcessEsRevision::getProcessInstanceId, processInstanceIds);
|
||||||
revisionLambdaQueryWrapper.isNotNull(ProcessEsRevision::getProcessInstanceId);
|
revisionLambdaQueryWrapper.isNotNull(ProcessEsRevision::getAdviceDeadline);
|
||||||
List<ProcessEsRevision> revisionList = revisionService.list(revisionLambdaQueryWrapper);
|
List<ProcessEsRevision> revisionList = revisionService.list(revisionLambdaQueryWrapper);
|
||||||
if (revisionList == null || revisionList.isEmpty()) {
|
if (revisionList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Map<String, ProcessEsRevision> revisionMap = revisionList.stream()
|
Map<String, ProcessEsRevision> revisionMap = revisionList.stream()
|
||||||
@@ -61,36 +73,23 @@ public class AdviceDeadlineJob implements Job {
|
|||||||
arWrapper.eq(ProcessApprovalRecord::getTaskName, "征求意见对象填写意见");
|
arWrapper.eq(ProcessApprovalRecord::getTaskName, "征求意见对象填写意见");
|
||||||
arWrapper.isNotNull(ProcessApprovalRecord::getTaskId);
|
arWrapper.isNotNull(ProcessApprovalRecord::getTaskId);
|
||||||
List<ProcessApprovalRecord> arList = approvalRecordService.list(arWrapper);
|
List<ProcessApprovalRecord> arList = approvalRecordService.list(arWrapper);
|
||||||
|
Map<String, List<ProcessApprovalRecord>> arMap = arList.stream()
|
||||||
|
.collect(Collectors.groupingBy(ProcessApprovalRecord::getProcessInstanceId));
|
||||||
Date curDate = new Date();
|
Date curDate = new Date();
|
||||||
for (ProcessApprovalRecord record : arList) {
|
for (Map.Entry<String, List<ProcessApprovalRecord>> map : arMap.entrySet()) {
|
||||||
String taskId = record.getTaskId();
|
String processInstanceId = map.getKey();
|
||||||
// 根据record获取每一个任务的deadline
|
ProcessEsRevision revision = revisionMap.get(processInstanceId);
|
||||||
// 获取Task
|
List<ProcessApprovalRecord> recordList = map.getValue();
|
||||||
taskService.createTaskQuery().taskId(record.getTaskId()).singleResult();
|
// 判断是否到期
|
||||||
// 根据Task获取其父级executionId
|
Date adviceDeadline = getDeadlineDate(revision.getAdviceDeadline());
|
||||||
String executionId = taskService.createTaskQuery()
|
if (curDate.after(adviceDeadline)) {
|
||||||
.taskId(record.getTaskId()).singleResult().getExecutionId();
|
// 如果到期则批量完成
|
||||||
// 获取Execution
|
for (ProcessApprovalRecord record : recordList) {
|
||||||
Execution execution = runtimeService.createExecutionQuery().executionId(executionId).singleResult();
|
ProcessInfoVO<ProcessRevisionVO> handleData = revisionService.getHandleData(record.getTaskId());
|
||||||
String parentExecutionId = execution.getParentId();
|
// 如果当前日期大于该条数据的截止日期 则自动完成任务
|
||||||
// 根据executionId获取流程变量
|
revisionService.submit(handleData);
|
||||||
Date adviceDeadline = (Date) taskService.getVariable(taskId, parentExecutionId + "-adviceDeadline");
|
}
|
||||||
if (adviceDeadline == null) {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
adviceDeadline = getDeadlineDate(adviceDeadline);
|
|
||||||
// 如果当前日期大于该条数据的截止日期 则自动完成任务
|
|
||||||
// if (curDate.after(adviceDeadline)) {
|
|
||||||
// ESRevisionDataVO handleData = revisionService.getHandleData(taskId);
|
|
||||||
// handleData.getCommon().setTaskId(taskId);
|
|
||||||
//// ProcessEsRevision data = handleData.getData();
|
|
||||||
// EsRevisionAdvice esRevisionAdvice = new EsRevisionAdvice();
|
|
||||||
// esRevisionAdvice.setClauseName("无");
|
|
||||||
// esRevisionAdvice.setClauseNum("无");
|
|
||||||
// esRevisionAdvice.setEditAdvice("到期自动提交");
|
|
||||||
//// data.setAdvices(new ArrayList<>(Collections.singletonList(esRevisionAdvice)));
|
|
||||||
// revisionService.approval(handleData, true);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
log.info("征求意见截止日期每日定时任务执行结束");
|
log.info("征求意见截止日期每日定时任务执行结束");
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -253,9 +253,11 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
|
|||||||
break;
|
break;
|
||||||
case ADVICE:
|
case ADVICE:
|
||||||
// 保存意见数据
|
// 保存意见数据
|
||||||
adviceList.forEach(advice -> advice.setProcessInstanceId(processInstanceId));
|
if (!adviceList.isEmpty()) {
|
||||||
adviceList.forEach(advice -> advice.setBatchNum(maxBatchNum));
|
adviceList.forEach(advice -> advice.setProcessInstanceId(processInstanceId));
|
||||||
adviceService.saveBatch(adviceList);
|
adviceList.forEach(advice -> advice.setBatchNum(maxBatchNum));
|
||||||
|
adviceService.saveBatch(adviceList);
|
||||||
|
}
|
||||||
case ADVICE_COLLECT:
|
case ADVICE_COLLECT:
|
||||||
// 保存数据
|
// 保存数据
|
||||||
adviceService.updateBatchById(adviceList);
|
adviceService.updateBatchById(adviceList);
|
||||||
|
|||||||
Reference in New Issue
Block a user