【Java】 项目代码片段分享

今天下午写了一段代码程序,虽然功能简单,但是实现起来还是需要一些逻辑处理,分享下代码:

private void getLuckActivityContainCondition(ZgLuckActivityContainConditionVO newContain, Long activityId) {
        newContain.setRegionCodes(Lists.newArrayList());
        newContain.setZgLevels(Lists.newArrayList());
        newContain.setRegionList(Lists.newArrayList());
        // 区域
        List<String> regionCodes = luckActiveRegionDao.selectRegionCodeListByActiveId(activityId);
        if(CollectionUtils.isNotEmpty(regionCodes)){
            newContain.setRegionCodes(regionCodes);

            List<RegionVO> allRegionList = new ArrayList<>();

            if(regionCodes.size() > 500){
                List<List<String>> regionCodeGroupList = CollectionUtil.groupListByQuantity(regionCodes,500);
                for (List<String>  subRegionList :  regionCodeGroupList){
                    List<RegionVO> regionVOList = regionServiceClient.findRegionCodeList(subRegionList).getDataWithException();
                    allRegionList.addAll(regionVOList);
                }
            }

            allRegionList.forEach(record -> {
                if (record.getCityCode() == null) {
                    record.setCityCode("");
                    record.setCity("");
                }
                if (record.getCountyCode() == null) {
                    record.setCountyCode("");
                    record.setCounty("");
                }
            });

            Map<String, String> provinceMap = allRegionList.stream().collect(Collectors.toMap(RegionVO::getProvinceCode, RegionVO::getProvince, (key1, key2) -> key2));
            Map<String, String> cityMap = allRegionList.stream().collect(Collectors.toMap(RegionVO::getCityCode, RegionVO::getCity, (key1, key2) -> key2));
            Map<String, String> countyMap = allRegionList.stream().collect(Collectors.toMap(RegionVO::getCountyCode, RegionVO::getCounty, (key1, key2) -> key2));
            LinkedHashMap<String, LinkedHashMap<String, List<String>>> regionGroupMap = allRegionList.stream().collect(Collectors.groupingBy(RegionVO::getProvinceCode,LinkedHashMap::new,Collectors.groupingBy(RegionVO::getCityCode, LinkedHashMap::new, Collectors.mapping(RegionVO::getCountyCode, Collectors.toList()))));

            List<ZgLuckActivityRegionVO>  regionGroupList = new ArrayList<>();
            ZgLuckActivityRegionVO regionVO;
            List<String> countyNamelist;
            Set<String> provinceCodeSet = regionGroupMap.keySet();
            for (String  provinceCode :  provinceCodeSet){
                String provinceName = provinceMap.get(provinceCode);
                LinkedHashMap<String, List<String>>  cityGroupMap = regionGroupMap.get(provinceCode);
                int cityCount = 0;
                Set<String> cityCodeSet = cityGroupMap.keySet();
                for (String cityCode : cityCodeSet){
                    if(StringUtils.isNotEmpty(cityCode)){
                        regionVO = new ZgLuckActivityRegionVO();
                        String cityName = cityMap.get(cityCode);

                        regionVO.setProvinceCode(provinceCode);
                        regionVO.setProvinceName(provinceName);
                        regionVO.setCityCode(cityCode);
                        regionVO.setCityName(cityName);

                        List<String> countyList = cityGroupMap.get(cityCode).stream().filter(e -> !"".equals(e)).collect(Collectors.toList());
                        if(CollectionUtils.isNotEmpty(countyList)){
                            regionVO.setCountyCodes(countyList);
                            countyNamelist = new ArrayList<>();
                            for (String countyC :  countyList){
                                countyNamelist.add(countyMap.get(countyC));
                            }
                            regionVO.setCountyNameStr(StringUtils.join(countyNamelist,","));
                        }
                        cityCount++;
                        regionGroupList.add(regionVO);
                    }
                }

                if(cityCount == 0){
                    regionVO = new ZgLuckActivityRegionVO();
                    regionVO.setProvinceCode(provinceCode);
                    regionVO.setProvinceName(provinceName);
                    regionGroupList.add(regionVO);
                }
            }

            newContain.setRegionList(regionGroupList);
        }

        // 等级
        List<Integer> zgLevels = luckActiveLevelDao.selectSrLevelListByActiveId(activityId);
        if(CollectionUtils.isNotEmpty(zgLevels)){
            newContain.setZgLevels(zgLevels);
        }
    }

这只是其中的一个小方法,看看大家能否找到你需要的内容,或者找找代码哪里还需要优化,可以给作者留言,我们共同探讨交流学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

门主冬七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值