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递归 ,得到部门树,部门人员,以及,当前部门下所有的人员数(一直到底)。
结果数据格式:
最终展现: