Map嵌套java代码设计

前言

最近在工作遇到需要把List列表转化为Map嵌套的格式返回,在此做下记录。

业务场景

需要把数据库里存储的企业信息列表,转换为Map<企业区域编码,Map<企业类型,企业数据列表>>的结果返回,用作图标统计。

代码设计

Controller层:

    /**
     * 获取区域对应的企业MAP
     */
    @PostMapping("/getAreaEntMap")
    @ApiOperation(value = "获取区域对应的企业MAP", notes = "获取区域对应的企业MAP")
    public Map<String, Map<String,List<QyxxBaseInfoQueryVo>>> getAreaEntMap(@Valid @RequestBody EntInfoQueryParam queryParam) {
        return qyxxBaseInfoServiceImpl.getAreaEntMap(queryParam);
    }

应用层:

    public Map<String, Map<String, List<QyxxBaseInfoQueryVo>>> getAreaEntMap(@NonNull EntInfoQueryParam queryParam) {
        //获取要处理的数据列表
        List<QyxxBaseInfo> baseInfoList = qyxxBaseInfoDomain.getEntList(queryParam);
        Map<String, Map<String, List<QyxxBaseInfoQueryVo>>> areaMap = new HashMap<>();
        if (CollUtil.isNotEmpty(baseInfoList)) {
            //实体列表转换为Vo列表
            List<QyxxBaseInfoQueryVo> baseInfoQueryVoList = ConvertEntity2Vo.INSTANCE.qyxxBaseInfoList2VoList(baseInfoList);
            //遍历构建Map
            for (QyxxBaseInfoQueryVo ent : baseInfoQueryVoList) {
                if (areaMap.get(ent.getDistrictCode()) == null) {
                    areaMap.put(ent.getDistrictCode(), new HashMap<>());
                }
                Map<String, List<QyxxBaseInfoQueryVo>> typeMap = areaMap.get(ent.getDistrictCode());
                if (typeMap.get(ent.getEnterpriseTypeCode()) == null) {
                    typeMap.put(ent.getEnterpriseTypeCode(), new ArrayList<>());
                }
                typeMap.get(ent.getEnterpriseTypeCode()).add(ent);
            }
        }
        return areaMap;
    }

领域层:

    /**
     * 获取企业信息列表
     *
     * @param queryParam
     * @return
     */
    public List<QyxxBaseInfo> getEntList(@NonNull EntInfoQueryParam queryParam) {
        QueryWrapper<QyxxBaseInfo> queryWrapper = Wrappers.<QyxxBaseInfo>query()
                .in("enterprise_type_code", queryParam.getEntType())
                .eq("deleted", 0)
                .orderByDesc("created_time")
                .in("district_code", queryParam.getAreaId());
        return qyxxBaseInfoMapper.selectList(queryWrapper);
    }

需要把数据列表处理成map嵌套的结果,可以参考上述方法,如有更好的方法欢迎大家留言讨论,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值