diff --git a/boot-service/src/main/java/com/xwbing/demo/Ademo.java b/boot-service/src/main/java/com/xwbing/demo/Ademo.java index 2737609..7952376 100644 --- a/boot-service/src/main/java/com/xwbing/demo/Ademo.java +++ b/boot-service/src/main/java/com/xwbing/demo/Ademo.java @@ -1,7 +1,13 @@ package com.xwbing.demo; +import com.alibaba.fastjson.JSONObject; import lombok.extern.java.Log; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 项目名称: boot-module-demo * 创建时间: 2018/1/23 14:45 @@ -11,7 +17,9 @@ import lombok.extern.java.Log; @Log public class Ademo { public static void main(String[] args) { - + List list=new ArrayList<>(); + Map> aa = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("aa"))); + System.out.println("aa"); } } diff --git a/boot-service/src/main/java/com/xwbing/demo/CountDemo.java b/boot-service/src/main/java/com/xwbing/demo/CountDemo.java index e599b1b..d25710e 100644 --- a/boot-service/src/main/java/com/xwbing/demo/CountDemo.java +++ b/boot-service/src/main/java/com/xwbing/demo/CountDemo.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import java.time.LocalDate; import java.time.temporal.ChronoUnit; @@ -29,41 +28,34 @@ public class CountDemo { */ public static JSONArray pie(List list) { JSONArray result = new JSONArray(); - if (CollectionUtils.isNotEmpty(list)) { - Map> collect = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("item"))); - JSONObject obj; - for (String item : ITEM.split(",")) { - obj = new JSONObject(); - obj.put("name", item); - List sample = collect.get(item); - if (sample != null) { - int sum = sample.stream().mapToInt(value -> value.getInteger("value")).sum(); - obj.put("value", sum); - } else { - obj.put("value", 0); - } - result.add(obj); - } - } else { - JSONObject obj; - for (String item : ITEM.split(",")) { - obj = new JSONObject(); - obj.put("name", item); + if (list == null) { + list = Collections.EMPTY_LIST; + } + Map> collect = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("item"))); + JSONObject obj; + for (String item : ITEM.split(",")) { + obj = new JSONObject(); + obj.put("name", item); + List sample = collect.get(item); + if (sample != null) { + int sum = sample.stream().mapToInt(value -> value.getInteger("value")).sum(); + obj.put("value", sum); + } else { obj.put("value", 0); - result.add(obj); } + result.add(obj); } return result; } /** - * 柱状图/折线图 + * eCharts柱状图/折线图 * * @param startDate * @param endDate * @return */ - public static Map barOrLine(String startDate, String endDate, List list) { + public static Map eChartsBarOrLine(String startDate, String endDate, List list) { Map result = new HashMap<>(); //统计时间 List days = listDate(startDate, endDate); @@ -71,27 +63,22 @@ public class CountDemo { //统计数据 JSONArray aa = new JSONArray(); JSONArray bb = new JSONArray(); - if (CollectionUtils.isNotEmpty(list)) { - Map> collect = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("day"))); - days.forEach(day -> { - List sample = collect.get(day); - if (CollectionUtils.isNotEmpty(sample)) { - int sumA = sample.stream().filter(obj -> "aa".equals(obj.getString("item"))).mapToInt(obj -> obj.getInteger("value")).sum(); - int sumB = sample.stream().filter(obj -> "bb".equals(obj.getString("item"))).mapToInt(obj -> obj.getInteger("value")).sum(); - aa.add(sumA); - bb.add(sumB); - } else { - aa.add(0); - bb.add(0); - } - }); - - } else { - days.forEach(day -> { + if (list == null) { + list = Collections.EMPTY_LIST; + } + Map> collect = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("day"))); + days.forEach(day -> { + List sample = collect.get(day); + if (sample != null) { + int sumA = sample.stream().filter(obj -> "aa".equals(obj.getString("item"))).mapToInt(obj -> obj.getInteger("value")).sum(); + int sumB = sample.stream().filter(obj -> "bb".equals(obj.getString("item"))).mapToInt(obj -> obj.getInteger("value")).sum(); + aa.add(sumA); + bb.add(sumB); + } else { aa.add(0); bb.add(0); - }); - } + } + }); JSONArray series = new JSONArray(); JSONObject obj = new JSONObject(); obj.put("name", "aa"); @@ -105,6 +92,86 @@ public class CountDemo { return result; } + /** + * g2柱状图 + * + * @param startDate + * @param endDate + * @param list + * @return + */ + public static JSONArray g2Bar(String startDate, String endDate, List list) { + JSONArray result = new JSONArray(); + List days = listDate(startDate, endDate); + if (list == null) { + list = Collections.EMPTY_LIST; + } + Map> collect = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("item"))); + JSONObject obj; + for (String name : ITEM.split(",")) { + obj = new JSONObject(); + obj.put("name", name); + List sample = collect.get(name); + if (sample != null) { + Iterator it; + for (String day : days) { + int sum = 0; + it = sample.iterator(); + JSONObject next; + while (it.hasNext()) { + next = it.next(); + String date = next.getString("day"); + int value = next.getInteger("value"); + if (day.equals(date)) { + sum += value; + it.remove(); + } + } + obj.put(day, sum); + } + } else { + for (String day : days) { + obj.put(day, 0); + } + } + result.add(obj); + } + return result; + } + + /** + * g2折线图 + * + * @param startDate + * @param endDate + * @param list + * @return + */ + public static JSONArray g2Line(String startDate, String endDate, List list) { + JSONArray result = new JSONArray(); + List days = listDate(startDate, endDate); + if (list == null) { + list = Collections.EMPTY_LIST; + } + Map> collect = list.stream().collect(Collectors.groupingBy(obj -> obj.getString("day"))); + JSONObject obj; + for (String day : days) { + obj = new JSONObject(); + obj.put("day", day); + List sample = collect.get(day); + for (String item : ITEM.split(",")) { + if (sample != null) { + int sum = sample.stream().filter(it -> item.equals(it.getString("item"))).mapToInt(it -> it.getInteger("value")).sum(); + obj.put(item, sum); + } else { + obj.put(item, 0); + } + } + result.add(obj); + } + return result; + } + /** * 获取数据列表 * @@ -148,7 +215,10 @@ public class CountDemo { public static void main(String[] args) { List list = listByDate("2018-01-01", "2018-01-02"); // List list = new ArrayList<>(); +// List list = null; log.info(JSON.toJSONString(pie(list), SerializerFeature.PrettyFormat)); - log.info(JSON.toJSONString(barOrLine("2018-01-01", "2018-01-02", list), SerializerFeature.PrettyFormat)); + log.info(JSON.toJSONString(eChartsBarOrLine("2018-01-01", "2018-01-02", list), SerializerFeature.PrettyFormat)); + log.info(JSON.toJSONString(g2Bar("2018-01-01", "2018-01-02", list), SerializerFeature.PrettyFormat)); + log.info(JSON.toJSONString(g2Line("2018-01-01", "2018-01-02", list), SerializerFeature.PrettyFormat)); } }