From 6e22eee1db782ccd72caecce9491f357e8cadf46 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 03 一月 2025 15:09:42 +0800 Subject: [PATCH] 剩余事项统计逻辑优化 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 48 +++++++++++++++++------------------------------- 1 files changed, 17 insertions(+), 31 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index 77e0ac6..0ba8055 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/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)) { - // 濡傛灉浠诲姟鍦ㄨ繍琛屾椂娌℃壘鍒帮紝閭d箞鍙兘涓烘湭寮�濮嬫垨鑰呭凡瀹屾垚锛屽彧鏌ヨ鏈紑濮嬬殑 - 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; } -- Gitblit v1.8.0