113e1ffc63caaffd1dcfcb15a697087d198980f5.svn-base 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package org.jeecg.modules.system.vo.thirdapp;
  2. import com.jeecg.qywx.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 JwDepartmentTreeVo extends Department {
  12. private List<JwDepartmentTreeVo> children;
  13. public List<JwDepartmentTreeVo> getChildren() {
  14. return children;
  15. }
  16. public JwDepartmentTreeVo setChildren(List<JwDepartmentTreeVo> children) {
  17. this.children = children;
  18. return this;
  19. }
  20. public JwDepartmentTreeVo(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<JwDepartmentTreeVo> listToTree(List<Department> allDepartment) {
  39. // 先找出所有的父级
  40. List<JwDepartmentTreeVo> treeList = getByParentId("1", allDepartment);
  41. getChildrenRecursion(treeList, allDepartment);
  42. return treeList;
  43. }
  44. private static List<JwDepartmentTreeVo> getByParentId(String parentId, List<Department> allDepartment) {
  45. List<JwDepartmentTreeVo> list = new ArrayList<>();
  46. for (Department department : allDepartment) {
  47. if (parentId.equals(department.getParentid())) {
  48. list.add(new JwDepartmentTreeVo(department));
  49. }
  50. }
  51. return list;
  52. }
  53. private static void getChildrenRecursion(List<JwDepartmentTreeVo> treeList, List<Department> allDepartment) {
  54. for (JwDepartmentTreeVo departmentTree : treeList) {
  55. // 递归寻找子级
  56. List<JwDepartmentTreeVo> children = getByParentId(departmentTree.getId(), allDepartment);
  57. if (children.size() > 0) {
  58. departmentTree.setChildren(children);
  59. getChildrenRecursion(children, allDepartment);
  60. }
  61. }
  62. }
  63. }