diff --git a/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java b/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java index b0afc027c512beaf1fa61b8964a5725b9d4c9961..5b3db8816aa901b06bba25259fd94635d69b1544 100644 --- a/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java +++ b/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java @@ -417,6 +417,45 @@ public class CiEntityServiceImpl implements CiEntityService, ICiEntityCrossoverS return new ArrayList<>(); } + @Override + public List ciEntityBuilder(CiEntityVo ciEntityVo, List> resultList) { + + CiVo ciVo = ciMapper.getCiById(ciEntityVo.getCiId()); + if (ciVo == null) { + throw new CiNotFoundException(ciEntityVo.getCiId()); + } + List ciList = ciMapper.getUpwardCiListByLR(ciVo.getLft(), ciVo.getRht()); + List attrList = attrMapper.getAttrByCiId(ciVo.getId()); + List relList = RelUtil.ClearRepeatRel(relMapper.getRelByCiId(ciVo.getId())); + + if (CollectionUtils.isNotEmpty(ciEntityVo.getExcludeRelIdList())) { + relList.removeIf(d -> ciEntityVo.getExcludeRelIdList().contains(d.getId())); + } + //把条件的最大限制设到关系里 + for (RelVo relVo : relList) { + relVo.setMaxRelEntityCount(ciEntityVo.getMaxRelEntityCount()); + } + for (AttrVo attrVo : attrList) { + attrVo.setMaxAttrEntityCount(ciEntityVo.getMaxAttrEntityCount()); + } + + ciEntityVo.setCiList(ciList); + ciEntityVo.setAttrList(attrList); + ciEntityVo.setRelList(relList); + + Boolean isLimitRelEntity = ciEntityVo.isLimitRelEntity(); + Boolean isLimitAttrEntity = ciEntityVo.isLimitAttrEntity(); + + ciEntityVo.setLimitRelEntity(isLimitRelEntity != null ? isLimitRelEntity : true); + ciEntityVo.setLimitAttrEntity(isLimitAttrEntity != null ? isLimitAttrEntity : true); +// List> resultList = ciEntityMapper.searchCiEntity(ciEntityVo); + +// ciEntityVo.setIdList(null);//清除id列表,避免ciEntityVo重用时数据没法更新 + List ciEntityList = new CiEntityBuilder.Builder(ciEntityVo, resultList, ciVo, ciEntityVo.getAttrList(), ciEntityVo.getRelList()).build().getCiEntityList(); + + return ciEntityList; + } + @Override public List searchCiEntityBaseInfo(CiEntityVo ciEntityVo) { List ciEntityList = ciEntityMapper.searchCiEntityBaseInfo(ciEntityVo);