8 changed files with 361 additions and 124 deletions
			
			
		@ -0,0 +1,45 @@ | 
				
			|||||
 | 
					package com.epmet.commons.tools.utils; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.io.Serializable; | 
				
			||||
 | 
					import java.util.ArrayList; | 
				
			||||
 | 
					import java.util.List; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class NodeTree<T> implements Serializable { | 
				
			||||
 | 
					    private static final long serialVersionUID = 8020505121785861117L; | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 主键 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String id; | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 上级ID | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String pid; | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 子节点列表 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private List<T> children = new ArrayList<>(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getId() { | 
				
			||||
 | 
					        return id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setId(String id) { | 
				
			||||
 | 
					        this.id = id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getPid() { | 
				
			||||
 | 
					        return pid; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setPid(String pid) { | 
				
			||||
 | 
					        this.pid = pid; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public List<T> getChildren() { | 
				
			||||
 | 
					        return children; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setChildren(List<T> children) { | 
				
			||||
 | 
					        this.children = children; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,31 @@ | 
				
			|||||
 | 
					package com.epmet.commons.tools.utils; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.ArrayList; | 
				
			||||
 | 
					import java.util.LinkedHashMap; | 
				
			||||
 | 
					import java.util.List; | 
				
			||||
 | 
					import java.util.Map; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class NodeTreeUtils { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public static <T extends NodeTree> List<T> build(List<T> treeNodes) { | 
				
			||||
 | 
					        List<T> result = new ArrayList<>(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        //list转map
 | 
				
			||||
 | 
					        Map<String, T> nodeMap = new LinkedHashMap<>(treeNodes.size()); | 
				
			||||
 | 
					        for(T treeNode : treeNodes){ | 
				
			||||
 | 
					            nodeMap.put(treeNode.getId(), treeNode); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        for(T node : nodeMap.values()) { | 
				
			||||
 | 
					            T parent = nodeMap.get(node.getPid()); | 
				
			||||
 | 
					            if(parent != null && !(node.getId().equals(parent.getId()))){ | 
				
			||||
 | 
					                parent.getChildren().add(node); | 
				
			||||
 | 
					                continue; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            result.add(node); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        return result; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,39 @@ | 
				
			|||||
 | 
					package com.epmet.dto.result; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.epmet.commons.tools.utils.NodeTree; | 
				
			||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||
 | 
					import lombok.Data; | 
				
			||||
 | 
					import lombok.NoArgsConstructor; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.io.Serializable; | 
				
			||||
 | 
					import java.util.Date; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@Data | 
				
			||||
 | 
					@NoArgsConstructor | 
				
			||||
 | 
					@AllArgsConstructor | 
				
			||||
 | 
					public class AgencyAddressBookTreeResultDTO extends NodeTree implements Serializable { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    private static final long serialVersionUID = -1993037593855768962L; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 父id | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String pid; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 名字 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String name; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 级别 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private String level; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 创建时间 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    private Date createTime; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue