| | |
| | | ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(vo.getProcessDefId()).singleResult(); |
| | | if (Objects.nonNull(processDefinition)) { |
| | | vo.setSuspended(processDefinition.isSuspended()); |
| | | vo.setFlowableProcessName(processDefinition.getName()); |
| | | vo.setFlowableProcessName(processDefinition.getName() + "(v" + processDefinition.getVersion() + ")"); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 状态统计 |
| | | taskStatistics.setTotalTaskNum(this.getTotalTaskNum(processDefId)); |
| | | taskStatistics.setTodoTaskNum(this.getTodoTaskNum(projectProcess.getProcessInsId())); |
| | | taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(processDefId, projectProcess.getProcessInsId())); |
| | | taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(processDefId, projectProcess.getProcessInsId(), taskStatistics.getTotalTaskNum())); |
| | | // taskStatistics.setCurrentTask(this.getCurrentNodeTaskList(projectProcess.getProcessInstanceId())); |
| | | taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(projectProcess.getProcessDefId(), projectProcess.getProcessInsId())); |
| | | detail.setStatistics(taskStatistics); |
| | | |
| | | Result result = Result.ok(); |
| | |
| | | List<Long> handlerUnitIds = new ArrayList<>(2); |
| | | List<String> handlerUnitNames = new ArrayList<>(2); |
| | | |
| | | // 判断任务状态 |
| | | List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> { |
| | | // 判断任务状态,构建vo |
| | | List<CustomerTaskVO> vos = new ArrayList<>(48); |
| | | for (UserTask userTask : userTasks) { |
| | | CustomerTaskVO vo = new CustomerTaskVO(); |
| | | vo.setProcessInsId(process.getId()); |
| | | vo.setProcessDefId(processDefinitionId); |
| | |
| | | vo.setHandlerName(handlerNames); |
| | | vo.setHandlerUnitId(handlerUnitIds); |
| | | vo.setHandlerUnitName(handlerUnitNames); |
| | | return vo; |
| | | } else { |
| | | return null; |
| | | continue; |
| | | } |
| | | } else { |
| | | return null; |
| | | } |
| | | }).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | vos.add(vo); |
| | | } |
| | | result.data(vos); |
| | | return vos; |
| | | } |
| | |
| | | * @param processInsId 流程实例id |
| | | * @return |
| | | */ |
| | | private Long getRemainingTaskNum(String processDefinitionId, String processInsId) { |
| | | private Long getRemainingTaskNum(String processDefinitionId, String processInsId, long totalNum) { |
| | | |
| | | List<UserTask> allUserTaskElement = this.getAllUserTaskElement(processDefinitionId); |
| | | // 查出流程 |
| | | ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult(); |
| | | if (Objects.isNull(process)) { |
| | | // 运行时未找到流程,说明流程已经结束了 |
| | | return 0L; |
| | | } |
| | | long num = 0L; |
| | | // 判断任务状态 |
| | | for (UserTask userTask : allUserTaskElement) { |
| | | Task task = taskService.createTaskQuery().processInstanceId(process.getId()).taskDefinitionKey(userTask.getId()).singleResult(); |
| | | if (Objects.isNull(task)) { |
| | | // 如果任务在运行时没找到,那么可能为未开始或者已完成,只查询未开始的 |
| | | List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery() |
| | | // 查出已完成的任务,用总任务数-已完成的就得到剩余事项 |
| | | List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery() |
| | | .processInstanceId(process.getProcessInstanceId()) |
| | | .taskDefinitionKey(userTask.getId()) |
| | | .includeIdentityLinks() |
| | | .orderByHistoricTaskInstanceStartTime() |
| | | .desc() |
| | | .finished() |
| | | .list(); |
| | | if (CollectionUtils.isEmpty(historicTasks)) { |
| | | num++; |
| | | } |
| | | } |
| | | } |
| | | return num; |
| | | long num = list.stream().map(HistoricTaskInstance::getTaskDefinitionId).distinct().count(); |
| | | |
| | | return totalNum - num; |
| | | } |
| | | |
| | | |