xiangpei
2025-01-03 6e22eee1db782ccd72caecce9491f357e8cadf46
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -104,7 +104,7 @@
                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() + ")");
                }
            }
        }
@@ -214,9 +214,8 @@
        // 状态统计
        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();
@@ -766,8 +765,9 @@
        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);
@@ -827,14 +827,12 @@
                    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;
    }
@@ -846,34 +844,22 @@
     * @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()
                        .processInstanceId(process.getProcessInstanceId())
                        .taskDefinitionKey(userTask.getId())
                        .includeIdentityLinks()
                        .orderByHistoricTaskInstanceStartTime()
                        .desc()
                        .list();
                if (CollectionUtils.isEmpty(historicTasks)) {
                    num++;
                }
            }
        }
        return num;
        // 查出已完成的任务,用总任务数-已完成的就得到剩余事项
        List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
                .processInstanceId(process.getProcessInstanceId())
                .finished()
                .list();
        long num = list.stream().map(HistoricTaskInstance::getTaskDefinitionId).distinct().count();
        return totalNum - num;
    }