a9bd60454a5c95a16517794fab99450a260611e7.svn-base 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package org.jeecg.modules.system.util;
  2. import org.jeecg.common.constant.CommonConstant;
  3. import org.jeecg.common.util.RedisUtil;
  4. import org.jeecg.common.util.oConvertUtils;
  5. import org.jeecg.modules.system.entity.SysDepart;
  6. import org.jeecg.modules.system.model.DepartIdModel;
  7. import org.jeecg.modules.system.model.SysDepartTreeModel;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. /**
  12. * <P>
  13. * 对应部门的表,处理并查找树级数据
  14. * <P>
  15. *
  16. * @Author: Steve
  17. * @Date: 2019-01-22
  18. */
  19. public class FindsDepartsChildrenUtil {
  20. //部门树信息-树结构
  21. //private static List<SysDepartTreeModel> sysDepartTreeList = new ArrayList<SysDepartTreeModel>();
  22. //部门树id-树结构
  23. //private static List<DepartIdModel> idList = new ArrayList<>();
  24. /**
  25. * queryTreeList的子方法 ====1=====
  26. * 该方法是s将SysDepart类型的list集合转换成SysDepartTreeModel类型的集合
  27. */
  28. public static List<SysDepartTreeModel> wrapTreeDataToTreeList(List<SysDepart> recordList) {
  29. // 在该方法每请求一次,都要对全局list集合进行一次清理
  30. //idList.clear();
  31. List<DepartIdModel> idList = new ArrayList<DepartIdModel>();
  32. List<SysDepartTreeModel> records = new ArrayList<>();
  33. for (int i = 0; i < recordList.size(); i++) {
  34. SysDepart depart = recordList.get(i);
  35. records.add(new SysDepartTreeModel(depart));
  36. }
  37. List<SysDepartTreeModel> tree = findChildren(records, idList);
  38. setEmptyChildrenAsNull(tree);
  39. return tree;
  40. }
  41. /**
  42. * 获取 DepartIdModel
  43. * @param recordList
  44. * @return
  45. */
  46. public static List<DepartIdModel> wrapTreeDataToDepartIdTreeList(List<SysDepart> recordList) {
  47. // 在该方法每请求一次,都要对全局list集合进行一次清理
  48. //idList.clear();
  49. List<DepartIdModel> idList = new ArrayList<DepartIdModel>();
  50. List<SysDepartTreeModel> records = new ArrayList<>();
  51. for (int i = 0; i < recordList.size(); i++) {
  52. SysDepart depart = recordList.get(i);
  53. records.add(new SysDepartTreeModel(depart));
  54. }
  55. findChildren(records, idList);
  56. return idList;
  57. }
  58. /**
  59. * queryTreeList的子方法 ====2=====
  60. * 该方法是找到并封装顶级父类的节点到TreeList集合
  61. */
  62. private static List<SysDepartTreeModel> findChildren(List<SysDepartTreeModel> recordList,
  63. List<DepartIdModel> departIdList) {
  64. List<SysDepartTreeModel> treeList = new ArrayList<>();
  65. for (int i = 0; i < recordList.size(); i++) {
  66. SysDepartTreeModel branch = recordList.get(i);
  67. if (oConvertUtils.isEmpty(branch.getParentId())) {
  68. treeList.add(branch);
  69. DepartIdModel departIdModel = new DepartIdModel().convert(branch);
  70. departIdList.add(departIdModel);
  71. }
  72. }
  73. getGrandChildren(treeList,recordList,departIdList);
  74. //idList = departIdList;
  75. return treeList;
  76. }
  77. /**
  78. * queryTreeList的子方法====3====
  79. *该方法是找到顶级父类下的所有子节点集合并封装到TreeList集合
  80. */
  81. private static void getGrandChildren(List<SysDepartTreeModel> treeList,List<SysDepartTreeModel> recordList,List<DepartIdModel> idList) {
  82. for (int i = 0; i < treeList.size(); i++) {
  83. SysDepartTreeModel model = treeList.get(i);
  84. DepartIdModel idModel = idList.get(i);
  85. for (int i1 = 0; i1 < recordList.size(); i1++) {
  86. SysDepartTreeModel m = recordList.get(i1);
  87. if (m.getParentId()!=null && m.getParentId().equals(model.getId())) {
  88. model.getChildren().add(m);
  89. DepartIdModel dim = new DepartIdModel().convert(m);
  90. idModel.getChildren().add(dim);
  91. }
  92. }
  93. getGrandChildren(treeList.get(i).getChildren(), recordList, idList.get(i).getChildren());
  94. }
  95. }
  96. /**
  97. * queryTreeList的子方法 ====4====
  98. * 该方法是将子节点为空的List集合设置为Null值
  99. */
  100. private static void setEmptyChildrenAsNull(List<SysDepartTreeModel> treeList) {
  101. for (int i = 0; i < treeList.size(); i++) {
  102. SysDepartTreeModel model = treeList.get(i);
  103. if (model.getChildren().size() == 0) {
  104. model.setChildren(null);
  105. model.setIsLeaf(true);
  106. }else{
  107. setEmptyChildrenAsNull(model.getChildren());
  108. model.setIsLeaf(false);
  109. }
  110. }
  111. // sysDepartTreeList = treeList;
  112. }
  113. }