소스 검색

fit:列表查询优化/核对表修复

zzw 1 개월 전
부모
커밋
3318fa6a12

+ 48 - 16
assistMg/src/main/java/com/hotent/project/manager/impl/CostProjectTaskManagerImpl.java

@@ -30,7 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.hotent.base.util.AuthenticationUtil.getCurrentUserMainOrgId;
 
@@ -165,32 +166,63 @@ public class CostProjectTaskManagerImpl extends BaseManagerImpl<CostProjectTaskD
         // 按创建时间倒序排列
         queryWrapper.orderByDesc(CostProjectTask::getCreateTime);
 
-        // 创建分页对象并执行查询
         Page<CostProjectTask> page = new Page<>(req.getPageNum(), req.getPageSize());
         IPage<CostProjectTask> result = costProjectTaskManager.page(page, queryWrapper);
 
-        // 填充根任务的子任务列表和流程信息
-        for (CostProjectTask rootTask : result.getRecords()) {
-            // 查询子任务列表
-            LambdaQueryWrapper<CostProjectTask> childQueryWrapper = new LambdaQueryWrapper<>();
-            childQueryWrapper.eq(CostProjectTask::getPid, rootTask.getId())
-                    .eq(CostProjectTask::getIsDeleted, "0")
-                    .orderByAsc(CostProjectTask::getOrderNum);
+        List<CostProjectTask> rootList = result.getRecords();
+        if (rootList == null || rootList.isEmpty()) {
+            return result;
+        }
+        List<String> rootIds = rootList.stream()
+                .map(CostProjectTask::getId)
+                .collect(Collectors.toList());
+        List<CostProjectTask> allChildTasks = costProjectTaskManager.list(
+                new LambdaQueryWrapper<CostProjectTask>()
+                        .in(CostProjectTask::getPid, rootIds)
+                        .eq(CostProjectTask::getIsDeleted, "0")
+                        .orderByAsc(CostProjectTask::getOrderNum)
+        );
+        Map<String, List<CostProjectTask>> childGroup =
+                allChildTasks.stream()
+                        .collect(Collectors.groupingBy(CostProjectTask::getPid));
+        Set<String> allProjectIds = new HashSet<>();
+        rootList.forEach(t -> allProjectIds.add(t.getProjectId()));
+        allChildTasks.forEach(t -> allProjectIds.add(t.getProjectId()));
+        List<CostProjectApproval> approvalList = costProjectApprovalManager.list(
+                new LambdaQueryWrapper<CostProjectApproval>()
+                        .in(CostProjectApproval::getProjectId, allProjectIds)
+        );
+        Map<String, CostProjectApproval> approvalMap =
+                approvalList.stream().collect(
+                        Collectors.toMap(CostProjectApproval::getProjectId, v -> v)
+                );
 
-            List<CostProjectTask> childTasks = costProjectTaskManager.list(childQueryWrapper);
+        for (CostProjectTask rootTask : rootList) {
+            // 根任务状态
+            rootTask.setStatusName(TaskStatusConstant.getStatusNameByCode(rootTask.getStatus()));
+            rootTask.setCurrentNodeName(NodeConstant.getNodeValueByKey(rootTask.getCurrentNode()));
+            // 设置目录
+            CostProjectApproval rootDetail = approvalMap.get(rootTask.getProjectId());
+            if (rootDetail != null) {
+                rootTask.setCatalogId(rootDetail.getCatalogId());
+            }
+            // 子任务
+            List<CostProjectTask> childTasks =
+                    childGroup.getOrDefault(rootTask.getId(), Collections.emptyList());
             for (CostProjectTask childTask : childTasks) {
                 childTask.setStatusName(TaskStatusConstant.getStatusNameByCode(childTask.getStatus()));
-                CostProjectApprovalDetailResp detail = costProjectApprovalManager.getDetail(childTask.getProjectId());
-                childTask.setCatalogId(detail.getCatalogId());
+                CostProjectApproval detail = approvalMap.get(childTask.getProjectId());
+                if (detail != null) {
+                    childTask.setCatalogId(detail.getCatalogId());
+                }
             }
-            rootTask.setStatusName(TaskStatusConstant.getStatusNameByCode(rootTask.getStatus()));
             rootTask.setChildTasks(childTasks);
-            rootTask.setCurrentNodeName(NodeConstant.getNodeValueByKey(rootTask.getCurrentNode()));
-            CostProjectApprovalDetailResp detail = costProjectApprovalManager.getDetail(rootTask.getProjectId());
-            rootTask.setCatalogId(detail.getCatalogId());
         }
 
         return result;
+
+
+
     }
 
     @Override

+ 5 - 10
assistMg/src/main/java/com/hotent/surveyinfo/controller/CostSurveyTemplateController.java

@@ -33,10 +33,7 @@ import com.hotent.base.controller.BaseController;
 import javax.servlet.http.HttpServletResponse;
 import java.net.URLEncoder;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -325,6 +322,8 @@ public class CostSurveyTemplateController extends BaseController<CostSurveyTempl
 					// 复制数据项属性
 					String itemid=UUID.randomUUID().toString();
 					verifyItem .setId(itemid);
+					verifyItem.setRowid(item.getRowid());
+					verifyItem.setParentid(item.getParentid());
 					verifyItem.setRkey(item.getRkey());
 					verifyItem.setRvalue(item.getRvalue());
 					verifyItem.setCellCode(item.getCellCode());
@@ -332,15 +331,10 @@ public class CostSurveyTemplateController extends BaseController<CostSurveyTempl
 					verifyItem.setUnit(item.getUnit());
 					verifyItem.setOrderNum(item.getOrderNum());
 					verifyItem.setJsonStr(item.getJsonStr());
-
 					verifyItem.setCreateBy(user.getAccount());
-
-					verifyItem.setCreateTime( LocalDateTime.now());
-
+					verifyItem.setCreateTime(LocalDateTime.now());
 					verifyItem.setProjectId(item.getProjectId());
 					verifyItem.setOrderText(item.getOrderText());
-
-					// 设置关联关系
 					verifyItem.setSurveyTemplateId(ttemplateId);
 					verifyItem.setVersionId(currentVersion.getId());
 					verifyItem.setHeadersId(item.getHeadersId());
@@ -348,6 +342,7 @@ public class CostSurveyTemplateController extends BaseController<CostSurveyTempl
 					// 保存成本核定数据项
 					costVerifyTemplateItemsManager.createOrUpdate(verifyItem);
 				}
+
 			}
 		}