欢迎来到随风的博客

demo

private static void generateHierarchyArray(ClounmEntity clounmEntity, List hierarchyArray) {
if (clounmEntity == null) {
return;
}
hierarchyArray.add(clounmEntity.getClounmName());
if (clounmEntity.getChilden() != null) {
for (ClounmEntity child : clounmEntity.getChilden()) {
generateHierarchyArray(child, hierarchyArray);
}
}
}

private static ClounmEntity mergeSameLevelClounmEntities(ClounmEntity root) {
if (root == null) {
return null;
}
if (root.getChilden() != null) {
Map<String, ClounmEntity> mergedMap = new HashMap<>();
for (ClounmEntity child : root.getChilden()) {
String name = child.getClounmName();
if (mergedMap.containsKey(name)) {
ClounmEntity existing = mergedMap.get(name);
// 合并子节点列表
if (child.getChilden() != null) {
if (existing.getChilden() == null) {
existing.setChilden(new ArrayList<>());
}
existing.getChilden().addAll(child.getChilden());
}
// 可以根据需要添加更多合并逻辑,如合并 action、gruopRuleEntityList 等
} else {
mergedMap.put(name, child);
}
}
root.setChilden(new ArrayList<>(mergedMap.values()));
// 递归处理子节点
for (ClounmEntity child : root.getChilden()) {
mergeSameLevelClounmEntities(child);
}
}
return root;
}

private static void generateHierarchy(ClounmEntity clounmEntity, String parentHierarchy) {
if (clounmEntity == null) {
return;
}
String currentHierarchy = parentHierarchy.isEmpty() ? clounmEntity.getClounmName() : parentHierarchy + "." + clounmEntity.getClounmName();

    // 可以为 ClounmEntity 添加一个 hierarchy 属性来存储层级信息
     clounmEntity.setCurrentHierarchy(currentHierarchy);

    if (clounmEntity.getChilden() != null) {
        for (ClounmEntity child : clounmEntity.getChilden()) {
            child.setCurrentHierarchy(currentHierarchy);
            generateHierarchy(child, currentHierarchy);
        }
    }
}

private static void generateLevelArray(ClounmEntity clounmEntity, Map<ClounmEntity, String> levelMap, String currentLevel) {
if (clounmEntity == null) {
return;
}
levelMap.put(clounmEntity, currentLevel);
if (clounmEntity.getChilden() != null) {
int index = 0;
for (ClounmEntity child : clounmEntity.getChilden()) {
String childLevel = currentLevel + "." + index;
generateLevelArray(child, levelMap, childLevel);
index++;
}
}
}

private static void generateLevelArray(ClounmEntity clounmEntity, Map<ClounmEntity, String> levelMap, String currentLevel) {
if (clounmEntity == null) {
return;
}
levelMap.put(clounmEntity, currentLevel);
if (clounmEntity.getChilden() != null) {
int index = 0;
for (ClounmEntity child : clounmEntity.getChilden()) {
String childLevel = currentLevel + "." + index;
generateLevelArray(child, levelMap, childLevel);
index++;
}
}
}

private static ClounmEntity splitClounmEntitiesByGruopRule(ClounmEntity root) {
if (root == null) {
return null;
}
if (root.getGruopRuleEntityList() != null && root.getGruopRuleEntityList().size() > 1) {
List newChildren = new ArrayList<>();
for (GruopRuleEntity groupRule : root.getGruopRuleEntityList()) {
ClounmEntity newEntity = new ClounmEntity();
newEntity.setClounmId(root.getClounmId());
newEntity.setTabId(root.getTabId());
newEntity.setClounmName(root.getClounmName());
newEntity.setCreateBy(root.getCreateBy());
newEntity.setUpdateBy(root.getUpdateBy());
newEntity.setCreateDate(root.getCreateDate());
newEntity.setUpdateDate(root.getUpdateDate());
newEntity.setChilden(root.getChilden());
newEntity.setAction(root.getAction());
List singleGroupRuleList = new ArrayList<>();
singleGroupRuleList.add(groupRule);
newEntity.setGruopRuleEntityList(singleGroupRuleList);
newChildren.add(newEntity);
}
root.setGruopRuleEntityList(null);
root.setChilden(newChildren);
} else {
if (root.getChilden() != null) {
for (int i = 0; i < root.getChilden().size(); i++) {
root.getChilden().set(i, splitClounmEntitiesByGruopRule(root.getChilden().get(i)));
}
}
}
return root;
}

posted on 2025-04-18 22:54  随风2020  阅读(8)  评论(0)    收藏  举报

导航