直接上代码,比如封装组织
树形结构:
@Servicepublic class TestService{public List<DepTreeDto> treeDept() {//查询列表List<DepTreeDto> deptList = deptMapper.listTreeDept();return buildDeptTree(deptList);}/*** 构建前端所需要树结构** @param deptList 部门列表* @return 树结构列表*/private List<DepTreeDto> buildDeptTree(List<DepTreeDto> deptList) {//新集合List<DepTreeDto> returnList = new ArrayList<>();List<Integer> tempList = new ArrayList<>();for (DepTreeDto dept : deptList) {tempList.add(dept.getId());}for (DepTreeDto dept : deptList) {// 如果是顶级节点, 遍历该父节点的所有子节点if (!tempList.contains(dept.getParentId())) {recursionFn(deptList, dept);returnList.add(dept);}}//没有查询到节点则以当前节点if (returnList.isEmpty()) {returnList = deptList;}return returnList;}/*** 递归列表*/private void recursionFn(List<DepTreeDto> list, DepTreeDto t) {// 得到子节点列表List<DepTreeDto> childList = getChildList(list, t);t.setChildren(childList);for (DepTreeDto tChild : childList) {// 判断是否有子节点if (StringUtils.isNotNull(tChild.getParentId()) && tChild.getParentId().equals(t.getId())) {for (DepTreeDto n : childList) {recursionFn(list, n);}}}}/*** 得到子节点列表*/private List<DepTreeDto> getChildList(List<DepTreeDto> list, DepTreeDto t) {List<DepTreeDto> tList = new ArrayList<>();for (DepTreeDto n : list) {if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().equals(t.getId())) {tList.add(n);}}return tList;}}