diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java index ba9a5b18..8fed6c4c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java @@ -2,6 +2,9 @@ package com.jero.modules.activiti.process.esInitChange.listener; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.jero.common.constant.enums.YesOrNoEnum; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.enums.ProcessStatusEnum; import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; @@ -11,17 +14,21 @@ import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChang import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; +import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.util.BeanCopyUtils; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.ActivitiObjectNotFoundException; import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.ExecutionListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author: Mzaxd @@ -43,6 +50,12 @@ public class ProcessESInitChangeEndListener implements ExecutionListener { @Resource private EnterpriseStandardUtil esUtil; + @Resource + private ProcessAllService processAllService; + + @Resource + private EsRevisionService revisionService; + /** * 企标立项变更流程结束之后需要把数据存入企标计划数据库 然后自动发起企标制修订流程 * @param delegateExecution @@ -79,6 +92,45 @@ public class ProcessESInitChangeEndListener implements ExecutionListener { EnterpriseStandardPlan esp = enterpriseStandardPlans.get(0); esRevisionService.autoStartProcess(getRevisionDataVO(esp)); } else { + // 如果是变更流程且不是完成时间变更,则需要撤回制修订流程 + if (!ESPProjectType.COMPLETE_TIME_CHANGE.getValue().equals(projectType)) { + List espIdList = processEsInitChanges.stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toList()); + // 未开始的企标计划不需要强制撤回 + espService.listByIds(espIdList).forEach(esp -> { + if (esp.getProjectStatus().equals(ESPProjectStatus.NOT_STARTED.getValue())) { + espIdList.remove(esp.getId()); + } + }); + if (espIdList.isEmpty()) { + return; + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList); + lambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); + List enactList = revisionService.list(lambdaQueryWrapper); + if (enactList == null || enactList.isEmpty()) { + return; + } + List revisionProcessInstanceIdList = enactList.stream().map(ProcessEsRevision::getProcessInstanceId) + .collect(Collectors.toList()); + // 根据流程主表筛选出未完成的流程 + LambdaQueryWrapper paWrapper = new LambdaQueryWrapper<>(); + paWrapper.in(ProcessAll::getProcessInstanceId, revisionProcessInstanceIdList); + paWrapper.eq(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue()); + List list = processAllService.list(paWrapper); + Map validProcessAllMap = list.stream() + .collect(Collectors.toMap(ProcessAll::getProcessInstanceId, e -> e)); + + // 根据流程表 + for (ProcessEsRevision esRevision : enactList) { + if (!validProcessAllMap.containsKey(esRevision.getProcessInstanceId())) { + continue; + } + processAllService.forcedWithdrawal(esRevision.getProcessInstanceId()); + processAllService.updateDraftStatusByProjectId(esRevision.getId()); + } + } + // 将Id设为企标计划的Id for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { processEsInitChange.setId(processEsInitChange.getEspId()); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java index 28713906..cca73095 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java @@ -392,31 +392,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl espIdList = initChangeData.getDataList().stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toList()); - // 未开始的企标计划不需要强制撤回 - espService.listByIds(espIdList).forEach(esp -> { - if (esp.getProjectStatus().equals(ESPProjectStatus.NOT_STARTED.getValue())) { - espIdList.remove(esp.getId()); - } - }); - if (espIdList.isEmpty()) { - return; - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList); - lambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); - List enactList = revisionService.list(lambdaQueryWrapper); - if (enactList == null || enactList.isEmpty()) { - return; - } - for (ProcessEsRevision esRevision : enactList) { - String processInstanceId = esRevision.getProcessInstanceId(); - processAllService.forcedWithdrawal(processInstanceId); - processAllService.updateDraftStatusByProjectId(esRevision.getId()); - } - } } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java index 7d6c5670..029ee03d 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java @@ -125,6 +125,7 @@ public class EsRevisionServiceImpl extends ServiceImpl actVariables = this.setVariables(revisionData); // 删除草稿