springboot数据统计

业务代码

    /**
     * 分类数据总量
     * @return
     */
    @Override
    public DataDateStatistics sortDataCount(String year) {
        //按年或者按月统计
        if (StringUtils.isBlank(year)){
            //统计前十年数据
            Calendar cal = Calendar.getInstance();
            int finishYear = cal.get(Calendar.YEAR);
            int beginYear = finishYear - 9;
            List<Integer> xAxis = new ArrayList<>();
            while(beginYear < finishYear + 1){
                xAxis.add(beginYear);
                beginYear += 1;
            }
            //todo 按名称排序
            List<SortDataCount> sortDataCounts = dataStatisticsMapper.sortDataCountYear();

            return dataConvert(sortDataCounts,xAxis);
        }else {
            //获取月份
            List<Integer> xAxis = new ArrayList<>();
            int month = 1;
            while(xAxis.size() < 12){
                xAxis.add(month);
                month += 1;
            }
            List<SortDataCount> sortDataCounts = dataStatisticsMapper.sortDataCountMonth(year);

            return dataConvert(sortDataCounts, xAxis);
        }
    }

    /**
     * 数据转化、返回
     * @param sortDataCounts
     * @param xAxis
     * @return
     */
    public static DataDateStatistics dataConvert(List<SortDataCount> sortDataCounts, List<Integer> xAxis){
        DataDateStatistics dataDateStatistics = new DataDateStatistics();
        List<DataInfo> dataInfos = new ArrayList<>();

        for (SortDataCount sortDataCount : sortDataCounts) {
            if (CollectionUtil.isEmpty(dataInfos) ||
                    !sortDataCount.getName().equals(dataInfos.get(dataInfos.size()-1).getTitle())){
                DataInfo dataInfo = new DataInfo();

                //初始化y轴数据
                List<Integer> yAxis = new ArrayList<>();
                while (yAxis.size() < xAxis.size()) {
                    yAxis.add(0);
                }
                dataInfo.setYAxis(yAxis);
                dataInfo.setTitle(sortDataCount.getName());
                int index = xAxis.indexOf(sortDataCount.getDate());
                dataInfo.getYAxis().set(index, sortDataCount.getValue());

                dataInfos.add(dataInfo);
            }else {
                DataInfo dataInfo = dataInfos.get(dataInfos.size() - 1);
                int index = xAxis.indexOf(sortDataCount.getDate());
                dataInfo.getYAxis().set(index, sortDataCount.getValue());
            }
        }
        dataDateStatistics.setXAxis(xAxis);
        dataDateStatistics.setDataInfos(dataInfos);

        return dataDateStatistics;
    }

sql语句

//按月
select count(*) as '数量',date_format(publish_time,'%Y-%m') as month from document
where publish_time BETWEEN  '2021-01-01' and '2022-01-01'
group by month;
//按年
select count(*) as '数量',date_format(publish_time,'%Y') as month from document
where publish_time BETWEEN  '2011-01-01' and '2022-01-01'
group by month;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值