mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	【代码评审】BPM:review 快搭的实现
This commit is contained in:
		@@ -16,9 +16,9 @@ public enum BpmApproveMethodEnum {
 | 
			
		||||
 | 
			
		||||
    SINGLE_PERSON_APPROVE(1, "单人审批"),
 | 
			
		||||
    ALL_APPROVE(2, "多人会签(需所有审批人同意)"), // 会签
 | 
			
		||||
    APPROVE_BY_RATIO(3, "多人会签(按比例投票)"),
 | 
			
		||||
    ANY_APPROVE_ALL_REJECT(4, "多人会签(通过只需一人,拒绝需要全员)"), // 通过只需一人,拒绝需要全员
 | 
			
		||||
    ANY_APPROVE(5, "多人或签(一名审批人通过即可)"), // 或签
 | 
			
		||||
    APPROVE_BY_RATIO(3, "多人会签(按比例投票)"), // 会签(按比例投票)
 | 
			
		||||
    ANY_APPROVE_ALL_REJECT(4, "多人会签(通过只需一人,拒绝需要全员)"), // 会签(通过只需一人,拒绝需要全员)
 | 
			
		||||
    ANY_APPROVE(5, "多人或签(一名审批人通过即可)"), // 或签(通过只需一人,拒绝只需一人)
 | 
			
		||||
    SEQUENTIAL_APPROVE(6, "依次审批"); // 依次审批
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -353,26 +353,30 @@ public class BpmTaskServiceImpl implements BpmTaskService {
 | 
			
		||||
            return;
 | 
			
		||||
        } else if (userTaskRejectHandlerType == BpmUserTaskRejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO) {
 | 
			
		||||
            // 3.3 按拒绝人数比例终止流程
 | 
			
		||||
            if(!flowElement.hasMultiInstanceLoopCharacteristics()) {
 | 
			
		||||
            // TODO @jason:建议抛出系统异常
 | 
			
		||||
            if (!flowElement.hasMultiInstanceLoopCharacteristics()) {
 | 
			
		||||
                throw exception(TASK_REJECT_HANDLER_TYPE_BY_REJECT_RATIO_ERROR);
 | 
			
		||||
            }
 | 
			
		||||
            Execution execution = runtimeService.createExecutionQuery().processInstanceId(task.getProcessInstanceId())
 | 
			
		||||
                    .executionId(task.getExecutionId()).singleResult();
 | 
			
		||||
            // 获取并行任务总数
 | 
			
		||||
            // 获取并行任务总数 TODO @jason:这个注释,其实挪到 Execution execution 前面好,更有整体性。
 | 
			
		||||
            Integer nrOfInstances = runtimeService.getVariable(execution.getParentId(), "nrOfInstances", Integer.class);
 | 
			
		||||
            // 获取未完成任务列表
 | 
			
		||||
            List<Task> taskList = getAssignedTaskListByConditions(task.getProcessInstanceId(), null, task.getTaskDefinitionKey());
 | 
			
		||||
            List<Task> taskList = getAssignedTaskListByConditions(task.getProcessInstanceId(), null,
 | 
			
		||||
                    task.getTaskDefinitionKey());
 | 
			
		||||
            // 获取已经拒绝的任务数
 | 
			
		||||
            int rejectNumber = 0;
 | 
			
		||||
            // TODO @jason: CollectionUtils.getSumValue() 替代
 | 
			
		||||
            for (Task item : taskList) {
 | 
			
		||||
                if (Objects.equals(BpmTaskStatusEnum.REJECT.getStatus(), FlowableUtils.getTaskStatus(item))) {
 | 
			
		||||
                    rejectNumber ++;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // TODO @jason:如果这样的话,后续会不会在【已完成】里面查询不到哈?【重要!!!!】
 | 
			
		||||
            // 拒绝任务后,任务分配人清空。但不能完成任务
 | 
			
		||||
            taskService.setAssignee(task.getId(), "");
 | 
			
		||||
            // 不是所有人拒绝返回。 TODO 后续需要做按拒绝人数比例来判断
 | 
			
		||||
            if(!Objects.equals(nrOfInstances, rejectNumber)) {
 | 
			
		||||
            if (!Objects.equals(nrOfInstances, rejectNumber)) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -478,6 +482,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
 | 
			
		||||
        return taskService.createTaskQuery().taskId(id).includeTaskLocalVariables().singleResult();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // TODO @jason:改成 getTaskListByProcessInstanceIdAndAssigned;其它条件就不写了。主要考虑,还是动名词
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Task> getAssignedTaskListByConditions(String processInstanceId, String executionId, String defineKey) {
 | 
			
		||||
        Assert.notNull(processInstanceId, "processInstanceId 不能为空");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user