liuyc 1 gadu atpakaļ
vecāks
revīzija
0a4e9412f3

+ 45 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -321,19 +321,60 @@ public class WbsTreePrivateController extends BladeController {
                                                             @RequestParam("projectId") String projectId) {
         List<WbsNodeTableVO> rs = wbsTreePrivateService.selectByNodeTable(parentId, wbsId, projectId);
         if (rs.size() > 0) {
+            /*表单对应的initTableIdMaps*/
+            Set<String> ids = rs.stream().map(WbsNodeTableVO::getId).collect(Collectors.toSet());
+            Map<Long, Long> initTableIdMaps = wbsTreeService.getBaseMapper().selectList(Wrappers.<WbsTree>lambdaQuery()
+                    .select(WbsTree::getInitTableId, WbsTree::getId)
+                    .in(WbsTree::getId, ids)).stream().collect(Collectors.toMap(WbsTree::getId, WbsTree::getInitTableId));
+
+            /*元素FidSet,统计数量*/
+            Set<Long> formElementFids = new HashSet<>();
+
+            /*initTabId赋值*/
             for (WbsNodeTableVO r : rs) {
                 if (StringUtil.isBlank(r.getHtmlUrl())) {
                     r.setIsLinkTable(1);
                 }
                 if (StringUtil.isBlank(r.getInitTableId())) {
-                    WbsTree wbsTree = wbsTreeService.getById(r.getId());
-                    if (wbsTree != null) {
-                        r.setInitTableId(com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotEmpty(wbsTree.getInitTableId()) ? wbsTree.getInitTableId().toString() : "");
+
+                    /*提出去,不for循环查询
+                    WbsTree wbsTree = wbsTreeService.getById(r.getId());*/
+
+                    Long initTabId = initTableIdMaps.getOrDefault(Long.parseLong(r.getId()), null);
+
+                    if (initTabId != null) {
+                        r.setInitTableId(String.valueOf(initTabId));
+
+                        formElementFids.add(initTabId);
+
+                        /*提出去,不for循环查询
                         r.setElementTotal(Math.toIntExact(wbsFormElementService.count(
-                                new LambdaQueryWrapper<WbsFormElement>().eq(WbsFormElement::getFId, r.getInitTableId()))));
+                                new LambdaQueryWrapper<WbsFormElement>().eq(WbsFormElement::getFId, r.getInitTableId()))));*/
+
+                    } else {
+                        r.setInitTableId("");
                     }
                 }
             }
+
+            if (formElementFids.size() > 0) {
+                /*查询所有相关的元素记录*/
+                List<WbsFormElement> wbsFormElements = wbsFormElementService.getBaseMapper().selectList(Wrappers.<WbsFormElement>lambdaQuery()
+                        .select(WbsFormElement::getFId)
+                        .in(WbsFormElement::getFId, formElementFids));
+
+                /*elementCountMap分组*/
+                Map<String, Integer> elementCountMap = wbsFormElements.stream()
+                        .collect(Collectors.groupingBy(WbsFormElement::getFId, Collectors.collectingAndThen(Collectors.counting(), Long::intValue)));
+
+                /*元素数量赋值*/
+                for (WbsNodeTableVO r : rs) {
+                    if (StringUtil.isNotBlank(r.getInitTableId())) {
+                        r.setElementTotal(elementCountMap.getOrDefault(r.getInitTableId(), 0));
+                    }
+                }
+            }
+
             return R.data(rs);
         }
         return R.fail(200, "未查询到数据");

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -81,7 +81,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
     //存储当前合同段contractId对应的合同段树
     private final Map<String, List<WbsTreeContractLazyVO>> localCacheNodes = new ConcurrentHashMap<>();
-    //存储当前合同段contractId_tableOwner对应的资料查询信息缓存
+    //存储当前合同段contractId_tableOwner对应的资料查询信息
     private final Map<String, List<WbsTreeContractLazyQueryInfoVO>> localCacheQueryInfos = new ConcurrentHashMap<>();
 
     @Override
@@ -491,7 +491,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         wbsTreeContract.getContractIdRelation());
             }
         } else {
-            //其他接口调用默认保持原始调用方式查询
+            //其他接口调用默认保持原始调用方式查询
             resultTabs = baseMapper.selectWbsTreeContractList(roleTableOwnerSets,
                     wbsTreeContract.getProjectId(), wbsTreeContract.getWbsId(),
                     wbsTreeContract.getContractId(), wbsTreeContract.getId(),