报表统计——java实现查询某年某月每天数据,没数据补0

一般图表绘制例如echarts等,返回数据格式都大同小异。重点是利用sql或者java实现数据格式的转型,接下来是关键部分:

1.前提1:提供的工具方法——获取某月有多少天

//通过年份和月份确定该月的最后一天
    public static int getMaxDay(int year,int month ){

        Calendar time=Calendar.getInstance();
        time.clear();
        time.set(Calendar.YEAR,year); //year 为 int
        time.set(Calendar.MONTH,month-1); //month 为int
         return time.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

2.mapper层sql语句书写

<select id="getAllOrderCountByYearAndMonth" parameterType="pd" resultType="OrderCount" >
        SELECT
            sum(t.ordercount) ordercount,
            t.[month] month ,
            t.[day] day
        from
            order t
        where 1=1
        <if test="year != null and year != ‘‘">
                and t.year=convert(int, #{year})
        </if>
        <if test="month != null and month != ‘‘">
                and t.month=convert(int, #{month})
        </if>
        GROUP BY
            t.[month],t.[day]
        HAVING
            1=1
        ORDER BY t.[day] asc
    </select>

3.service层实现,调用sql返回结果,及对其返回结果进行格式转换(重要)

Map<String,String> resultMap = new HashMap<String,String>();
    //获取到数据库搜索的年份对应某月份的31天订单量
    List<OrderCount> orderCountList = orderCountManager.getAllOrderCountByYearAndMonth(pd);
    //确定某个月的天数(如果日期截止只要到有数据的最大日期,那么可以修改sql语句排列方式,例如,日期从大到小排列,那么就是位置在0上的数据是最大天数,很简单实现,此处不列出来了)
    int days = getMaxDay(Integer.parseInt(pd.get("year").toString()),Integer.parseInt(pd.get("month").toString()));
    //定义vip与常规客户数组
    int[] countVIP = new int[days];
    //将获取到不同年份不同月份不同日期对应不同的订单量放在数组中
    if (orderCountList.size()>0 && orderCountList!=null) {
        for (int i=0;i<orderCountList.size();i++) {
            OrderCount oc = orderCountList.get(i);
            //获取对应天
            if(oc!=null){
                countVIP[oc.getDay()-1] = oc.getOrderCount();
            }
        }
    }
    resultMap.put("orderStatistics", countVIP);

原文地址:https://www.cnblogs.com/yyk1226/p/10017661.html

时间: 2024-10-14 07:47:26

报表统计——java实现查询某年某月每天数据,没数据补0的相关文章

java calendar循环某年某月的所有天数

原文:java calendar循环某年某月的所有天数 代码下载地址:http://www.zuidaima.com/share/1550463248108544.htm 通过java calendar可以获取到某年某月的所有天数,然后循环 标签: 时间 java 循环 某年 某月 天数话题: 语言基础 脚本和工具 java calendar循环某年某月的所有天数

Java中查询某个日期下所有时间段的数据

除了利用时间段进行查询外,还有一个方法: 利用mybatis中的函数,将datetime转为date <if test="purch_date!= null and purch_date!=''"> date(purch_date) = #{purch_date} </if> 原文地址:https://www.cnblogs.com/sanhao/p/9504015.html

SwitchDemo(1).java【输入年份和月份,判断某年某月有多少天】

//课堂习题:输入年份和月份,判断某年某月有多少天 import java.util.Scanner; public class SwitchDemo{ public static void main(String [] args){ Scanner input=new Scanner(System.in); System.out.print("请输入需要查询的年份:"); int year=input.nextInt(); System.out.print("请输入需要查询

Java获取某年某月的第一天

1.设计源代码 FisrtDayOfMonth.java: /** * @Title:FisrtDayOfMonth.java * @Package:com.you.freemarker.model * @Description:获取某年某月的第一天 * @author:Youhaidong(游海东) * @date:2014-5-29 下午11:21:31 * @version V1.0 */ package com.you.freemarker.model; import java.text

Java获取某年某月的最后一天

1.设计源码 LastDayOfMonth.java: /** * @Title:LastDayOfMonth.java * @Package:com.you.freemarker.model * @Description:获取某月的最后一天 * @author:Youhaidong(游海东) * @date:2014-5-29 下午10:58:20 * @version V1.0 */ package com.you.freemarker.model; import java.text.Sim

Java实验项目二——打印某年某月日历

Program:打印万年历(输入年份,月份,输出该月的日历,已知1900年1月1日是星期一), 要 求: (1)编写一个方法判断闰年: (2)编写一个方法判断某年某月有多少天: (3)编写一个方法计算某年某月前距离1900年1月1日的总天数:(4)编写一个输出某年某月日历的方法: (5)编写一个测试方法. Description:该项目由多个类实现,最后类为main方法的调用.代码如下: 1 /* 2 *Description:定义工具类 3 * 4 * */ 5 6 package tools

【MySQL】【10】查询某年,某季度,某月,某周,某天的数据

前言: 1,某年 2,某季度 3,某月 4,某周 5,某天 正文: 1,某年 select * from table where created like '2018-%'; select * from table where left(created, 4) = '2018'; select * from table where year(created) = '2018'; 今年的数据 select * from table where year(created) = year(now())

5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——使用datagrid做报表统计

需要说明一点:数据库访问我使用的是EF框架,但是在报表统计着一块由于使用到了动态表,即根据每一天单独生成了一张数据表,所以不好使用EF进行预先添加,于是我在数据库访问层里面封装了两套数据库访问框架,一个就是EF,一个就是传统的ADO.NET.当设计到使用动态表时,我就调用用ADO.NET进行数据库访问操作了. 先看下View,这里我使用的是jquery easyUI里面的datagrid来做的报表.如下: 单击选中日报: 年报如下: @model YKT.Model.SubCompanyRepo

BZOJ1058: [ZJOI2007]报表统计

1058: [ZJOI2007]报表统计 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1751  Solved: 614[Submit][Status] Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个非负整数数列,并且进行一些查询操作.在最开始的时候,有一个长度为N的整数序列,并且有以下三种操作