统计数据组合成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);
),然后再对数据进行循环遍历,最后进行组装。差不多就是这些了,有不足之处欢迎指教。
转载请标明出处,谢谢!!