public List<DepartmentVo> findDepartmentTree(String hoscode) {
// 创建一个最终要返回的集合
List<DepartmentVo> list = new ArrayList<>();
// 根据医院编号查询所有当前医院所有科室
List<Department> departmentList = departmentRepository.findByHoscode(hoscode);
// 存储大科室编码和对应小科室(一个大科室对应多个小科室)
Map<String, List<Department>> departmentMap = new HashMap<>();
// 遍历集合,关联数据(对大科室进行分组,并关联小科室)
for (Department department : departmentList) {
String bigcode = department.getBigcode(); //拿到所有的大科室编号
if (departmentMap.containsKey(bigcode)) { //判断当前科室编号是否已存在map中
// 根据key拿到集合
List<Department> departments = departmentMap.get(bigcode);
// 将小科室添加到集合中
departments.add(department);
} else {//不存在就创建
List<Department> departments = new ArrayList<>();
departments.add(department);
departmentMap.put(bigcode, departments);
}
}
// 遍历集合,对大科室进行封装
for (Map.Entry<String, List<Department>> entry : departmentMap.entrySet()) {
// 大科室编号
String bigCode = entry.getKey();
// 大科室对应全部小科室数据
List<Department> subList = entry.getValue();
// 封装大科室数据
DepartmentVo departmentVo = new DepartmentVo();
departmentVo.setDepcode(bigCode);
departmentVo.setDepname(subList.get(0).getBigname());
// 封装小科室数据
List<DepartmentVo> children=new ArrayList<>();
// 取出小科室信息
for (Department sub : subList) {
DepartmentVo departmentVo1 = new DepartmentVo();
departmentVo1.setDepname(sub.getDepname());
departmentVo1.setDepcode(sub.getDepcode());
children.add(departmentVo1);
}
// 将小科室封装到大科室中
departmentVo.setChildren(children);
// 将大科室对象存入最终返回集合
list.add(departmentVo);
}
return list;
}
后端常见返回类型:树结构
于 2023-07-17 18:47:22 首次发布