package org.jeecg.modules.system.vo.thirdapp; import com.jeecg.qywx.api.department.vo.Department; import org.springframework.beans.BeanUtils; import java.util.ArrayList; import java.util.List; /** * 企业微信树结构的部门 * * @author sunjianlei */ public class JwDepartmentTreeVo extends Department { private List children; public List getChildren() { return children; } public JwDepartmentTreeVo setChildren(List children) { this.children = children; return this; } public JwDepartmentTreeVo(Department department) { BeanUtils.copyProperties(department, this); } /** * 是否有子项 */ public boolean hasChildren() { return children != null && children.size() > 0; } @Override public String toString() { return "JwDepartmentTree{" + "children=" + children + "} " + super.toString(); } /** * 静态辅助方法,将list转为tree结构 */ public static List listToTree(List allDepartment) { // 先找出所有的父级 List treeList = getByParentId("1", allDepartment); getChildrenRecursion(treeList, allDepartment); return treeList; } private static List getByParentId(String parentId, List allDepartment) { List list = new ArrayList<>(); for (Department department : allDepartment) { if (parentId.equals(department.getParentid())) { list.add(new JwDepartmentTreeVo(department)); } } return list; } private static void getChildrenRecursion(List treeList, List allDepartment) { for (JwDepartmentTreeVo departmentTree : treeList) { // 递归寻找子级 List children = getByParentId(departmentTree.getId(), allDepartment); if (children.size() > 0) { departmentTree.setChildren(children); getChildrenRecursion(children, allDepartment); } } } }