审批流程 代码优化

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();
logger.info("addCandidateUsers : {}, taskName:{}, hasProcIns:{}", candidateUsers, delegateTask.getName(), processInstance != null);
if (actUtil.isProjectProcessIns(processInstance)) {
updateProjectApprover(candidateUsers, processInstance, procDefId, taskDefKey);
}
delegateTask.addCandidateUsers(candidateUsers);
}

View File

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

View File

@ -73,17 +73,13 @@ public class ActTaskDefService {
taskService.setAssignee(taskId, userId);
if (ActConstant.TASK_TYPE_SINGE == actTaskDef.getTaskType()) {
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()),
currentTask, type, actTaskDef.getTaskIndex(), message);
}
}
/**
@ -94,49 +90,12 @@ public class ActTaskDefService {
* @param comment
*/
public void completeTaskByProcInsId(String procInsId, int type, String comment) {
//int adminId = InterfaceUtil.getAdminId();
List<Task> taskList = taskService.createTaskQuery().processInstanceId(procInsId).list();
//List<String> assignUserList;
for (Task task : taskList) {
//assignUserList = actUtil.getAssignUserList(task.getId());
//if (assignUserList.contains(String.valueOf(adminId))) {
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);
if (actUtil.isProjectProcessIns(procDefKey)) {
//最后一个任务完成后 更新项目状态为审批通过
updateProjectPassed(processInstance, actTaskDef, procDefKey);
}
} else if (ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == type) {
//驳回
String rollbackTaskKey = actTaskDef.getRollbackTaskKey();
actUtil.jumpToTargetTask(taskId, rollbackTaskKey);
//驳回后 更新项目状态为审批不通过
if (actUtil.isProjectProcessIns(procDefKey)) {
int projectId = Integer.parseInt(processInstance.getBusinessKey());
projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_UNPASS);
logger.info("updateProjectUnPassed projectId:{}, proDefKey:{}", projectId, procDefKey);
}
}
}

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
*