feat: 年度制修订标准化发起流程联络人驳回后新发起流程
This commit is contained in:
+4
@@ -57,6 +57,10 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener {
|
|||||||
LambdaQueryWrapper<ProcessEsAnnualInit> esAnnualInitWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProcessEsAnnualInit> esAnnualInitWrapper = new LambdaQueryWrapper<>();
|
||||||
esAnnualInitWrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId);
|
esAnnualInitWrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId);
|
||||||
List<ProcessEsAnnualInit> annualInits = annualInitService.list(esAnnualInitWrapper);
|
List<ProcessEsAnnualInit> annualInits = annualInitService.list(esAnnualInitWrapper);
|
||||||
|
if (annualInits == null || annualInits.isEmpty()) {
|
||||||
|
log.info("年度制修订标准化发起流程结束 监听执行器未找到流程业务数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<EnterpriseStandardPlan> enterpriseStandardPlans;
|
List<EnterpriseStandardPlan> enterpriseStandardPlans;
|
||||||
// 立项新增-Id置空
|
// 立项新增-Id置空
|
||||||
annualInits.forEach(annualInit -> annualInit.setId(null));
|
annualInits.forEach(annualInit -> annualInit.setId(null));
|
||||||
|
|||||||
+51
-79
@@ -99,8 +99,6 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startProcess(AnnualInitDataVO annualInitData) {
|
public void startProcess(AnnualInitDataVO annualInitData) {
|
||||||
// 执行流程发起前的操作
|
|
||||||
this.startRunTask(annualInitData);
|
|
||||||
// 流程Key
|
// 流程Key
|
||||||
String processDefinitionKey = ProcessType.ES_ANNUAL_INIT.getProcessKey();
|
String processDefinitionKey = ProcessType.ES_ANNUAL_INIT.getProcessKey();
|
||||||
// 通用数据
|
// 通用数据
|
||||||
@@ -136,6 +134,41 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
|
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 驳回以后重新发起流程
|
||||||
|
*/
|
||||||
|
public void restartProcess(AnnualInitDataVO annualInitData, String originTaskId) {
|
||||||
|
Task task = taskService.createTaskQuery().taskId(originTaskId).singleResult();
|
||||||
|
// 获取流程相关信息
|
||||||
|
ProcessAll processAll = processAllService.getByProcessInstanceId(task.getProcessInstanceId());
|
||||||
|
String standardEngineer = (String) taskService.getVariable(originTaskId, "standardEngineer");
|
||||||
|
Map<String, Object> actVariables = new HashMap<>();
|
||||||
|
actVariables.put("standardEngineer", standardEngineer);
|
||||||
|
// 流程Key
|
||||||
|
String processDefinitionKey = ProcessType.ES_ANNUAL_INIT.getProcessKey();
|
||||||
|
// 业务数据
|
||||||
|
List<ProcessEsAnnualInit> dataList = annualInitData.getDataList();
|
||||||
|
// 启动流程
|
||||||
|
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables);
|
||||||
|
// 获取流程实例ID
|
||||||
|
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||||
|
String processInstanceId = processInstance.getId();
|
||||||
|
// 手动设置所有流程变量
|
||||||
|
actFlowCommonService.setProcessVariables(processInstanceId, actVariables);
|
||||||
|
// 保存选人信息
|
||||||
|
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables));
|
||||||
|
// 保存数据
|
||||||
|
dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
|
||||||
|
dataList.forEach(ProcessEsAnnualInit::setDateEditFlag);
|
||||||
|
saveOrUpdateBatch(dataList);
|
||||||
|
// 根据流程实例id更新流程总表
|
||||||
|
String prcName = processAll.getPrcName();
|
||||||
|
String prcMes = processAll.getPrcMes();
|
||||||
|
Date dueTime = processAll.getDueTime();
|
||||||
|
Integer prcType = ProcessTypeEnum.ES_ANNUAL_INIT.getValue();
|
||||||
|
actFlowCommonService.updateProcessAll(processInstanceId, standardEngineer, prcName, prcMes, prcType, dueTime);
|
||||||
|
}
|
||||||
|
|
||||||
public void startRunTask(AnnualInitDataVO annualInitData) {
|
public void startRunTask(AnnualInitDataVO annualInitData) {
|
||||||
// do nothing now
|
// do nothing now
|
||||||
}
|
}
|
||||||
@@ -150,16 +183,6 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
return actVariables;
|
return actVariables;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> setUserVariables(AnnualInitFlowUserVO userVO) {
|
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
|
||||||
// 使用一个通用方法来只在不为空时添加键值对
|
|
||||||
actFlowCommonService.putIfNotNull(map, "standardEngineer", userVO.getStandardEngineer());
|
|
||||||
actFlowCommonService.putIfNotNull(map, "contactUserList", userVO.getContactUserList());
|
|
||||||
actFlowCommonService.putIfNotNull(map, "approvalUserList", userVO.getApprovalUserList());
|
|
||||||
actFlowCommonService.putIfNotNull(map, "mainDraftUserList", userVO.getMainDraftUserList());
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, Object> getUserMap(Map<String, Object> variables) {
|
private Map<String, Object> getUserMap(Map<String, Object> variables) {
|
||||||
// 转成逗号拼接
|
// 转成逗号拼接
|
||||||
variables.put("contactUserList", Optional.ofNullable((HashSet<String>) variables.get("contactUserList"))
|
variables.put("contactUserList", Optional.ofNullable((HashSet<String>) variables.get("contactUserList"))
|
||||||
@@ -208,14 +231,6 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
case CONTACT_USER_SELECT:
|
case CONTACT_USER_SELECT:
|
||||||
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
|
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
|
||||||
break;
|
break;
|
||||||
case STANDARD_ENGINEER_SECOND_EDIT:
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId);
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getRejectSecondFlag, YesOrNoEnum.YES.getValue());
|
|
||||||
break;
|
|
||||||
case STANDARD_ENGINEER_EDIT:
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId);
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue());
|
|
||||||
break;
|
|
||||||
case MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE:
|
case MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE:
|
||||||
wrapper.eq(ProcessEsAnnualInit::getContactUser, contactUser);
|
wrapper.eq(ProcessEsAnnualInit::getContactUser, contactUser);
|
||||||
wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId);
|
wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId);
|
||||||
@@ -250,6 +265,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
@Override
|
@Override
|
||||||
public void approvalProcess(AnnualInitDataVO annualInitData, boolean pass) {
|
public void approvalProcess(AnnualInitDataVO annualInitData, boolean pass) {
|
||||||
CommonVO commonVO = annualInitData.getCommonVO();
|
CommonVO commonVO = annualInitData.getCommonVO();
|
||||||
|
Map<String, Object> flowUser = annualInitData.getFlowUser();
|
||||||
String taskId = commonVO.getTaskId();
|
String taskId = commonVO.getTaskId();
|
||||||
// 获取task
|
// 获取task
|
||||||
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
|
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
|
||||||
@@ -274,8 +290,11 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
||||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||||
Map<String, Object> userMap = new HashMap<>();
|
Map<String, Object> userMap = new HashMap<>();
|
||||||
boolean batchDelFlag = StrUtil.isNotBlank(annualInitData.getBatchRejectIds());
|
// boolean batchDelFlag = StrUtil.isNotBlank(annualInitData.getBatchRejectIds());
|
||||||
switch (taskName) {
|
switch (taskName) {
|
||||||
|
case STANDARD_ENGINEER_INIT:
|
||||||
|
|
||||||
|
break;
|
||||||
case CONTACT_USER_SELECT:
|
case CONTACT_USER_SELECT:
|
||||||
dataList = annualInitData.getDataList();
|
dataList = annualInitData.getDataList();
|
||||||
// 处理驳回
|
// 处理驳回
|
||||||
@@ -290,52 +309,11 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
dataList.forEach(data -> data.setExecutionId(executionId));
|
dataList.forEach(data -> data.setExecutionId(executionId));
|
||||||
saveOrUpdateBatch(dataList);
|
saveOrUpdateBatch(dataList);
|
||||||
} else {
|
} else {
|
||||||
if (dataList == null) {
|
// 找到所有被驳回的数据,发起新流程
|
||||||
// 找到所有数据,然后设置驳回标志位
|
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
|
||||||
updateWrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
|
List<ProcessEsAnnualInit> list = list(wrapper);
|
||||||
updateWrapper.set(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue());
|
annualInitData.setDataList(list);
|
||||||
updateWrapper.set(ProcessEsAnnualInit::getExecutionId, executionId);
|
this.restartProcess(annualInitData, taskId);
|
||||||
update(updateWrapper);
|
|
||||||
} else {
|
|
||||||
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue()));
|
|
||||||
dataList.forEach(data -> data.setExecutionId(executionId));
|
|
||||||
saveOrUpdateBatch(dataList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case STANDARD_ENGINEER_SECOND_EDIT:
|
|
||||||
dataList = annualInitData.getDataList();
|
|
||||||
dataList.forEach(d -> d.setRejectSecondFlag(YesOrNoEnum.NO.getValue()));
|
|
||||||
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue()));
|
|
||||||
dataList.forEach(d -> d.setExecutionId(executionId));
|
|
||||||
dataList.forEach(ProcessEsAnnualInit::setDateEditFlag);
|
|
||||||
dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
|
|
||||||
// 先删后增
|
|
||||||
if (batchDelFlag) {
|
|
||||||
saveOrUpdateBatch(dataList);
|
|
||||||
} else {
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getContactUser, contactUser);
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId);
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getRejectSecondFlag, YesOrNoEnum.YES.getValue());
|
|
||||||
remove(wrapper);
|
|
||||||
saveBatch(dataList);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case STANDARD_ENGINEER_EDIT:
|
|
||||||
dataList = annualInitData.getDataList();
|
|
||||||
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue()));
|
|
||||||
dataList.forEach(ProcessEsAnnualInit::setDateEditFlag);
|
|
||||||
dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
|
|
||||||
dataList.forEach(data -> data.setExecutionId(executionId));
|
|
||||||
// 先删后增
|
|
||||||
if (batchDelFlag) {
|
|
||||||
saveOrUpdateBatch(dataList);
|
|
||||||
} else {
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getContactUser, contactUser);
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId);
|
|
||||||
wrapper.eq(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue());
|
|
||||||
remove(wrapper);
|
|
||||||
saveBatch(dataList);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE:
|
case MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE:
|
||||||
@@ -372,17 +350,11 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
userMap.put("approvalUserList", annualInitData.getDataList().get(0).getApprovalUser());
|
userMap.put("approvalUserList", annualInitData.getDataList().get(0).getApprovalUser());
|
||||||
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
||||||
} else {
|
} else {
|
||||||
if (dataList == null) {
|
// 找到所有被驳回的数据,发起新流程
|
||||||
// 找到所有数据,然后设置驳回标志位
|
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
|
||||||
updateWrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
|
List<ProcessEsAnnualInit> list = list(wrapper);
|
||||||
updateWrapper.set(ProcessEsAnnualInit::getRejectSecondFlag, YesOrNoEnum.YES.getValue());
|
annualInitData.setDataList(list);
|
||||||
updateWrapper.set(ProcessEsAnnualInit::getExecutionId, executionId);
|
this.restartProcess(annualInitData, taskId);
|
||||||
update(updateWrapper);
|
|
||||||
} else {
|
|
||||||
dataList.forEach(d -> d.setRejectSecondFlag(YesOrNoEnum.YES.getValue()));
|
|
||||||
dataList.forEach(data -> data.setExecutionId(executionId));
|
|
||||||
saveOrUpdateBatch(dataList);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MAIN_DRAFT_WRITE:
|
case MAIN_DRAFT_WRITE:
|
||||||
@@ -542,7 +514,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
|
|||||||
// 转换成key为企标编号的map
|
// 转换成key为企标编号的map
|
||||||
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
|
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
|
||||||
|
|
||||||
list.forEach(item-> {
|
list.forEach(item -> {
|
||||||
// 如果是制定则去除掉所有的原企标名称 原企标编号
|
// 如果是制定则去除掉所有的原企标名称 原企标编号
|
||||||
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
|
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
|
||||||
item.setOriginEnStandardName(null);
|
item.setOriginEnStandardName(null);
|
||||||
|
|||||||
Reference in New Issue
Block a user