feat: 复审流程结束后自动发起立项修订流程

This commit is contained in:
2023-12-07 19:11:10 +08:00
parent 6956170ada
commit a1cb4f8cd0
4 changed files with 74 additions and 28 deletions
@@ -84,10 +84,12 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
CommonVO commonVO = annualReportData.getCommonVO(); CommonVO commonVO = annualReportData.getCommonVO();
// 当前用户Id // 当前用户Id
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
// // 人员数据
Map<String, Object> variables = annualReportData.getFlowUser(); Map<String, Object> variables = annualReportData.getFlowUser();
// 设置流程变量 // 设置流程变量
Map<String, Object> actVariables = this.setVariables(annualReportData); Map<String, Object> actVariables = this.setVariables(annualReportData);
// 删除草稿
actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ANNUAL_REPORT);
// 启动流程 // 启动流程
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables);
// 获取流程实例ID // 获取流程实例ID
@@ -113,22 +115,11 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
Map<String, Object> actVariables = new HashMap<>(); Map<String, Object> actVariables = new HashMap<>();
CommonVO commonVO = annualReportData.getCommonVO(); CommonVO commonVO = annualReportData.getCommonVO();
Map<String, Object> flowUser = annualReportData.getFlowUser(); Map<String, Object> flowUser = annualReportData.getFlowUser();
actFlowCommonService.putIfNotNull(actVariables, "contactUserList", Optional.ofNullable((String)flowUser.get("contactUserList")).map(s -> Arrays.asList(s.split(","))).orElse(null)); actFlowCommonService.putIfNotNull(actVariables, "contactUserList",
if (flowUser.get("workGroupUserList") == null || StrUtil.isBlank((String)flowUser.get("workGroupUserList"))) { Optional.ofNullable((String)flowUser.get("contactUserList"))
actFlowCommonService.putIfNotNull(actVariables, "distribute", false); .map(s -> Arrays.asList(s.split(",")))
} else { .orElse(null));
actFlowCommonService.putIfNotNull(actVariables, "distribute", true); actVariables.put("standardEngineer", flowUser.get("standardEngineer"));
String relatedUsers = (String) flowUser.get("relatedUserList");
// 将relatedUserList从逗号拼接转为List
List<String> relatedUserList = StrUtil.split(relatedUsers, ',');
actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList);
}
for (Map.Entry<String, Object> entry : flowUser.entrySet()) {
String key = entry.getKey();
if (!key.equals("contactUserList") && !key.equals("workGroupUserList")) {
actVariables.put(key, entry.getValue());
}
}
actVariables.put("processDescription", commonVO.getProcessDescription()); actVariables.put("processDescription", commonVO.getProcessDescription());
return actVariables; return actVariables;
} }
@@ -55,4 +55,9 @@ public interface ProcessEsInitChangeService extends IService<ProcessEsInitChange
*/ */
InitChangeDataVO getDraftData(String draftId, String businessId); InitChangeDataVO getDraftData(String draftId, String businessId);
/**
* 复审-继续有效-自动发起立项变更流程
* @param standNo
*/
void autoStartProcessByRecheck(String standardNo);
} }
@@ -22,6 +22,8 @@ import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChange
import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
@@ -61,6 +63,9 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
@Resource @Resource
private TaskService taskService; private TaskService taskService;
@Resource
private ILawsEnterpriseStandardService esService;
@Override @Override
public void startProcess(InitChangeDataVO initChangeData) { public void startProcess(InitChangeDataVO initChangeData) {
// 执行流程发起前的操作 // 执行流程发起前的操作
@@ -169,6 +174,45 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
} }
} }
@Override
public void autoStartProcessByRecheck(String standardNo) {
// 1. 根据企标编号找到对应企标的主起草人
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standardNo);
esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue());
LawsEnterpriseStandard es = esService.getOne(esWrapper);
String mainDraftUser = es.getMainDraftingUser();
if (StrUtil.isBlank(mainDraftUser)) {
// TODO 企标主起草人为空,待定
}
// 流程Key
String processDefinitionKey = ProcessType.ES_INIT_CHANGE.getProcessKey();
// 设置流程变量
Map<String, Object> variables = new HashMap<>();
variables.put("mainDraftUser", mainDraftUser);
// 启动流程
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables);
ProcessEsInitChange initChange = new ProcessEsInitChange();
// 获取流程实例ID
String processDefinitionId = processInstance.getProcessDefinitionId();
String processInstanceId = processInstance.getId();
// 设置流程实例Id
initChange.setProcessInstanceId(processInstanceId);
// 生成唯一的businessId
String newBusinessId = actFlowCommonService.getNewBusinessId();
// 新增业务表数据
initChange.setBusinessId(newBusinessId);
// 保存到业务流程表
save(initChange);
// 保存选人信息
// 人员
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, variables);
// 根据流程实例id更新流程总表
String prcName = standardNo + "--立项";
Integer prcType = ProcessTypeEnum.ES_INIT_CHANGE.getValue();
actFlowCommonService.updateProcessAll(processInstanceId, mainDraftUser, prcName, null, prcType, null);
}
@Override @Override
public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) { public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) {
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
@@ -12,7 +12,9 @@ import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChang
import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck;
import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService;
import com.jero.modules.laws.enterprise.util.BeanCopyUtils; import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
@@ -46,7 +48,10 @@ public class ProcessESRecheckEndListener implements ExecutionListener {
private ProcessEsRecheckService esRecheckService; private ProcessEsRecheckService esRecheckService;
@Resource @Resource
private ILawsEnterpriseStandardService esService; private EnterpriseStandardRecheckPlanService esRecheckPlanService;
@Resource
private ProcessEsInitChangeService esInitChangeService;
@Override @Override
public void notify(DelegateExecution delegateExecution) { public void notify(DelegateExecution delegateExecution) {
@@ -60,24 +65,25 @@ public class ProcessESRecheckEndListener implements ExecutionListener {
String standNo = recheck.getStandardNumber(); String standNo = recheck.getStandardNumber();
log.info("企标复审流程结束 监听执行器开始执行,企标编号为:{}", standNo); log.info("企标复审流程结束 监听执行器开始执行,企标编号为:{}", standNo);
if (RECHECK_CONTINUE_VALID.equals(recheckAdvice)) { if (RECHECK_CONTINUE_VALID.equals(recheckAdvice)) {
// TODO 继续有效 // TODO 继续有效 更新下次复审时间,不做其他处理。 (复审时间更新的逻辑待定)
} }
if (RECHECK_INIT_CHANGE.equals(recheckAdvice)) { if (RECHECK_INIT_CHANGE.equals(recheckAdvice)) {
// TODO 修订 // 修订 自动发起企标立项/变更流程(修订模式)
esInitChangeService.autoStartProcessByRecheck(standNo);
} }
if (RECHECK_ABOLISH.equals(recheckAdvice)) { if (RECHECK_ABOLISH.equals(recheckAdvice)) {
// 废止 // 废止
LambdaUpdateWrapper<LawsEnterpriseStandard> esWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<EnterpriseStandardRecheckPlan> wrapper = new LambdaUpdateWrapper<>();
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo); wrapper.eq(EnterpriseStandardRecheckPlan::getStandardNo, standNo);
esWrapper.set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ABOLISH.getStateValue()); wrapper.set(EnterpriseStandardRecheckPlan::getRecheckResult, RECHECK_ABOLISH);
esService.update(esWrapper); esRecheckPlanService.update(wrapper);
} }
if (RECHECK_ARCHIVE.equals(recheckAdvice)) { if (RECHECK_ARCHIVE.equals(recheckAdvice)) {
// 封存 // 封存
LambdaUpdateWrapper<LawsEnterpriseStandard> esWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<EnterpriseStandardRecheckPlan> wrapper = new LambdaUpdateWrapper<>();
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo); wrapper.eq(EnterpriseStandardRecheckPlan::getStandardNo, standNo);
esWrapper.set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ARCHIVE.getStateValue()); wrapper.set(EnterpriseStandardRecheckPlan::getRecheckResult, RECHECK_ARCHIVE);
esService.update(esWrapper); esRecheckPlanService.update(wrapper);
} }
log.info("企标复审流程监听执行器执行结束"); log.info("企标复审流程监听执行器执行结束");
} }