如何在Stream流中分组统计

news2024/11/25 8:20:36

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

  @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;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

checkbox post参数接收

checkbox 定义 <div class"check-box"> <label for"ck1">batchInsert:</label><input type"checkbox" id"ck1" checkedname"ckFn" value"batchInsert" > </div> <div class&qu…

Python爬虫获取美女头像并保存本地(观山篇一)

Python爬虫获取美女头像并保存本地&#xff08;观山篇一&#xff09; 前言步骤一步骤二步骤三步骤四步骤五最终效果完整代码结言 前言 最近某短视频平台上经常刷到&#xff0c;人生四大雅事&#xff1a;“品茗、抚琴、观山、听雨”。那么今天我们就利用python观山所看到的美景给…

如何做好一名网络工程师?具备的技能有哪些?

支持属于网络工程师的工作范围的企业网络&#xff0c;此网络与支持它的铜或光纤基础架构一样性能良好。网络工程师及其布线厂区需要为支持最新网络技术做好准备。网络工程师作为任何性能问题的解决者&#xff0c;需要拥有必要的工具来确定问题所在 — 在网络中还是在其他地方。…

在众多单片机市场中STM32系列为何能脱颖而出?

回顾单片机市场&#xff0c;除了传统的51系列外&#xff0c;早些年主要有PIC、TI、Nxp、ATMEL、Freescale等厂商。然而&#xff0c;这些厂商普遍存在一些问题&#xff1a;资料难以获取&#xff0c;文档数量有限且大多是英文的&#xff0c;开发板价格昂贵&#xff0c;调试器成本…

Mac 新手10个小窍门

即便你是 Mac 新手&#xff0c;也会发现它易学好用。你可以点按程序坞上的访达&#xff0c;快速查看到所有文件&#xff1b;把你喜爱的文件夹拖入边栏&#xff1b;你可以自定义查看文件的方式&#xff0c;甚至可以按下空格键&#xff0c;就能一键预览文档&#xff1b;还能在多台…

Linux 复制进程fork

一、父进程和子进程 当前的一个进程在fork的时候可以复制当前的进程产生一个进程&#xff0c;这时产生出来的这个进程就是子进程&#xff0c;被复制的进程叫做父进程。子进程会将环境变量从父进程继承过来&#xff0c;或者说被拷贝过来。父进程也会有它的父进程&#xff0c;一…

【动态规划基础】数字三角形(IOI1994)

题目描述 数字三角形 输入输出样例 输入样例#1&#xff1a; 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5输出样例#1&#xff1a; 30思路&#xff1a; 这题可能看到的第一眼——直接贪心然后一层一层判断呀&#xff01;&#xff01;&#xff01;不过很快又会发现&#xff0c;额___好…

小白如何轻松制作产品帮助中心页面?

产品帮助中心是每个网站/产品必不可少的页面&#xff0c;产品帮助中心页面成为了企业提供客户支持和解决方案的重要组成部分。对于初次接触建立帮助中心页面的小白来说&#xff0c;也许会感到一些困惑和无从下手。本文将为小白介绍如何轻松制作产品帮助中心页面&#xff0c;帮助…

16 dplsys GAN

和有监督的分类工作不同&#xff0c;生成任务的目标更不明确。难以评价生成结果的好坏。 Oracle discriminator 假设我们有一个先知判别器oracle discriminator可以分辨我们生成的内容是真还是假。 我们想让生产成的结果足够真实&#xff0c;所以要 fool Oracle discriminato…

将el-table中的展开列(expand)修改成slots自定义插槽

用过element-ui的有知道&#xff0c;展开这个箭头无法自定义&#xff0c;一点办法都没有&#xff0c;官方根本就没提供预留任何位置给你操作。 从下面图中&#xff0c;可以看到有两个插槽&#xff0c;默认插槽和表头插槽。 我们来扩展一个自定义插槽来实现我们想要的功能。…

