审批流程 代码优化
parent
ef77ff77ea
commit
54164e9a48
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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流
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue