如何在Stream流中分组统计

上面是今天碰到需求,之前就做过类似的分组统计,这个相对来说比较简单,统计的也少,序号总预约人数 这两部分交给前端了,不需要由后端统计,后端统计一下预约日期检查项目预约人数就行;

java 复制代码
  @Override
    public List<ItemStatisticsVo> statistics(ItemStatisticsModel itemStatisticsModel) {
        //调用xml接口
        List<ItemStatisticsVo> list = new ArrayList<>();
        //这里的方法是mapper.xml映射的sql,根据传入的参数进行查询,这边调用一下
        List<ItemVO> itemVOS = this.getBaseMapper().selectScrReserve(itemStatisticsModel);
        if (itemVOS.isEmpty()) {
            throw new ServiceException("查询为空");
        }
        itemVOS.forEach(t -> t.setCreateTime(DateUtil.parseDate(DateUtil.format(t.getCreateTime(), "yyyy-MM-dd"))));
        //先以创建时间分组,每个时间对应一个list
        Map<Date, List<ItemVO>> collect = itemVOS.stream().collect(Collectors.groupingBy(ItemVO::getCreateTime));

        //k->时间 v->每个时间对应的list
        collect.forEach((k, v) -> {
            //每个list中包含检查项目名称,以项目名称分组
            Map<String, List<ItemVO>> collect1 = v.stream().collect(Collectors.groupingBy(ItemVO::getItemName));
            ItemStatisticsVo vo = new ItemStatisticsVo();
            //到这儿直接set日期
            vo.setReservationDate(k);
            List<ItemStatisticsInfoVo> list1 = new ArrayList<>();
            //x->项目名称 y->list<ItemVo>
            collect1.forEach((x, y) -> {
                ItemStatisticsInfoVo infoVo = new ItemStatisticsInfoVo();
                //检查项目名称
                infoVo.setInspectionName(x);
                //统计list的大小,就是每个项目名称预约的人数
                infoVo.setScNum(y.size());
                list1.add(infoVo);
            });
            vo.setList(list1);
            list.add(vo);
        });
        return list;
    }
相关推荐
昀贝10 分钟前
IDEA启动SpringBoot项目时报错:命令行过长
java·spring boot·intellij-idea
roman_日积跬步-终至千里41 分钟前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
野犬寒鸦1 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
wenzhangli71 小时前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
HalvmånEver1 小时前
Linux:线程互斥
java·linux·运维
rainbow68891 小时前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
灵感菇_1 小时前
Java 锁机制全面解析
java·开发语言
indexsunny1 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
娇娇乔木2 小时前
模块十一--接口/抽象方法/多态--尚硅谷Javase笔记总结
java·开发语言
saber_andlibert2 小时前
TCMalloc底层实现
java·前端·网络