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<JwDepartmentTreeVo> children;
|
|
public List<JwDepartmentTreeVo> getChildren() {
|
return children;
|
}
|
|
public JwDepartmentTreeVo setChildren(List<JwDepartmentTreeVo> 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<JwDepartmentTreeVo> listToTree(List<Department> allDepartment) {
|
// 先找出所有的父级
|
List<JwDepartmentTreeVo> treeList = getByParentId("1", allDepartment);
|
getChildrenRecursion(treeList, allDepartment);
|
return treeList;
|
}
|
|
private static List<JwDepartmentTreeVo> getByParentId(String parentId, List<Department> allDepartment) {
|
List<JwDepartmentTreeVo> list = new ArrayList<>();
|
for (Department department : allDepartment) {
|
if (parentId.equals(department.getParentid())) {
|
list.add(new JwDepartmentTreeVo(department));
|
}
|
}
|
return list;
|
}
|
|
private static void getChildrenRecursion(List<JwDepartmentTreeVo> treeList, List<Department> allDepartment) {
|
for (JwDepartmentTreeVo departmentTree : treeList) {
|
// 递归寻找子级
|
List<JwDepartmentTreeVo> children = getByParentId(departmentTree.getId(), allDepartment);
|
if (children.size() > 0) {
|
departmentTree.setChildren(children);
|
getChildrenRecursion(children, allDepartment);
|
}
|
}
|
}
|
|
}
|