feat: 变更流程撤回制修订改为流程结束时撤回
This commit is contained in:
+52
@@ -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());
|
||||
|
||||
-25
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -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);
|
||||
// 删除草稿
|
||||
|
||||
Reference in New Issue
Block a user