统计数据组合成echarts图表

统计数据组合成echarts图表

记录一下,有些数据库没有专门创建日期表,但是有些需求是需要我们按照日期统计数据并制作报表,这就需要我们自己组装数据了,话不多说上干货。下面代码以按年组装数据,按日组装数据可在文章尾部查看提示。

传入数据类型JSONObject

/**
data1,data2,data3 需要组装的数据,可根据实际需求自行增删
s1,s2,s3 报表所需要的字段
*/
public static JSONObject monthEachYearUtil(JSONObject data1,
                                        JSONObject data2, JSONObject data3, String s1,
                                        String s2, String s3)
            throws ParseException {
        // 转换成echart报表需要的数据
        // 数据对齐,都按1-12月排
        JSONObject o = null;
        double v1 = 0;
        double v2 = 0;
        double v3 = 0;
        String key = null;
        JSONArray arr= new JSONArray();
        JSONArray list1 = new JSONArray();
        for (int i = 1; i <= 12; i++) {
            arr.add(i + "月");
            key = "" + i;
            //key = (i < 10 ? "0" + i : "" + i); 统计月份类似于01这种使用这个组装
            o = new JSONObject();
            o.put("date", i + "月");
            if (data1.containsKey(key)) {
                v1 = data1.getDoubleValue(key);
            } else {
                v1 = 0;
            }
            if (data2.containsKey(key)) {
                v2 = data2.getDoubleValue(key);
            } else {
                v2 = 0;
            }
            if (data3.containsKey(key)) {
                v3 = data3.getDoubleValue(key);
            } else {
                v3 = 0;
            }
            o.put(s1, v1);
            o.put(s2, v2);
            o.put(s3, v3);
            list1.add(o);
        }
        JSONObject data = new JSONObject();
        data.put("dateTime", arr);
        data.put("data", list1);
        return data;
    }

传入数据类型List集合

/**
list1、list2 需要组装的数据 可根据需要统计的list集合数量自行增删
s1、s2 返回报表的字段
*/
 public static JSONObject getEchart(List<JSONObject> list1, List<JSONObject> list2, String s1, String s2) {
        JSONObject data1 = new JSONObject();
        JSONObject data2 = new JSONObject();
        for (JSONObject o : list1) {
        //month 统计结果的月份  value 该月份对应的值
            data1.put(o.getString("month"), o.getDouble("value"));
        }
        for (JSONObject o : list2) {
        //month 统计结果的月份  value 该月份对应的值
            data2.put(o.getString("month"), o.getDouble("value"));
        }
        JSONArray arr = new JSONArray();
        JSONArray list = new JSONArray();
        JSONObject o = null;
        String key = null;
        double v1 = 0;
        double v2 = 0;
        for (int i = 1; i <= 12; i++) {
            arr.add(i + "月");
            key = "" + i;
            //key = (i < 10 ? "0" + i : "" + i); 统计月份类似于01这种使用这个组装
            o = new JSONObject();
            o.put("date", i + "月");
            if (data1.containsKey(key)) {
                v1 = data1.getDoubleValue(key);
            } else {
                v1 = 0;
            }
            if (data2.containsKey(key)) {
                v2 = data2.getDoubleValue(key);
            } else {
                v2 = 0;
            }
            o.put(s1, v1);
            o.put(s2, v2);
            list.add(o);
        }
        JSONObject data = new JSONObject();
        data.put("dateTime", arr);
        data.put("data", list);
        return data;
    }

总结

常用数据统计的数据类型是这两种,也要其他的数据类型需要统计的,不过区别不是很大,这种方法也是把得到的数据直接遍历一遍再重新赋值组装,按照天数的统计原理也是一样的,不过需要获取当前的月份的天数(某月的天数获取:Calendar cal = Calendar.getInstance(); cal.setTime(month); int maxDay = cal.getMaximum(Calendar.DATE);),然后再对数据进行循环遍历,最后进行组装。差不多就是这些了,有不足之处欢迎指教。
转载请标明出处,谢谢!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值