Explorar el Código

公式相关:节点同步bug

yangyj hace 2 años
padre
commit
b3954f8ffb

+ 16 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -937,7 +937,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 Map<String, Map<String, Object>> distMap = distListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m, mapBinaryOperator));
                 /*比较的结果*/
                 Map<String, Map<String, Object>> updateMap = new HashMap<>();
-                Map<String, Map<String, Object>> insertMap = new HashMap<>();
+                List<Map<String, Object>> insertMapList = new ArrayList<>();
                 sourceMap.forEach((k, v) -> {
                     if (distMap.containsKey(k)) {
                         String s = Func.toStr(v.get("v"));
@@ -954,7 +954,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         }
                     } else {
                         /*假如对应节点不存在,则把节点内容添加到待新增列表*/
-                        insertMap.put(v.get("privateId").toString(), v);
+                      //  insertMap.put(v.get("privateId").toString() + v.get("k"), v);
+                        insertMapList.add(v);
                     }
                 });
                 List<WbsParam> updateList;
@@ -968,15 +969,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                 }
                 List<WbsParam> insertList = new ArrayList<>();
-                if (!insertMap.isEmpty()) {
-                    List<WbsTreePrivate> targetList = Optional.ofNullable(this.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, projectId).in(WbsTreePrivate::getId, insertMap.values().stream().map(m -> m.get("privateId")).collect(Collectors.toList())))).orElse(new ArrayList<>());
+                if (!insertMapList.isEmpty()) {
+                    List<WbsTreePrivate> targetList = Optional.ofNullable(this.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, projectId).in(WbsTreePrivate::getId, insertMapList.stream().map(m -> m.get("privateId")).collect(Collectors.toList())))).orElse(new ArrayList<>());
+                     Map<String,List<Map<String,Object>>>insertGroup =insertMapList.stream().collect(Collectors.groupingBy(m->m.get("privateId").toString()));
                     targetList.forEach(e -> {
-                        Map<String, Object> kmp = insertMap.get(e.getId().toString());
-                        if (kmp != null) {
-                            WbsParam one = BeanUtil.toBean(kmp, WbsParam.class);
-                            one.setNodeId(e.getPKeyId());
-                            insertList.add(one);
-                        }
+                       List<Map<String, Object>> nodeParamList = insertGroup.get(e.getId().toString());
+                       if(Func.isNotEmpty(nodeParamList)){
+                             nodeParamList.forEach(kmp->{
+                                 if (kmp != null) {
+                                     WbsParam one = BeanUtil.toBean(kmp, WbsParam.class);
+                                     one.setNodeId(e.getPKeyId());
+                                     insertList.add(one);
+                                 }
+                             });
+                       }
                     });
                     if (!insertList.isEmpty()) {
                         insertList.forEach(i -> i.setId(SnowFlakeUtil.getId()));