@Data
public class OrganizationTreeVo {
private Long id;
private String name;
@ApiModelProperty(value = "父节点id", example = "12345678")
private Long parentId;
/**
* 子节点(数据库中不存在该字段,仅用于传输数据使用)
*/
@ApiModelProperty(value = "子节点")
private List<OrganizationTreeVo> children;
}
/**
* 使用递归方法建树
* @return
*/
public static List<OrganizationTreeVo> buildByRecursive(List<OrganizationTreeVo> organizationTreeVos) {
List<OrganizationTreeVo> trees = new ArrayList<OrganizationTreeVo>();
for (OrganizationTreeVo organizationTreeVo : organizationTreeVos) {
if (organizationTreeVo.getParentId()==0 || organizationTreeVo.getParentId() == null ) {
trees.add(findChildren(organizationTreeVo,organizationTreeVos));
}
}
return trees;
}
/**
* 递归查找子节点
*/
public static OrganizationTreeVo findChildren(OrganizationTreeVo projectBasicInfoDTO,List<OrganizationTreeVo> organizationTreeVos) {
for (OrganizationTreeVo organizationTreeVo : organizationTreeVos) {
if(projectBasicInfoDTO.getId().equals(organizationTreeVo.getParentId())) {
if(projectBasicInfoDTO.getChildren() == null) {
projectBasicInfoDTO.setChildren(new ArrayList<OrganizationTreeVo>());
}
//是否还有子节点,如果有的话继续往下遍历,如果没有则直接返回
projectBasicInfoDTO.getChildren().add(findChildren(organizationTreeVo,organizationTreeVos));
}
}
return projectBasicInfoDTO;
}