【dubbo】自定义filter打印接口请求日志

目标 在应用调用dubbo接口或提供的dubbo接口被调用时&#xff0c;通过自定义的filter打印接口请求时的入参信息、服务名、方法名及返回值 实现filter 1. 自定义filter实现类 Slf4j Activate(group {"provider", "consumer"}) public class DubboProvi…

展会动态 | 迪捷软件邀您参加2023ATC汽车电子软件与软件技术周

论坛背景 随着汽车智能化和电动化的发展&#xff0c;汽车电子与软件技术已经成为汽车产业的重点方向。为促进行业创新发展&#xff0c;各大汽车厂商、供应链企业和研究机构都在积极探索新的技术和应用。 2023ATC汽车电子与软件技术周&#xff08;以下简称“技术周”&#xff…

pytest的fixture梳理

fixture特性 可以重复使用&#xff0c;多个用例可以使用同一个fixture一个测试用例可以使用多个装置 import pytest # Arrange pytest.fixture def first_entry():return "a"# Arrange pytest.fixture def second_entry():return 2# Arrange pytest.fixture def or…

Linux常用命令——dmidecode命令

在线Linux命令查询工具 dmidecode 在Linux系统下获取有关硬件方面的信息 补充说明 dmidecode命令可以让你在Linux系统下获取有关硬件方面的信息。dmidecode的作用是将DMI数据库中的信息解码&#xff0c;以可读的文本方式显示。由于DMI信息可以人为修改&#xff0c;因此里面…

【数据结构与算法】二叉搜索树

文章目录 二叉搜索树的结构二叉搜索树的实现节点的定义二叉搜索树的框架构造函数拷贝构造函数赋值运算符重载析构函数搜索操作插入操作删除操作 二叉搜索树的应用二叉搜索树的效率 二叉搜索树的结构 在浅学一下二叉树链式存储结构的遍历_链式存储二叉树按层次遍历_LeePlace的博…

【SpringBoot】| 接口架构风格—RESTful

目录 一&#xff1a;接口架构风格—RESTful 1. 认识RESTful 2. RESTful 的注解 一&#xff1a;接口架构风格—RESTful 1. 认识RESTful &#xff08;1&#xff09;接口 ①接口&#xff1a; API&#xff08;Application Programming Interface&#xff0c;应用程序接口&…

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

NLP文本匹配任务Text Matching [有监督训练]&#xff1a;PointWise&#xff08;单塔&#xff09;、DSSM&#xff08;双塔&#xff09;、Sentence BERT&#xff08;双塔&#xff09;项目实践 0 背景介绍以及相关概念 本项目对3种常用的文本匹配的方法进行实现&#xff1a;Poin…

物联网和不断发展的ITSM

物联网将改变社会&#xff0c;整个技术行业关于对机器连接都通过嵌入式传感器、软件和收集和交换数据的电子设备每天都在更新中。Gartner 预测&#xff0c;全球将有4亿台互联设备投入使用。 无论企业采用物联网的速度如何&#xff0c;连接设备都将成为新常态&#xff0c;IT服务…

iVX引领自动编程新时代:从百万应用到普适AST转换的技术突破

一、引言 在人工智能和自动编程的交汇点上&#xff0c;iVX以其独特的自动编程训练模型&#xff0c;正引领着新一轮的技术革命。通过百万个通过iVX IDE生成的应用进行有监督训练&#xff0c;iVX成功地将任意网站或网页转成了iVX IDE中的AST&#xff0c;展示了其强大的技术实力。…

浅谈GIS和三维GIS的区别?

GIS&#xff08;地理信息系统&#xff09;和三维GIS&#xff08;3D地理信息系统&#xff09;是地理信息领域的两个重要概念&#xff0c;它们在地理数据的处理和分析方面具有不同的特点和应用。可能很多人分不清二者的区别&#xff0c;本文就带大家简单了解一下二者的区别。 定义…