diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/job/AdviceDeadlineJob.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/job/AdviceDeadlineJob.java index 73a3fb94..62e967a8 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/job/AdviceDeadlineJob.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/job/AdviceDeadlineJob.java @@ -1,16 +1,19 @@ package com.jero.modules.activiti.process.esRevisionAdvice.job; 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.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.vo.ProcessRevisionVO; 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 lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.Execution; import org.jetbrains.annotations.NotNull; import org.quartz.Job; import org.quartz.JobExecutionContext; @@ -37,7 +40,7 @@ public class AdviceDeadlineJob implements Job { private ProcessApprovalRecordService approvalRecordService; @Resource - private RuntimeService runtimeService; + private ProcessAllService processAllService; @Resource private TaskService taskService; @@ -45,11 +48,20 @@ public class AdviceDeadlineJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { log.info("开始执行征求意见截止日期每日定时任务"); + // 获取所有正在进行中的企标制修订流程 + List processAlls = processAllService.list(new LambdaQueryWrapper() + .eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_REVISION_ADVICE.getValue()) + .eq(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue())); + if (processAlls.isEmpty()) { + log.info("没有进行中的企标制修订流程"); + return; + } + List processInstanceIds = processAlls.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList()); LambdaQueryWrapper revisionLambdaQueryWrapper = new LambdaQueryWrapper<>(); - revisionLambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); - revisionLambdaQueryWrapper.isNotNull(ProcessEsRevision::getProcessInstanceId); + revisionLambdaQueryWrapper.in(ProcessEsRevision::getProcessInstanceId, processInstanceIds); + revisionLambdaQueryWrapper.isNotNull(ProcessEsRevision::getAdviceDeadline); List revisionList = revisionService.list(revisionLambdaQueryWrapper); - if (revisionList == null || revisionList.isEmpty()) { + if (revisionList.isEmpty()) { return; } Map revisionMap = revisionList.stream() @@ -61,36 +73,23 @@ public class AdviceDeadlineJob implements Job { arWrapper.eq(ProcessApprovalRecord::getTaskName, "征求意见对象填写意见"); arWrapper.isNotNull(ProcessApprovalRecord::getTaskId); List arList = approvalRecordService.list(arWrapper); + Map> arMap = arList.stream() + .collect(Collectors.groupingBy(ProcessApprovalRecord::getProcessInstanceId)); Date curDate = new Date(); - for (ProcessApprovalRecord record : arList) { - String taskId = record.getTaskId(); - // 根据record获取每一个任务的deadline - // 获取Task - taskService.createTaskQuery().taskId(record.getTaskId()).singleResult(); - // 根据Task获取其父级executionId - String executionId = taskService.createTaskQuery() - .taskId(record.getTaskId()).singleResult().getExecutionId(); - // 获取Execution - Execution execution = runtimeService.createExecutionQuery().executionId(executionId).singleResult(); - String parentExecutionId = execution.getParentId(); - // 根据executionId获取流程变量 - Date adviceDeadline = (Date) taskService.getVariable(taskId, parentExecutionId + "-adviceDeadline"); - if (adviceDeadline == null) { - continue; + for (Map.Entry> map : arMap.entrySet()) { + String processInstanceId = map.getKey(); + ProcessEsRevision revision = revisionMap.get(processInstanceId); + List recordList = map.getValue(); + // 判断是否到期 + Date adviceDeadline = getDeadlineDate(revision.getAdviceDeadline()); + if (curDate.after(adviceDeadline)) { + // 如果到期则批量完成 + for (ProcessApprovalRecord record : recordList) { + ProcessInfoVO handleData = revisionService.getHandleData(record.getTaskId()); + // 如果当前日期大于该条数据的截止日期 则自动完成任务 + revisionService.submit(handleData); + } } - 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("征求意见截止日期每日定时任务执行结束"); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/service/impl/EsRevisionServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/service/impl/EsRevisionServiceImpl.java index 47ee10db..727d4964 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/service/impl/EsRevisionServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevisionAdvice/service/impl/EsRevisionServiceImpl.java @@ -253,9 +253,11 @@ public class EsRevisionServiceImpl extends ServiceImpl advice.setProcessInstanceId(processInstanceId)); - adviceList.forEach(advice -> advice.setBatchNum(maxBatchNum)); - adviceService.saveBatch(adviceList); + if (!adviceList.isEmpty()) { + adviceList.forEach(advice -> advice.setProcessInstanceId(processInstanceId)); + adviceList.forEach(advice -> advice.setBatchNum(maxBatchNum)); + adviceService.saveBatch(adviceList); + } case ADVICE_COLLECT: // 保存数据 adviceService.updateBatchById(adviceList);