From 419fab9d84e6b2fbeb6d32b7d7253a6cd195200d Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 24 十二月 2025 17:26:48 +0800
Subject: [PATCH] 上报
---
business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java | 97 +++++++++++++++++++++++++++---------------------
1 files changed, 54 insertions(+), 43 deletions(-)
diff --git a/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java b/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
index 629823e..f375bc5 100644
--- a/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
@@ -695,8 +695,7 @@
boolean isAdmin = SecurityUtils.getLoginUser().getUser().isAdmin(); // 鏄惁绠$悊鍛�
List<String> userGroups = taskCommonService.getCurrentUserGroups(); // 褰撳墠鐢ㄦ埛鎵�灞炵粍
List<ProjectInfo> targetProjectList = new ArrayList<>();
- String queryProjectId = baseQuery.getId();
-
+ String queryProjectId = baseQuery.getProjectId();
if ("all".equals(queryProjectId) || StringUtils.isBlank(queryProjectId)){
// 鏌ヨ鍏ㄩ儴
@@ -710,7 +709,6 @@
// 椤圭洰涓嶅瓨鍦紝杩斿洖绌烘暟鎹�
return Result.ok().data(buildEmptyResultMap());
}
- //
targetProjectList.add(projectInfo);
} catch (NumberFormatException e) {
// 椤圭洰ID鏍煎紡閿欒锛岃繑鍥炵┖鏁版嵁
@@ -748,7 +746,7 @@
}
// 鍐嶅~鍏呮祦绋嬩俊鎭紙閮ㄧ讲ID銆佹祦绋嬪悕绉扮瓑锛�
for (ProjectProcess projectProcess : projectProcessList) {
- CheckPointVO checkPointVO = map.get(projectProcess.getProjectId());
+ CheckPointVO checkPointVO = map.get(projectProcess.getProjectId().toString()); // 淇锛歱rojectId鏄疞ong锛岄渶杞瓧绗︿覆
if (checkPointVO == null) {
continue; // 鏃犲尮閰嶉」鐩紝璺宠繃
}
@@ -769,7 +767,7 @@
checkPointVO.setProcessName(hisProcess.getProcessDefinitionName());
}
}
- map.put(projectProcess.getProjectId(), checkPointVO);
+ map.put(projectProcess.getProjectId().toString(), checkPointVO); // 淇锛歱rojectId杞瓧绗︿覆
}
Map<String, CheckPointVO> processInfoMap = map.values().stream()
.filter(Objects::nonNull)
@@ -803,53 +801,76 @@
return assignee == null || userId.toString().equals(assignee);
})
.collect(Collectors.toList());
+ // 浠诲姟鍘婚噸
Set<String> taskIdSet = new HashSet<>();
List<Task> distinctAllTaskList = new ArrayList<>();
for (Task task : allTaskList) {
if (!taskIdSet.contains(task.getId())) {
taskIdSet.add(task.getId());
distinctAllTaskList.add(task);
- //
}
}
- long distinctTotal = distinctAllTaskList.size();
- System.out.println("鍘婚噸鍚庢�绘暟锛�" + distinctTotal);
+ // ========== 淇鐐�1锛氭彁鍓嶆煡璇换鍔$姸鎬侊紝杩囨护宸插畬鎴愪换鍔★紙鍒嗛〉鍓嶆墽琛岋級 ==========
+ // 鏌ヨ浠诲姟鐘舵��
+ final HashMap<String, ProcessLog> taskInfoMap = new HashMap<>();
-
- int startIndex = (pageNum - 1) * pageSize;
- List<Task> pageTaskList = new ArrayList<>();
- if (startIndex < distinctAllTaskList.size()) {
- int endIndex = Math.min(startIndex + pageSize, distinctAllTaskList.size());
- pageTaskList = distinctAllTaskList.subList(startIndex, endIndex);
- }
-
-
- List<TaskInfoVo> taskInfoVoList = new ArrayList<>();
- //鏌ヨ浠诲姟鐘舵��
- List<String> taskIds = pageTaskList.stream().map(Task::getId).collect(Collectors.toList());
- HashMap<String,ProcessLog> taskInfoMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(taskIds)) {
- taskInfoMap = new LambdaQueryChainWrapper<>(processLogMapper)
+ List<String> allTaskIds = distinctAllTaskList.stream().map(Task::getId).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(allTaskIds)) {
+ // 2. 涓嶅啀閲嶆柊璧嬪�硷紝鑰屾槸鍏堟煡璇㈠嚭缁撴灉锛屽啀鏀惧叆宸插垵濮嬪寲鐨刴ap涓�
+ List<ProcessLog> processLogs = new LambdaQueryChainWrapper<>(processLogMapper)
.eq(ProcessLog::getDeleted, Boolean.FALSE)
- .in(ProcessLog::getTaskId, taskIds).list()
- .stream()
+ .in(ProcessLog::getTaskId, allTaskIds)
+ .list();
+
+ // 3. 濉厖鏁版嵁鍒皌askInfoMap锛屽紩鐢ㄦ湭鏀瑰彉
+ Map<String, ProcessLog> tempMap = processLogs.stream()
.filter(processLog -> processLog.getTaskId() != null && processLog.getGmtCreate() != null)
.collect(Collectors.toMap(
- // Key锛歵askId杞瓧绗︿覆
ProcessLog::getTaskId,
- // Value锛歅rocessLog瀵硅薄鏈韩
processLog -> processLog,
- // 鍐茬獊绛栫暐锛氫繚鐣檊mtCreate鏇存柊鐨勯偅鏉¤褰�
- (existing, replacement) -> {
- return replacement.getGmtCreate().after(existing.getGmtCreate())
- ? replacement : existing;
- },
+ (existing, replacement) -> replacement.getGmtCreate().after(existing.getGmtCreate()) ? replacement : existing,
HashMap::new
));
+ taskInfoMap.putAll(tempMap);
}
+ // 杩囨护宸插畬鎴愪换鍔★紝寰楀埌鏈夋晥浠诲姟鍒楄〃锛堝垎椤电殑渚濇嵁锛�
+ List<Task> validTaskList = distinctAllTaskList.stream()
+ .filter(task -> {
+ ProcessLog processLog = taskInfoMap.get(task.getId());
+ // 鏈煡璇㈠埌鏃ュ織 鈫� 寰呭畬鎴愶紱鏃ュ織鐘舵�佷笉鏄疐INISHED 鈫� 鏈夋晥
+ return processLog == null || !ProcessLogEventTypeEnum.FINISHED.getDesc().equals(processLog.getEventType().getDesc());
+ })
+ .collect(Collectors.toList());
+ // 鏈夋晥鏁版嵁鎬绘潯鏁�
+ long validTotal = validTaskList.size();
+ System.out.println("鏈夋晥浠诲姟鎬绘暟锛堟帓闄ゅ凡瀹屾垚锛夛細" + validTotal);
+
+ // ========== 淇鐐�2锛氬垎椤靛悎娉曟�ф牎楠� ==========
+ // 璁$畻鏈�澶ф湁鏁堥〉鐮�
+ int maxPageNum = (int) (validTotal % pageSize == 0 ? validTotal / pageSize : (validTotal / pageSize) + 1);
+ // 鑻ユ�绘潯鏁颁负0锛岀洿鎺ヨ繑鍥炵┖鏁版嵁
+ if (validTotal == 0) {
+ return Result.ok().data(new HashMap<String, Object>() {{
+ put("data", new ArrayList<>());
+ put("total", 0L);
+ }});
+ }
+ // 鑻ヨ姹傞〉鐮佽秴杩囨渶澶ч〉鐮侊紝榛樿杩斿洖鏈�鍚庝竴椤�
+ if (pageNum > maxPageNum) {
+ pageNum = maxPageNum;
+ }
+
+ // ========== 淇鐐�3锛氫紭鍖栧唴瀛樺垎椤� ==========
+ int startIndex = (pageNum - 1) * pageSize;
+ int endIndex = Math.min(startIndex + pageSize, validTaskList.size());
+ // 杞负鏂板垪琛紝閬垮厤subList瑙嗗浘鐨勯闄�
+ List<Task> pageTaskList = new ArrayList<>(validTaskList.subList(startIndex, endIndex));
+
+ // 缁勮杩斿洖VO
+ List<TaskInfoVo> taskInfoVoList = new ArrayList<>();
for (Task task : pageTaskList) {
TaskInfoVo taskVo = new TaskInfoVo();
taskVo.setId(task.getId());
@@ -870,17 +891,7 @@
taskInfoVoList.add(taskVo);
}
- //鎺掗櫎 宸插畬鎴愮殑
- taskInfoVoList = taskInfoVoList.stream().filter(taskInfoVo -> {
- if (ProcessLogEventTypeEnum.FINISHED.getDesc().equals(taskInfoVo.getTaskType())){
- return false;
- }
- return true;
- }).collect(Collectors.toList());
- HashMap<String, Object> resultMap = new HashMap<>();
- resultMap.put("data", taskInfoVoList);
- resultMap.put("total", distinctTotal);
- return Result.ok().data(resultMap);
+ return Result.ok().data(taskInfoVoList).total(validTotal);
}
--
Gitblit v1.8.0