审批流程 代码优化

master
pengqiang 2022-08-08 16:32:47 +08:00
parent ef77ff77ea
commit 54164e9a48
4 changed files with 15 additions and 81 deletions

View File

@ -58,9 +58,7 @@ public class ActListenerService {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(procInsId).singleResult(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(procInsId).singleResult();
logger.info("addCandidateUsers : {}, taskName:{}, hasProcIns:{}", candidateUsers, delegateTask.getName(), processInstance != null); logger.info("addCandidateUsers : {}, taskName:{}, hasProcIns:{}", candidateUsers, delegateTask.getName(), processInstance != null);
if (actUtil.isProjectProcessIns(processInstance)) { updateProjectApprover(candidateUsers, processInstance, procDefId, taskDefKey);
updateProjectApprover(candidateUsers, processInstance, procDefId, taskDefKey);
}
delegateTask.addCandidateUsers(candidateUsers); delegateTask.addCandidateUsers(candidateUsers);
} }

View File

@ -104,10 +104,8 @@ public class ActProcInsService {
taskService.setAssignee(taskId, adminId); taskService.setAssignee(taskId, adminId);
taskService.complete(taskId); taskService.complete(taskId);
if (actUtil.isProjectProcessIns(instance)) { projectTaskRecordService.saveTaskRecord(Integer.parseInt(instance.getBusinessKey()),
projectTaskRecordService.saveTaskRecord(Integer.parseInt(instance.getBusinessKey()), task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), ActConstant.TASK_INDEX_FIRST_USER_TASK, comment);
task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), ActConstant.TASK_INDEX_FIRST_USER_TASK, comment);
}
return instance.getId(); return instance.getId();
} }

View File

