public DepartmentUserTreeNode getTree(String location,String name) { List<DepartmentUserTreeNode> depts = deparDao.qryDepts(); DepartmentUserTreeNode rootDept = deparDao.qryRootDept(); recursion(depts, rootDept,0,location,name); return rootDept; } private int recursion(List<DepartmentUserTreeNode> list, DepartmentUserTreeNode node,int count,String location,String name) { List<DepartmentUserTreeNode> childList = getChildList(list, node);// 得到子节点列表 List<Employee> emps = empDao.qryByDept(node.getDeptId(),location,name); count = CollectionUtils.isEmpty(emps)?0:emps.size(); node.setEmps(emps); if (!CollectionUtils.isEmpty(childList)) { node.setDepts(childList); Iterator<DepartmentUserTreeNode> it = childList.iterator(); while (it.hasNext()) { DepartmentUserTreeNode n = (DepartmentUserTreeNode) it.next(); count = count+recursion(list, n,count,location,name); } } else { node.setDepts(null); } node.setEmpCount(count); return count; } private List<DepartmentUserTreeNode> getChildList(List<DepartmentUserTreeNode> list, DepartmentUserTreeNode node) { List<DepartmentUserTreeNode> nodeList = new ArrayList<DepartmentUserTreeNode>(); Iterator<DepartmentUserTreeNode> it = list.iterator(); while (it.hasNext()) { DepartmentUserTreeNode n = (DepartmentUserTreeNode) it.next(); if (n.getParentId().equals(node.getDeptId()) ) { nodeList.add(n); } } return nodeList; }
输入,LIST数据
JAVA递归 ,得到部门树,部门人员,以及,当前部门下所有的人员数(一直到底)。
结果数据格式:
最终展现: