3764b47c50f692e16ddaa090c56cee4b9045cf1c.svn-base 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package org.jeecg.modules.system.vo.thirdapp;
  2. import com.jeecg.dingtalk.api.department.vo.Department;
  3. import org.springframework.beans.BeanUtils;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. /**
  7. * 钉钉树结构的部门
  8. *
  9. * @author sunjianlei
  10. */
  11. public class JdtDepartmentTreeVo extends Department {
  12. private List<JdtDepartmentTreeVo> children;
  13. public List<JdtDepartmentTreeVo> getChildren() {
  14. return children;
  15. }
  16. public JdtDepartmentTreeVo setChildren(List<JdtDepartmentTreeVo> children) {
  17. this.children = children;
  18. return this;
  19. }
  20. public JdtDepartmentTreeVo(Department department) {
  21. BeanUtils.copyProperties(department, this);
  22. }
  23. /**
  24. * 是否有子项
  25. */
  26. public boolean hasChildren() {
  27. return children != null && children.size() > 0;
  28. }
  29. @Override
  30. public String toString() {
  31. return "JwDepartmentTree{" +
  32. "children=" + children +
  33. "} " + super.toString();
  34. }
  35. /**
  36. * 静态辅助方法,将list转为tree结构
  37. */
  38. public static List<JdtDepartmentTreeVo> listToTree(List<Department> allDepartment) {
  39. // 先找出所有的父级
  40. List<JdtDepartmentTreeVo> treeList = getByParentId(1, allDepartment);
  41. getChildrenRecursion(treeList, allDepartment);
  42. return treeList;
  43. }
  44. private static List<JdtDepartmentTreeVo> getByParentId(Integer parentId, List<Department> allDepartment) {
  45. List<JdtDepartmentTreeVo> list = new ArrayList<>();
  46. for (Department department : allDepartment) {
  47. if (parentId.equals(department.getParent_id())) {
  48. list.add(new JdtDepartmentTreeVo(department));
  49. }
  50. }
  51. return list;
  52. }
  53. private static void getChildrenRecursion(List<JdtDepartmentTreeVo> treeList, List<Department> allDepartment) {
  54. for (JdtDepartmentTreeVo departmentTree : treeList) {
  55. // 递归寻找子级
  56. List<JdtDepartmentTreeVo> children = getByParentId(departmentTree.getDept_id(), allDepartment);
  57. if (children.size() > 0) {
  58. departmentTree.setChildren(children);
  59. getChildrenRecursion(children, allDepartment);
  60. }
  61. }
  62. }
  63. }