@ -73,16 +73,12 @@ public class ActTaskDefService {
taskService.setAssignee(taskId, userId); taskService.setAssignee(taskId, userId);
if (ActConstant.TASK_TYPE_SINGE == actTaskDef.getTaskType()) { if (ActConstant.TASK_TYPE_SINGE == actTaskDef.getTaskType()) {
handleSinge(processInstance, taskId, type, actTaskDef); handleSinge(processInstance, taskId, type, actTaskDef);
} else if (ActConstant.TASK_TYPE_MULTI == actTaskDef.getTaskType()) {
//多实列 会签处理
handleMulti(processInstance, taskId, type, actTaskDef);
} }
if (actUtil.isProjectProcessIns(processInstance)) {
//保存审批记录 //保存审批记录
projectTaskRecordService.saveTaskRecord(Integer.parseInt(processInstance.getBusinessKey()), projectTaskRecordService.saveTaskRecord(Integer.parseInt(processInstance.getBusinessKey()),
currentTask, type, actTaskDef.getTaskIndex(), message); currentTask, type, actTaskDef.getTaskIndex(), message);
}
} }
@ -94,49 +90,12 @@ public class ActTaskDefService {
* @param comment * @param comment
*/ */
public void completeTaskByProcInsId(String procInsId, int type, String comment) { public void completeTaskByProcInsId(String procInsId, int type, String comment) {
//int adminId = InterfaceUtil.getAdminId();
List<Task> taskList = taskService.createTaskQuery().processInstanceId(procInsId).list(); List<Task> taskList = taskService.createTaskQuery().processInstanceId(procInsId).list();
//List<String> assignUserList;
for (Task task : taskList) { for (Task task : taskList) {
//assignUserList = actUtil.getAssignUserList(task.getId());
//if (assignUserList.contains(String.valueOf(adminId))) {
completeTask(task.getId(), procInsId, comment, type); completeTask(task.getId(), procInsId, comment, type);
//}
} }
} }
/**
*
*
* @param taskId
* @param processInstance
* @param type
* @param actTaskDef
*/
private void handleMulti(ProcessInstance processInstance, String taskId, int type, ActTaskDef actTaskDef) {
if (ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == type) {
//一个人驳回 整个任务节点驳回
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
for (int i = 0; i < taskList.size(); i++) {
TaskEntity taskEntity = (TaskEntity) taskList.get(i);
if (!taskId.equals(taskEntity.getId())) {
/* taskEntity.setProcessInstanceId(null);
taskEntity.setExecutionId(null);
taskService.saveTask(taskEntity);*/
taskService.addComment(taskEntity.getId(), processInstance.getId(), "会签驳回,任务自动失效");
taskService.complete(taskEntity.getId());
//taskService.deleteTask(taskEntity.getId(), false); // 不删除历史记录
}
}
//驳回到配置的节点
actUtil.jumpToTargetTask(taskId, actTaskDef.getRollbackTaskKey());
return;
}
taskService.complete(taskId);
}
/** /**
* *
@ -152,22 +111,18 @@ public class ActTaskDefService {
//审批通过 //审批通过
taskService.complete(taskId); taskService.complete(taskId);
if (actUtil.isProjectProcessIns(procDefKey)) { //最后一个任务完成后 更新项目状态为审批通过
//最后一个任务完成后 更新项目状态为审批通过 updateProjectPassed(processInstance, actTaskDef, procDefKey);
updateProjectPassed(processInstance, actTaskDef, procDefKey);
}
} else if (ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == type) { } else if (ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == type) {
//驳回 //驳回
String rollbackTaskKey = actTaskDef.getRollbackTaskKey(); String rollbackTaskKey = actTaskDef.getRollbackTaskKey();
actUtil.jumpToTargetTask(taskId, rollbackTaskKey); actUtil.jumpToTargetTask(taskId, rollbackTaskKey);
//驳回后 更新项目状态为审批不通过 //驳回后 更新项目状态为审批不通过
if (actUtil.isProjectProcessIns(procDefKey)) { int projectId = Integer.parseInt(processInstance.getBusinessKey());
int projectId = Integer.parseInt(processInstance.getBusinessKey()); projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_UNPASS);
projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_UNPASS); logger.info("updateProjectUnPassed projectId:{}, proDefKey:{}", projectId, procDefKey);
logger.info("updateProjectUnPassed projectId:{}, proDefKey:{}", projectId, procDefKey);
}
} }
} }
@ -184,13 +139,13 @@ public class ActTaskDefService {
//结算流程 财务总监审批完流程结束 //结算流程 财务总监审批完流程结束
if ("财务总监".equals(actTaskDef.getTaskName())) { if ("财务总监".equals(actTaskDef.getTaskName())) {
logger.info("updateProjectPassed1 projectId:{}, proDefKey:{}", projectId, procDefKey); logger.info("updateProjectPassed1 projectId:{}, proDefKey:{}", projectId, procDefKey);
projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_PASSED); projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_PASSED);
} }
} else { } else {
//其余流程 执行董事审批完流程结束 //其余流程 执行董事审批完流程结束
if ("执行董事".equals(actTaskDef.getTaskName())) { if ("执行董事".equals(actTaskDef.getTaskName())) {
logger.info("updateProjectPassed2 projectId:{}, proDefKey:{}", projectId, procDefKey); logger.info("updateProjectPassed2 projectId:{}, proDefKey:{}", projectId, procDefKey);
projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_PASSED); projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_PASSED);
} }
} }

View File

@ -201,23 +201,6 @@ public class ActUtil {
} }
public boolean isProjectProcessIns(ProcessInstance processInstance) {
if (processInstance == null) {
return false;
}
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult();
String procDefKey = processDefinition.getKey();
return isProjectProcessIns(procDefKey);
}
public boolean isProjectProcessIns(String procDefKey) {
return procDefKey.equals(ActConstant.PROCESS_DEFKEY_ESTIMATE)
|| procDefKey.equals(ActConstant.PROCESS_DEFKEY_BUDGET)
|| procDefKey.equals(ActConstant.PROCESS_DEFKEY_SETTLE)
|| procDefKey.equals(ActConstant.PROCESS_DEFKEY_FINAL);
}
/** /**
* xml * xml
* *