feat: 变更流程撤回制修订改为流程结束时撤回

This commit is contained in:
2024-02-19 17:44:50 +08:00
parent eb42165976
commit ba4066c256
3 changed files with 53 additions and 25 deletions
@@ -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<String> 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<ProcessEsRevision> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList);
lambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue());
List<ProcessEsRevision> enactList = revisionService.list(lambdaQueryWrapper);
if (enactList == null || enactList.isEmpty()) {
return;
}
List<String> revisionProcessInstanceIdList = enactList.stream().map(ProcessEsRevision::getProcessInstanceId)
.collect(Collectors.toList());
// 根据流程主表筛选出未完成的流程
LambdaQueryWrapper<ProcessAll> paWrapper = new LambdaQueryWrapper<>();
paWrapper.in(ProcessAll::getProcessInstanceId, revisionProcessInstanceIdList);
paWrapper.eq(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue());
List<ProcessAll> list = processAllService.list(paWrapper);
Map<String, ProcessAll> 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());
@@ -392,31 +392,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
}
}
}
// 如果是变更流程且不是完成时间变更,则需要撤回制修订流程
if (!ESPProjectType.COMPLETE_TIME_CHANGE.getValue().equals(initChange.getProjectType())) {
List<String> 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<ProcessEsRevision> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList);
lambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue());
List<ProcessEsRevision> 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());
}
}
}
}
@@ -125,6 +125,7 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
String userId = UserUtils.getUserId();
// 业务数据
ProcessEsRevision data = revisionData.getData();
data.setId(null);
// 设置流程变量
Map<String, Object> actVariables = this.setVariables(revisionData);
// 删除草稿