|
@@ -96,32 +96,37 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
@Override
|
|
@Override
|
|
public List<WbsTreeVO2> tree(String wbsId, String tenantId, String type) {
|
|
public List<WbsTreeVO2> tree(String wbsId, String tenantId, String type) {
|
|
|
|
|
|
- //方法1-数据量过大时响应格式错误
|
|
|
|
|
|
+ //方法1-数据量过大响应格式错误
|
|
/*return ForestNodeMerger.merge(baseMapper.tree(wbsId, tenantId, type));*/
|
|
/*return ForestNodeMerger.merge(baseMapper.tree(wbsId, tenantId, type));*/
|
|
|
|
|
|
//方法2
|
|
//方法2
|
|
List<WbsTreeVO2> wbsTreeVO2s = baseMapper.tree2(wbsId, tenantId, type);
|
|
List<WbsTreeVO2> wbsTreeVO2s = baseMapper.tree2(wbsId, tenantId, type);
|
|
- if (wbsTreeVO2s != null && wbsTreeVO2s.size() > 0) {
|
|
|
|
|
|
+
|
|
|
|
+ //构建
|
|
|
|
+ if (wbsTreeVO2s.size() > 0) {
|
|
return buildWbsTreeByStream(wbsTreeVO2s);
|
|
return buildWbsTreeByStream(wbsTreeVO2s);
|
|
}
|
|
}
|
|
|
|
+
|
|
return wbsTreeVO2s;
|
|
return wbsTreeVO2s;
|
|
}
|
|
}
|
|
|
|
|
|
private List<WbsTreeVO2> buildWbsTreeByStream(List<WbsTreeVO2> wbsTreeVO2s) {
|
|
private List<WbsTreeVO2> buildWbsTreeByStream(List<WbsTreeVO2> wbsTreeVO2s) {
|
|
- //构建数据
|
|
|
|
|
|
+ //根节点
|
|
List<WbsTreeVO2> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
|
|
List<WbsTreeVO2> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
|
|
- //根节点分组
|
|
|
|
|
|
+ //子节点分组
|
|
Map<Long, List<WbsTreeVO2>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeVO2::getParentId));
|
|
Map<Long, List<WbsTreeVO2>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeVO2::getParentId));
|
|
this.recursionFnTree(list, map);
|
|
this.recursionFnTree(list, map);
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
private void recursionFnTree(List<WbsTreeVO2> list, Map<Long, List<WbsTreeVO2>> map) {
|
|
private void recursionFnTree(List<WbsTreeVO2> list, Map<Long, List<WbsTreeVO2>> map) {
|
|
- //递归
|
|
|
|
for (WbsTreeVO2 wbsTreeVO2 : list) {
|
|
for (WbsTreeVO2 wbsTreeVO2 : list) {
|
|
List<WbsTreeVO2> childrenList = map.get(wbsTreeVO2.getId());
|
|
List<WbsTreeVO2> childrenList = map.get(wbsTreeVO2.getId());
|
|
wbsTreeVO2.setChildren(childrenList);
|
|
wbsTreeVO2.setChildren(childrenList);
|
|
if (childrenList != null && childrenList.size() > 0) {
|
|
if (childrenList != null && childrenList.size() > 0) {
|
|
|
|
+ //存在子级
|
|
|
|
+ wbsTreeVO2.setHasChildren(true);
|
|
|
|
+ //递归查询
|
|
recursionFnTree(childrenList, map);
|
|
recursionFnTree(childrenList, map);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -662,8 +667,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
if (!tree.getAncestors().equals(wbsTreeZi.getAncestors())) {
|
|
if (!tree.getAncestors().equals(wbsTreeZi.getAncestors())) {
|
|
wbsTrees.add(tree);
|
|
wbsTrees.add(tree);
|
|
break;
|
|
break;
|
|
- } else if (!tree.getParentId().equals(wbsTreeZi.getParentId())) {
|
|
|
|
- //TODO
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -823,17 +826,17 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
//获取公有wbs树新增的元素表
|
|
//获取公有wbs树新增的元素表
|
|
List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
|
|
List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
|
|
List<WbsTree> wbsTreeListAll = new ArrayList<>();
|
|
List<WbsTree> wbsTreeListAll = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ //获取公有wbs树所有的元素表
|
|
if (allNodeList != null) {
|
|
if (allNodeList != null) {
|
|
- allNodeList.stream().forEach(wbsTree -> {
|
|
|
|
- List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
|
- .eq(WbsTree::getWbsId, pawDTO.getWbsId())
|
|
|
|
- .eq(WbsTree::getType, 2)
|
|
|
|
- .eq(WbsTree::getParentId, wbsTree.getId())
|
|
|
|
- );
|
|
|
|
- wbsTreeListAll.addAll(wbsTreeList);
|
|
|
|
- });
|
|
|
|
|
|
+ List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
|
+ .eq(WbsTree::getWbsId, pawDTO.getWbsId())
|
|
|
|
+ .eq(WbsTree::getType, 2)
|
|
|
|
+ );
|
|
|
|
+ wbsTreeListAll.addAll(wbsTreeList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //公有所以表的id
|
|
List<Long> collect1 = wbsTreeListAll.stream().map(WbsTree::getId).collect(Collectors.toList());
|
|
List<Long> collect1 = wbsTreeListAll.stream().map(WbsTree::getId).collect(Collectors.toList());
|
|
List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
|
|
List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
|
@@ -844,8 +847,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
.eq(WbsTreePrivate::getType, 2)
|
|
.eq(WbsTreePrivate::getType, 2)
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ //私有下元素表id
|
|
List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
|
|
List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
+
|
|
List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
|
|
List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
|
|
|
|
|
|
if (diffRent1.size() == 0) {
|
|
if (diffRent1.size() == 0) {
|
|
@@ -874,13 +879,14 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
|
|
.eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
|
|
.eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
|
|
|
|
|
|
- //获取所私有引用项目的wbs树的全部表单
|
|
|
|
|
|
+ //获取所私有引用项目的wbs树的全部元素表
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
.eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
.eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
|
|
.eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
.eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
.eq(WbsTreePrivate::getType, 2)
|
|
.eq(WbsTreePrivate::getType, 2)
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ //当前新增表单的id
|
|
List<Long> collect1 = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
List<Long> collect1 = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
|
|
List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
|
@@ -891,12 +897,15 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
.eq(WbsTreePrivate::getType, 2)
|
|
.eq(WbsTreePrivate::getType, 2)
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ //当前存在的表单的id
|
|
List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
|
|
List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
|
|
List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
+
|
|
List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
|
|
List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
|
|
|
|
|
|
if (diffRent1.size() == 0) {
|
|
if (diffRent1.size() == 0) {
|
|
throw new ServiceException("未检测到引用的私有wbs树下有新增的元素表");
|
|
throw new ServiceException("未检测到引用的私有wbs树下有新增的元素表");
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
if (collect2.size() > collect4.size()) {
|
|
if (collect2.size() > collect4.size()) {
|
|
//私有同步元素表
|
|
//私有同步元素表
|
|
@@ -939,39 +948,53 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
if (pawDTO.getReferenceType().equals("public")) {
|
|
if (pawDTO.getReferenceType().equals("public")) {
|
|
//引用公有
|
|
//引用公有
|
|
//查询所有公共节点+表 diffRent=新增的节点id
|
|
//查询所有公共节点+表 diffRent=新增的节点id
|
|
- List<List<WbsTree>> addListData = new ArrayList<>();
|
|
|
|
|
|
+ List<WbsTree> addListData = new ArrayList<>();
|
|
|
|
+ //查询出当前wbs树下所有节点+表信息
|
|
|
|
+ List<WbsTree> treesAll = baseMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, pawDTO.getWbsId()));
|
|
|
|
+
|
|
|
|
+ for (WbsTree wbsTree : treesAll) {
|
|
|
|
+ for (String id : diffRent) {
|
|
|
|
+ if (Long.parseLong(id) == (wbsTree.getId())) {
|
|
|
|
+ //节点
|
|
|
|
+ addListData.add(wbsTree);
|
|
|
|
+ } else if (Long.parseLong(id) == (wbsTree.getParentId()) && wbsTree.getType() == 2) {
|
|
|
|
+ //表
|
|
|
|
+ addListData.add(wbsTree);
|
|
|
|
+ }
|
|
|
|
|
|
- for (String id : diffRent) {
|
|
|
|
- List<WbsTree> treeAndTable = baseMapper.selectNodeAndTable(Long.valueOf(id));
|
|
|
|
- if (treeAndTable != null) {
|
|
|
|
- addListData.add(treeAndTable);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- addListData.stream().forEach(trees -> {
|
|
|
|
- trees.stream().forEach(tree -> {
|
|
|
|
- WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
|
|
|
|
- insertData.add(wbsTreePrivate2);
|
|
|
|
- });
|
|
|
|
|
|
+ addListData.stream().forEach(tree -> {
|
|
|
|
+ WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
|
|
|
|
+ insertData.add(wbsTreePrivate2);
|
|
});
|
|
});
|
|
|
|
|
|
} else if (pawDTO.getReferenceType().equals("private")) {
|
|
} else if (pawDTO.getReferenceType().equals("private")) {
|
|
//引用私有
|
|
//引用私有
|
|
//查询所有私有节点+表 diffRent=新增的节点id
|
|
//查询所有私有节点+表 diffRent=新增的节点id
|
|
- List<List<WbsTreePrivate>> addListData = new ArrayList<>();
|
|
|
|
-
|
|
|
|
- diffRent.stream().forEach(id -> {
|
|
|
|
- List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
|
- if (wbsTreePrivates != null) {
|
|
|
|
- addListData.add(wbsTreePrivates);
|
|
|
|
|
|
+ List<WbsTreePrivate> addListData = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ //查询出当前wbs树下所有节点+表信息
|
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable(null, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
|
+
|
|
|
|
+ for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
|
|
|
|
+ for (String id : diffRent) {
|
|
|
|
+ if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
|
|
|
|
+ //节点
|
|
|
|
+ addListData.add(wbsTreePrivate);
|
|
|
|
+ } else if (Long.parseLong(id) == (wbsTreePrivate.getParentId()) && wbsTreePrivate.getType() == 2) {
|
|
|
|
+ //表
|
|
|
|
+ addListData.add(wbsTreePrivate);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ addListData.stream().forEach(tree -> {
|
|
|
|
+
|
|
|
|
+ WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(tree, pawDTO);
|
|
|
|
+ insertData2.add(wbsTreePrivate2);
|
|
|
|
|
|
- addListData.stream().forEach(trees -> {
|
|
|
|
- trees.stream().forEach(tree -> {
|
|
|
|
- WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(tree, pawDTO);
|
|
|
|
- insertData2.add(wbsTreePrivate2);
|
|
|
|
- });
|
|
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1192,7 +1215,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
|
|
|
|
//新增元素
|
|
//新增元素
|
|
- boolean b2 = wbsFormElementService.saveBatch(elementList);
|
|
|
|
|
|
+ boolean b2 = wbsFormElementService.saveBatch(elementList, 10000);
|
|
|
|
|
|
//找到当前元素表中所有元素
|
|
//找到当前元素表中所有元素
|
|
List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(String.valueOf(formElementDTO.getId()));
|
|
List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(String.valueOf(formElementDTO.getId()));
|