add 标准征求意见流程-审批

This commit is contained in:
liao
2023-11-22 15:36:57 +08:00
parent 918e24a503
commit 1de3ea2cf1
2 changed files with 91 additions and 9 deletions
@@ -11,7 +11,7 @@ public class ConsultationTaskKey {
public static final String ENGINEER_START = "engineer_start"; // 法规工程师发起
public static final String ENGINEER_START_END = "engineer_start_end"; // 法规工程师汇总
public static final String ENGINEER_START_END = "engineer_start_end"; // 法规工程师审批
public static final String REJECT = "reject"; // 法规工程师驳回
@@ -19,13 +19,13 @@ public class ConsultationTaskKey {
public static final String DEPART_LEADER_START_2 = "depart_leader_start_2"; // 各部所主管级领导分发
public static final String DEPART_LEADER_END_1 = "depart_leader_end_1"; // 各部所主管级领导汇总
public static final String DEPART_LEADER_END_1 = "depart_leader_end_1"; // 各部所主管级领导审批
public static final String DEPART_LEADER_COLLECT_2 = "depart_leader_collect_2"; // 各部所主管级领导汇总
public static final String DEPART_LEADER_COLLECT_3 = "depart_leader_collect_3"; // 各部所主管级领导汇总
public static final String DEPART_LEADER_END_4 = "depart_leader_end_4"; // 各部所主管级领导汇总
public static final String DEPART_LEADER_END_4 = "depart_leader_end_4"; // 各部所主管级领导审批
public static final String MODULE_OWNER_START = "module_owner_start"; // 模块负责人分发
@@ -113,16 +113,18 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
**/
@Override
public void approveTask(ProcessInfoVO<ProcessFbStandardConsultationVO> processInfoVO, boolean pass) {
BasicTaskInfoDTO taskInfo = processInfoVO.getBasicTaskInfoDTO(); // 任务信息
ProcessFbStandardConsultationVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); // 全部业务信息
ProcessFbStandardConsultation businessBasicInfo = businessInfoDTO.getProcessFbStandardConsultation(); // 业务基本信息
processInfoVO.setBusinessId(businessBasicInfo.getId());
String businessId = businessBasicInfo.getId();
processInfoVO.setBusinessId(businessId);
BasicTaskInfoDTO taskInfo = processInfoVO.getBasicTaskInfoDTO(); // 任务信息
String taskId = taskInfo.getTaskId();
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
processHandleService.isMyTask(taskId); // 判断是否拥有任务处理权
String taskDefinitionKey = task.getTaskDefinitionKey(); // 任务定义id
String processInstanceId = task.getProcessInstanceId();
Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
@@ -131,20 +133,98 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
log.info("TaskDefinitionKey: {}", task.getTaskDefinitionKey());
log.info("任务Name: {}", task.getName());
log.info("任务FormKey: {}", task.getFormKey());
log.info("任务ProcessInstanceId: {}", task.getProcessInstanceId());
log.info("任务ProcessInstanceId: {}", processInstanceId);
log.info("任务ExecutionId: {}", task.getExecutionId());
log.info("任务父ExecutionId: {}", execution.getParentId());
log.info("=======================================================================");
String userId = CurrentUserUtil.getId();
if (pass) { // 同意
taskInfo.setCommitFlag(CommitFlagEnum.PASS.getValue());
switch (taskDefinitionKey) {
case ConsultationTaskKey.DEPART_LEADER_END_1: // 主管级领导审批
case ConsultationTaskKey.DEPART_LEADER_END_4: // 驳回流程中的主管级领导审批
runtimeService.setVariableLocal(processInstanceId, "passSecond", true);
break;
case ConsultationTaskKey.ENGINEER_START_END: // 法规工程师审批
runtimeService.setVariableLocal(processInstanceId, "passThird", true);
break;
default:
throw new JeroBootException("目前还未开发,请联系管理员");
}
} else { // 驳回
taskInfo.setCommitFlag(CommitFlagEnum.REJECT.getValue());
throw new JeroBootException("目前还未开发,请联系管理员");
LambdaQueryWrapper<ProcessFbConsultationUserLink> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, businessId);
List<ProcessFbConsultationUserLink> userLinkList;
switch (taskDefinitionKey) {
case ConsultationTaskKey.DEPART_LEADER_END_1: // 主管级领导审批
runtimeService.setVariableLocal(processInstanceId, "passSecond", false);
// 分发给退回的模块负责人
queryWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, userId);
userLinkList = processFbConsultationUserLinkService.list(queryWrapper);
List<String> moduleOwnerIdList = userLinkList.stream()
.map(ProcessFbConsultationUserLink::getModuleOwnerId)
.distinct()
.collect(Collectors.toList());
runtimeService.setVariableLocal(processInstanceId, "moduleOwnerList", moduleOwnerIdList);
break;
case ConsultationTaskKey.ENGINEER_START_END: // 法规工程师审批
runtimeService.setVariableLocal(processInstanceId, "passThird", false);
// 退回到子流程
userLinkList = processFbConsultationUserLinkService.list(queryWrapper);
List<String> departLeaderIdList = userLinkList.stream()
.map(ProcessFbConsultationUserLink::getDepartLeaderId)
.distinct()
.collect(Collectors.toList());
runtimeService.setVariableLocal(processInstanceId, "departLeaderList", departLeaderIdList);
processHandleService.updateApprovalRecord(processInfoVO);
// 完成当前任务任务
taskService.complete(taskId);
// 法规工程师驳回 任务列表
List<Task> chooseTaskList = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.processDefinitionKey(ConsultationTaskKey.REJECT)
.list();
// 自动完成任务选择
for (Task chooseTask : chooseTaskList) {
String chooseTaskAssignee = chooseTask.getAssignee();
String chooseTaskId = chooseTask.getId();
List<ProcessFbConsultationUserLink> userLinks = userLinkList.stream()
.filter(userLink -> chooseTaskAssignee.equals(userLink.getDepartLeaderId()))
.collect(Collectors.toList());
if ("1".equals(userLinks.get(0).getUserType())) { // 驳回给模块负责人
runtimeService.setVariableLocal(processInstanceId, "passFourth", true);
List<String> moduleOwnerList = userLinks.stream()
.map(ProcessFbConsultationUserLink::getModuleOwnerId)
.distinct()
.collect(Collectors.toList());
runtimeService.setVariableLocal(processInstanceId, "moduleOwnerList", moduleOwnerList);
} else { // 驳回给各部所主管级领导
runtimeService.setVariableLocal(processInstanceId, "passFourth", false);
}
// 完成驳回任务
taskService.complete(chooseTaskId);
}
return;
case ConsultationTaskKey.DEPART_LEADER_END_4:
runtimeService.setVariableLocal(processInstanceId, "passSecond", false);
break;
default:
throw new JeroBootException("目前还未开发,请联系管理员");
}
}
processHandleService.updateApprovalRecord(processInfoVO);
// 完成任务
taskService.complete(taskId);
// 如果流程已经结束
if (processHandleService.isProcessFinish(processInstanceId)) {
log.info("流程 {} 已经结束", processInstanceId);
}
}
/**
@@ -190,7 +270,6 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
ProcessFbStandardConsultation processFbStandardConsultation = getById(processInfoVO.getBusinessId());
processFbStandardConsultationVO.setProcessFbStandardConsultation(processFbStandardConsultation); // 业务基本信息
processInfoVO.setBusinessInfoDTO(processFbStandardConsultationVO);
return processInfoVO;
}
@@ -240,7 +319,10 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
designEngineer(processInfoVO);
break;
case ConsultationTaskKey.MODULE_OWNER_END_1: // 模块负责人汇总填写意见(可跳过)
case ConsultationTaskKey.MODULE_OWNER_END_2: // 模块负责人汇总填写意见(主管级领导驳回后)
case ConsultationTaskKey.MODULE_OWNER_END_3: // 法规工程师审批驳回后的子流程中的模块负责人汇总
case ConsultationTaskKey.DEPART_LEADER_COLLECT_2: // 各部所主管级领导汇总(不分发给模块负责人)
case ConsultationTaskKey.DEPART_LEADER_COLLECT_3: // 法规工程师审批驳回后的子流程中的各部所主管级领导汇总
log.info("{} 汇总", realName);
collect(processInfoVO);
break;