/**
* 部门
* @author ypc
*/
public class Department implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Set<User> users = new HashSet<User>();
private Department parent;
private Set<Department> children = new HashSet<Department>();
private String name;
private String description;
}
数据准备
/**
* 测试数据,结构如下:
* <pre>
* ┣市场部
* ┣宣传部
* ┣业务部
* ┣业务一部
* ┣业务二部
* ┣开发部
* ┣开发一部
* ┣开发二部
* </pre>
* @return 所有最顶层的部门的列表
*/
public static List<Department> findTopLevelDepartmentList() {
//业务部——业务一部、业务二部
Department dept_1_2 = new Department();
dept_1_2.setId(new Long(12));
dept_1_2.setName("业务部");
Department dept_1_2_1 = new Department();
dept_1_2_1.setId(new Long(121));
dept_1_2_1.setName("业务一部");
Department dept_1_2_2 = new Department();
dept_1_2_2.setId(new Long(122));
dept_1_2_2.setName("业务二部");
dept_1_2_1.setParent(dept_1_2);
dept_1_2_2.setParent(dept_1_2);
Set<Department> children_0 = new LinkedHashSet<Department>();
children_0.add(dept_1_2_1);
children_0.add(dept_1_2_2);
dept_1_2.setChildren(children_0);
//宣传部
Department dept_1_1 = new Department();
dept_1_1.setId(new Long(11));
dept_1_1.setName("宣传部");
//市场部——宣传部、业务部
Department dept_1 = new Department();
dept_1.setId(new Long(1));
dept_1.setName("市场部");
dept_1_1.setParent(dept_1);
dept_1_2.setParent(dept_1);
Set<Department> children_1 = new LinkedHashSet<Department>();
children_1.add(dept_1_1);
children_1.add(dept_1_2);
dept_1.setChildren(children_1);
//开发部——开发一部、开发二部
Department dept_2_1 = new Department();
dept_2_1.setId(new Long(21));
dept_2_1.setName("开发一部");
Department dept_2_2 = new Department();
dept_2_2.setId((new Long(22)));
dept_2_2.setName("开发二部");
Department dept_2 = new Department();
dept_2.setId(new Long(2));
dept_2.setName("开发部");
dept_2_1.setParent(dept_2);
dept_2_2.setParent(dept_2);
Set<Department> children_2 = new LinkedHashSet<Department>();
children_2.add(dept_2_1);
children_2.add(dept_2_2);
dept_2.setChildren(children_2);
List<Department> depts = new ArrayList<Department>();
depts.add(dept_1);
depts.add(dept_2);
return depts;
}