|
@@ -55,7 +55,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
private final BladeRedis bladeRedis;
|
|
private final BladeRedis bladeRedis;
|
|
private final WbsParamServiceImpl wbsParamService;
|
|
private final WbsParamServiceImpl wbsParamService;
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree) {
|
|
public IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree) {
|
|
return page.setRecords(baseMapper.selectWbsTreePage(page, wbsTree));
|
|
return page.setRecords(baseMapper.selectWbsTreePage(page, wbsTree));
|
|
@@ -78,24 +77,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return wbsTreeVO2s;
|
|
return wbsTreeVO2s;
|
|
}
|
|
}
|
|
|
|
|
|
- private List<WbsTreeVO2> buildWbsTreeByStream(List<WbsTreeVO2> wbsTreeVO2s) {
|
|
|
|
- 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));
|
|
|
|
- this.recursionFnTree(list, map);
|
|
|
|
- return list;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private void recursionFnTree(List<WbsTreeVO2> list, Map<Long, List<WbsTreeVO2>> map) {
|
|
|
|
- for (WbsTreeVO2 wbsTreeVO2 : list) {
|
|
|
|
- List<WbsTreeVO2> childrenList = map.get(wbsTreeVO2.getId());
|
|
|
|
- wbsTreeVO2.setChildren(childrenList);
|
|
|
|
- if (childrenList != null && childrenList.size() > 0) {
|
|
|
|
- wbsTreeVO2.setHasChildren(true);
|
|
|
|
- recursionFnTree(childrenList, map);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public boolean submit(WbsTree wbsTree) {
|
|
public boolean submit(WbsTree wbsTree) {
|
|
if (Func.isEmpty(wbsTree.getParentId())) {
|
|
if (Func.isEmpty(wbsTree.getParentId())) {
|
|
@@ -307,14 +288,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
- private Boolean initTable(String tableName) {
|
|
|
|
- Integer row = baseMapper.createTable(tableName);
|
|
|
|
- if (row >= 0) {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public List<WbsNodeTableVO> selectByNodeTable(String id) {
|
|
public List<WbsNodeTableVO> selectByNodeTable(String id) {
|
|
return wbsTreeMapper.selectByNodeTable(id);
|
|
return wbsTreeMapper.selectByNodeTable(id);
|
|
@@ -357,19 +330,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return wbsFormElements;
|
|
return wbsFormElements;
|
|
}
|
|
}
|
|
|
|
|
|
- private static String getEscapeChar(String str) {
|
|
|
|
- if (StringUtils.isBlank(str)) {
|
|
|
|
- return str;
|
|
|
|
- }
|
|
|
|
- if (str.contains(">")) {
|
|
|
|
- return str.replace(">", ">");
|
|
|
|
- }
|
|
|
|
- if (str.contains("<")) {
|
|
|
|
- return str.replace("<", "<");
|
|
|
|
- }
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
public boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
@@ -396,119 +356,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private boolean importExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
|
|
|
|
- List<WbsTree> allNodeData = new ArrayList<>();
|
|
|
|
- int sortNumber = 1;
|
|
|
|
- for (Map<String, String> map : result) {
|
|
|
|
- for (Map.Entry<String, String> maps : map.entrySet()) {
|
|
|
|
- if (StringUtils.isNotEmpty(maps.getValue())) {
|
|
|
|
- //初始化节点参数
|
|
|
|
- WbsTree wbsTreeZi = new WbsTree();
|
|
|
|
- wbsTreeZi.setId(SnowFlakeUtil.getId());
|
|
|
|
- wbsTreeZi.setTenantId(AuthUtil.getTenantId());
|
|
|
|
- wbsTreeZi.setNodeName(maps.getValue());
|
|
|
|
- wbsTreeZi.setFullName(maps.getValue());
|
|
|
|
- wbsTreeZi.setNodeType(Integer.valueOf(maps.getKey()));
|
|
|
|
- wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
|
|
|
|
- wbsTreeZi.setParentId(wbsTreeFu.getParentId());
|
|
|
|
- wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
|
|
|
|
- wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
|
|
|
|
- wbsTreeZi.setMajorDataType(0);
|
|
|
|
- //内页资料
|
|
|
|
- if (wbsTreeZi.getNodeType() == 6 && !(("中间交工证书").equals(wbsTreeZi.getNodeName()) || ("分项工程质量检验评定表").equals(wbsTreeZi.getNodeName()) || ("分项工程开工报告").equals(wbsTreeZi.getNodeName()))) {
|
|
|
|
- wbsTreeZi.setMajorDataType(4);
|
|
|
|
- } else if (wbsTreeZi.getNodeType() == 5 || wbsTreeZi.getNodeType() == 4 || wbsTreeZi.getNodeType() == 3 || wbsTreeZi.getNodeType() == 2) {
|
|
|
|
- if (DiffListUtil.getContains(wbsTreeZi.getNodeName(), "开工报告")) {
|
|
|
|
- wbsTreeZi.setMajorDataType(1);
|
|
|
|
- } else if (DiffListUtil.getContains(wbsTreeZi.getNodeName(), "质量评定")) {
|
|
|
|
- wbsTreeZi.setMajorDataType(2);
|
|
|
|
- } else if (DiffListUtil.getContains(wbsTreeZi.getNodeName(), "中间交工")) {
|
|
|
|
- wbsTreeZi.setMajorDataType(3);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //构建参数
|
|
|
|
- WbsTree wbsTree = buildTreeNode(wbsTreeZi, allNodeData);
|
|
|
|
-
|
|
|
|
- if (wbsTree == null) {
|
|
|
|
- //构建成功,后置赋值
|
|
|
|
- Long id = wbsTreeZi.getId();
|
|
|
|
- StringBuilder stringBuffer = new StringBuilder();
|
|
|
|
- StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
|
|
|
|
- String ancestors = wbsTreeZi.getAncestors() + appendStr;
|
|
|
|
-
|
|
|
|
- wbsTreeZi.setAncestors(ancestors);
|
|
|
|
-
|
|
|
|
- wbsTreeFu.setParentId(id);
|
|
|
|
- wbsTreeFu.setAncestors(ancestors);
|
|
|
|
-
|
|
|
|
- wbsTreeZi.setSort(sortNumber);
|
|
|
|
- sortNumber++;
|
|
|
|
-
|
|
|
|
- //返回结果集
|
|
|
|
- allNodeData.add(wbsTreeZi);
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
- //相同节点参数跳过
|
|
|
|
- wbsTreeFu.setParentId(wbsTree.getId());
|
|
|
|
- wbsTreeFu.setAncestors(wbsTree.getAncestors());
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return this.saveBatch(allNodeData, 1000) && baseMapper.updateById(wbsTree1) > 0;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private WbsTree buildTreeNode(WbsTree wbsTreeZi, List<WbsTree> allNodeData) {
|
|
|
|
- List<WbsTree> wbsTrees = new ArrayList<>();
|
|
|
|
- //判重
|
|
|
|
- for (WbsTree tree : allNodeData) {
|
|
|
|
- if (tree.getNodeName().equals(wbsTreeZi.getNodeName())
|
|
|
|
- && tree.getWbsId().equals(wbsTreeZi.getWbsId())
|
|
|
|
- && tree.getNodeType().equals(wbsTreeZi.getNodeType())
|
|
|
|
- && tree.getProjectNodeId().equals(wbsTreeZi.getProjectNodeId())) {
|
|
|
|
- //判断上级节点不同,当前节点名相同的tree选择问题
|
|
|
|
- //例如:第X跨的上级有上部构造现场浇筑、上部构造预制和安装,导致下方新增重复节点判断时找到的是前一个 TODO
|
|
|
|
- if (!tree.getAncestors().equals(wbsTreeZi.getAncestors())) {
|
|
|
|
- wbsTrees.add(tree);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- WbsTree wbsTree = null;
|
|
|
|
- //不重复 直接新增
|
|
|
|
- if (wbsTrees.size() <= 0) {
|
|
|
|
- wbsTreeZi.setStatus(1);
|
|
|
|
- wbsTreeZi.setType(1);
|
|
|
|
- if (wbsTreeZi.getNodeType() == 6) {
|
|
|
|
- wbsTreeZi.setIsConcrete(0);
|
|
|
|
- wbsTreeZi.setIsExpernode(0);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- //重复 判断是否为同一父节点,相同父节点跳过,不同新增
|
|
|
|
- for (WbsTree tree : wbsTrees) {
|
|
|
|
- if (wbsTreeZi.getNodeType() == 2 || wbsTreeZi.getNodeType() == 3
|
|
|
|
- || wbsTreeZi.getNodeType() == 4 || wbsTreeZi.getNodeType() == 5 || wbsTreeZi.getNodeType() == 6) {
|
|
|
|
- if (!wbsTreeZi.getParentId().equals(tree.getParentId()) && wbsTreeZi.getNodeName().equals(tree.getNodeName())) {
|
|
|
|
- wbsTreeZi.setStatus(1);
|
|
|
|
- wbsTreeZi.setType(1);
|
|
|
|
- if (wbsTreeZi.getNodeType() == 6) {
|
|
|
|
- wbsTreeZi.setIsConcrete(0);
|
|
|
|
- wbsTreeZi.setIsExpernode(0);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- wbsTree = tree;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return wbsTree;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public int deleteBatchByProjectNodeId(Long projectNodeId) {
|
|
public int deleteBatchByProjectNodeId(Long projectNodeId) {
|
|
return baseMapper.deleteBatchProjectNodeId(projectNodeId);
|
|
return baseMapper.deleteBatchProjectNodeId(projectNodeId);
|
|
@@ -529,7 +376,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<Map> findProjectAndContractList(Long userId) {
|
|
|
|
|
|
+ public List<Map<String,Object>> findProjectAndContractList(Long userId) {
|
|
List<SaveUserInfoByProjectVO2> list = baseMapper.selectListByUserId(userId);
|
|
List<SaveUserInfoByProjectVO2> list = baseMapper.selectListByUserId(userId);
|
|
Map<String, List<SaveUserInfoByProjectVO2>> collect = list.stream().collect(Collectors.groupingBy(SaveUserInfoByProjectVO2::getProjectName));
|
|
Map<String, List<SaveUserInfoByProjectVO2>> collect = list.stream().collect(Collectors.groupingBy(SaveUserInfoByProjectVO2::getProjectName));
|
|
return collect.entrySet().stream().map(entity -> {
|
|
return collect.entrySet().stream().map(entity -> {
|
|
@@ -572,11 +419,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
- private boolean updateData(String ancestors, Long id) {
|
|
|
|
- Integer row = baseMapper.updateById2(ancestors, id);
|
|
|
|
- return row > 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
//@AvoidRepeatableCommit
|
|
//@AvoidRepeatableCommit
|
|
@@ -890,7 +732,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public WbsTreeAllListVO findWbsTreeList(Integer type) {
|
|
public WbsTreeAllListVO findWbsTreeList(Integer type) {
|
|
WbsTreeAllListVO wbsTreeAllListVO = new WbsTreeAllListVO();
|
|
WbsTreeAllListVO wbsTreeAllListVO = new WbsTreeAllListVO();
|
|
@@ -989,4 +830,161 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private boolean updateData(String ancestors, Long id) {
|
|
|
|
+ Integer row = baseMapper.updateById2(ancestors, id);
|
|
|
|
+ return row > 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean importExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
|
|
|
|
+ List<WbsTree> allNodeData = new ArrayList<>();
|
|
|
|
+ int sortNumber = 1;
|
|
|
|
+ for (Map<String, String> map : result) {
|
|
|
|
+ for (Map.Entry<String, String> maps : map.entrySet()) {
|
|
|
|
+ if (StringUtils.isNotEmpty(maps.getValue())) {
|
|
|
|
+ //初始化节点参数
|
|
|
|
+ WbsTree wbsTreeZi = new WbsTree();
|
|
|
|
+ wbsTreeZi.setId(SnowFlakeUtil.getId());
|
|
|
|
+ wbsTreeZi.setTenantId(AuthUtil.getTenantId());
|
|
|
|
+ wbsTreeZi.setNodeName(maps.getValue());
|
|
|
|
+ wbsTreeZi.setFullName(maps.getValue());
|
|
|
|
+ wbsTreeZi.setNodeType(Integer.valueOf(maps.getKey()));
|
|
|
|
+ wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
|
|
|
|
+ wbsTreeZi.setParentId(wbsTreeFu.getParentId());
|
|
|
|
+ wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
|
|
|
|
+ wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
|
|
|
|
+ wbsTreeZi.setMajorDataType(0);
|
|
|
|
+ //内页资料
|
|
|
|
+ if (wbsTreeZi.getNodeType() == 6 && !(("中间交工证书").equals(wbsTreeZi.getNodeName()) || ("分项工程质量检验评定表").equals(wbsTreeZi.getNodeName()) || ("分项工程开工报告").equals(wbsTreeZi.getNodeName()))) {
|
|
|
|
+ wbsTreeZi.setMajorDataType(4);
|
|
|
|
+ } else if (wbsTreeZi.getNodeType() == 5 || wbsTreeZi.getNodeType() == 4 || wbsTreeZi.getNodeType() == 3 || wbsTreeZi.getNodeType() == 2) {
|
|
|
|
+ if (DiffListUtil.getContains(wbsTreeZi.getNodeName(), "开工报告")) {
|
|
|
|
+ wbsTreeZi.setMajorDataType(1);
|
|
|
|
+ } else if (DiffListUtil.getContains(wbsTreeZi.getNodeName(), "质量评定")) {
|
|
|
|
+ wbsTreeZi.setMajorDataType(2);
|
|
|
|
+ } else if (DiffListUtil.getContains(wbsTreeZi.getNodeName(), "中间交工")) {
|
|
|
|
+ wbsTreeZi.setMajorDataType(3);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //构建参数
|
|
|
|
+ WbsTree wbsTree = buildTreeNode(wbsTreeZi, allNodeData);
|
|
|
|
+
|
|
|
|
+ if (wbsTree == null) {
|
|
|
|
+ //构建成功,后置赋值
|
|
|
|
+ Long id = wbsTreeZi.getId();
|
|
|
|
+ StringBuilder stringBuffer = new StringBuilder();
|
|
|
|
+ StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
|
|
|
|
+ String ancestors = wbsTreeZi.getAncestors() + appendStr;
|
|
|
|
+
|
|
|
|
+ wbsTreeZi.setAncestors(ancestors);
|
|
|
|
+
|
|
|
|
+ wbsTreeFu.setParentId(id);
|
|
|
|
+ wbsTreeFu.setAncestors(ancestors);
|
|
|
|
+
|
|
|
|
+ wbsTreeZi.setSort(sortNumber);
|
|
|
|
+ sortNumber++;
|
|
|
|
+
|
|
|
|
+ //返回结果集
|
|
|
|
+ allNodeData.add(wbsTreeZi);
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ //相同节点参数跳过
|
|
|
|
+ wbsTreeFu.setParentId(wbsTree.getId());
|
|
|
|
+ wbsTreeFu.setAncestors(wbsTree.getAncestors());
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return this.saveBatch(allNodeData, 1000) && baseMapper.updateById(wbsTree1) > 0;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private WbsTree buildTreeNode(WbsTree wbsTreeZi, List<WbsTree> allNodeData) {
|
|
|
|
+ List<WbsTree> wbsTrees = new ArrayList<>();
|
|
|
|
+ //判重
|
|
|
|
+ for (WbsTree tree : allNodeData) {
|
|
|
|
+ if (tree.getNodeName().equals(wbsTreeZi.getNodeName())
|
|
|
|
+ && tree.getWbsId().equals(wbsTreeZi.getWbsId())
|
|
|
|
+ && tree.getNodeType().equals(wbsTreeZi.getNodeType())
|
|
|
|
+ && tree.getProjectNodeId().equals(wbsTreeZi.getProjectNodeId())) {
|
|
|
|
+ //判断上级节点不同,当前节点名相同的tree选择问题
|
|
|
|
+ //例如:第X跨的上级有上部构造现场浇筑、上部构造预制和安装,导致下方新增重复节点判断时找到的是前一个 TODO
|
|
|
|
+ if (!tree.getAncestors().equals(wbsTreeZi.getAncestors())) {
|
|
|
|
+ wbsTrees.add(tree);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ WbsTree wbsTree = null;
|
|
|
|
+ //不重复 直接新增
|
|
|
|
+ if (wbsTrees.size() <= 0) {
|
|
|
|
+ wbsTreeZi.setStatus(1);
|
|
|
|
+ wbsTreeZi.setType(1);
|
|
|
|
+ if (wbsTreeZi.getNodeType() == 6) {
|
|
|
|
+ wbsTreeZi.setIsConcrete(0);
|
|
|
|
+ wbsTreeZi.setIsExpernode(0);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //重复 判断是否为同一父节点,相同父节点跳过,不同新增
|
|
|
|
+ for (WbsTree tree : wbsTrees) {
|
|
|
|
+ if (wbsTreeZi.getNodeType() == 2 || wbsTreeZi.getNodeType() == 3
|
|
|
|
+ || wbsTreeZi.getNodeType() == 4 || wbsTreeZi.getNodeType() == 5 || wbsTreeZi.getNodeType() == 6) {
|
|
|
|
+ if (!wbsTreeZi.getParentId().equals(tree.getParentId()) && wbsTreeZi.getNodeName().equals(tree.getNodeName())) {
|
|
|
|
+ wbsTreeZi.setStatus(1);
|
|
|
|
+ wbsTreeZi.setType(1);
|
|
|
|
+ if (wbsTreeZi.getNodeType() == 6) {
|
|
|
|
+ wbsTreeZi.setIsConcrete(0);
|
|
|
|
+ wbsTreeZi.setIsExpernode(0);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ wbsTree = tree;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return wbsTree;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static String getEscapeChar(String str) {
|
|
|
|
+ if (StringUtils.isBlank(str)) {
|
|
|
|
+ return str;
|
|
|
|
+ }
|
|
|
|
+ if (str.contains(">")) {
|
|
|
|
+ return str.replace(">", ">");
|
|
|
|
+ }
|
|
|
|
+ if (str.contains("<")) {
|
|
|
|
+ return str.replace("<", "<");
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<WbsTreeVO2> buildWbsTreeByStream(List<WbsTreeVO2> wbsTreeVO2s) {
|
|
|
|
+ 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));
|
|
|
|
+ this.recursionFnTree(list, map);
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void recursionFnTree(List<WbsTreeVO2> list, Map<Long, List<WbsTreeVO2>> map) {
|
|
|
|
+ for (WbsTreeVO2 wbsTreeVO2 : list) {
|
|
|
|
+ List<WbsTreeVO2> childrenList = map.get(wbsTreeVO2.getId());
|
|
|
|
+ wbsTreeVO2.setChildren(childrenList);
|
|
|
|
+ if (childrenList != null && childrenList.size() > 0) {
|
|
|
|
+ wbsTreeVO2.setHasChildren(true);
|
|
|
|
+ recursionFnTree(childrenList, map);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Boolean initTable(String tableName) {
|
|
|
|
+ Integer row = baseMapper.createTable(tableName);
|
|
|
|
+ if (row >= 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|