9 changed files with 1066 additions and 833 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