后端常见返回类型:树结构

    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;

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值