diff --git a/src/main/java/neatlogic/module/cmdb/api/cicatalog/ListCiCatalogAndCiForTreeApi.java b/src/main/java/neatlogic/module/cmdb/api/cicatalog/ListCiCatalogAndCiForTreeApi.java index 77dab803b13c5864bfbc4e90b24766a6c79eb82c..a80676b5ae00fd6f8ebfff218037fc28e77bf4ee 100644 --- a/src/main/java/neatlogic/module/cmdb/api/cicatalog/ListCiCatalogAndCiForTreeApi.java +++ b/src/main/java/neatlogic/module/cmdb/api/cicatalog/ListCiCatalogAndCiForTreeApi.java @@ -47,86 +47,100 @@ public class ListCiCatalogAndCiForTreeApi extends PrivateApiComponentBase { @Description(desc = "nmcac.listcicatalogandcifortreeapi.getname") @Override public Object myDoService(JSONObject paramObj) throws Exception { + CiCatalogNodeVo rootNode = null; + List catalogList = new ArrayList<>(); + Map id2NodeMap = new HashMap<>(); + List noCatalogCiNodeList = new ArrayList<>(); + List ciNodeList = new ArrayList<>(); + List allNodeList = ciCatalogService.getAllCiCatalogList(); + List ciList = ciMapper.getAllCi(null); String keyword = paramObj.getString("keyword"); if (StringUtils.isNotBlank(keyword)) { keyword = keyword.toLowerCase(); - } - List allNodeList = ciCatalogService.getAllCiCatalogList(); - if (CollectionUtils.isEmpty(allNodeList)) { - return allNodeList; - } - CiCatalogNodeVo rootNode = allNodeList.get(0); - Map id2NodeMap = new HashMap<>(); - List matchKeywordCiCatalogNodeList = new ArrayList<>(); - for (CiCatalogNodeVo node : allNodeList) { - id2NodeMap.put(node.getId(), node); - if (StringUtils.isNotBlank(keyword)) { - if (node.getName().toLowerCase().contains(keyword)) { - matchKeywordCiCatalogNodeList.add(node); + List matchKeywordCiCatalogNodeList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(allNodeList)) { + rootNode = allNodeList.get(0); + for (CiCatalogNodeVo node : allNodeList) { + node.setType(CiCatalogNodeVo.CATALOG); + id2NodeMap.put(node.getId(), node); + if (node.getName().toLowerCase().contains(keyword)) { + matchKeywordCiCatalogNodeList.add(node); + } } } - } - List noCatalogCiNodeList = new ArrayList<>(); - List ciNodeList = new ArrayList<>(); - List ciList = ciMapper.getAllCi(null); - for (CiVo ciVo : ciList) { - if (StringUtils.isNotBlank(keyword)) { + for (CiVo ciVo : ciList) { if (!ciVo.getName().toLowerCase().contains(keyword) && !ciVo.getLabel().toLowerCase().contains(keyword)) { continue; } - } - CiCatalogNodeVo ciNode = new CiCatalogNodeVo(); - ciNode.setId(ciVo.getId()); - ciNode.setName(ciVo.getLabel() + "(" + ciVo.getName() + ")"); - ciNode.setParentId(ciVo.getCatalogId()); - ciNode.setType(CiCatalogNodeVo.CI); - if (ciVo.getCatalogId() == null) { - noCatalogCiNodeList.add(ciNode); - continue; - } - CiCatalogNodeVo node = id2NodeMap.get(ciVo.getCatalogId()); - if (node == null) { - noCatalogCiNodeList.add(ciNode); - continue; - } - if (StringUtils.isNotBlank(keyword)) { + CiCatalogNodeVo ciNode = new CiCatalogNodeVo(ciVo); + if (ciVo.getCatalogId() == null) { + noCatalogCiNodeList.add(ciNode); + continue; + } + CiCatalogNodeVo node = id2NodeMap.get(ciVo.getCatalogId()); + if (node == null) { + noCatalogCiNodeList.add(ciNode); + continue; + } matchKeywordCiCatalogNodeList.add(node); + ciNodeList.add(ciNode); } - ciNodeList.add(ciNode); - } - List catalogList = new ArrayList<>(); - for (CiCatalogNodeVo node : allNodeList) { - node.setType(CiCatalogNodeVo.CATALOG); - if (CollectionUtils.isNotEmpty(matchKeywordCiCatalogNodeList)) { + for (CiCatalogNodeVo node : allNodeList) { for (CiCatalogNodeVo matchKeywordCiCatalogNode : matchKeywordCiCatalogNodeList) { if (node.getLft() <= matchKeywordCiCatalogNode.getLft() && node.getRht() >= matchKeywordCiCatalogNode.getRht()) { catalogList.add(node); } } - } else { - catalogList.add(node); } - } - for (CiCatalogNodeVo node : catalogList) { - CiCatalogNodeVo parent = id2NodeMap.get(node.getParentId()); - if (parent != null) { - parent.addChild(node); + } else { + if (CollectionUtils.isNotEmpty(allNodeList)) { + rootNode = allNodeList.get(0); + for (CiCatalogNodeVo node : allNodeList) { + node.setType(CiCatalogNodeVo.CATALOG); + id2NodeMap.put(node.getId(), node); + catalogList.add(node); + } } - } - for (CiCatalogNodeVo node : ciNodeList) { - CiCatalogNodeVo parent = id2NodeMap.get(node.getParentId()); - if (parent != null) { - parent.addChild(node); + for (CiVo ciVo : ciList) { + CiCatalogNodeVo ciNode = new CiCatalogNodeVo(ciVo); + if (ciVo.getCatalogId() == null) { + noCatalogCiNodeList.add(ciNode); + continue; + } + CiCatalogNodeVo node = id2NodeMap.get(ciVo.getCatalogId()); + if (node == null) { + noCatalogCiNodeList.add(ciNode); + continue; + } + ciNodeList.add(ciNode); } } - for (CiCatalogNodeVo node : noCatalogCiNodeList) { - rootNode.addChild(node); + + if (CollectionUtils.isNotEmpty(catalogList)) { + for (CiCatalogNodeVo node : catalogList) { + CiCatalogNodeVo parent = id2NodeMap.get(node.getParentId()); + if (parent != null) { + parent.addChild(node); + } + } + for (CiCatalogNodeVo node : ciNodeList) { + CiCatalogNodeVo parent = id2NodeMap.get(node.getParentId()); + if (parent != null) { + parent.addChild(node); + } + } + for (CiCatalogNodeVo node : noCatalogCiNodeList) { + rootNode.addChild(node); + } + return rootNode.getChildren(); + } else { + return noCatalogCiNodeList; } - return rootNode.getChildren(); } @Override public String getToken() { return "cmdb/cicatalogandci/listtree"; } + }