栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java组装echarts的折线图

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java组装echarts的折线图

折线图对象

1.横轴对象

public class EChartXAxisVo implements Serializable {

    public static final EChartXAxisVo NULL = new EChartXAxisVo(Collections.emptyList(), "横轴");

    private static final long serialVersionUID = -5457112144258948057L;

    
    private List data;

    
    private String name;

    public EChartXAxisVo(List data, String name) {
        this.data = data;
        this.name = name;
    }


2.图标vo

public class EChartVo implements Serializable {


    public static final EChartVo NULL = new EChartVo(EChartXAxisVo.NULL, EChartSeriesVo.NULL);
    private static final long serialVersionUID = -1863666898042856758L;

    
    private EChartXAxisVo xAxis;

    
    private List series;


    public EChartVo(EChartXAxisVo xAxis) {
        this.xAxis = xAxis;
        this.series = new ArrayList<>();
    }
    }
数据组装进对象
 //日期图 (这里是将日期转换为每一天的日期,返回为集合)
        List times = BiUtils.between(params.getStartDate(), params.getEndDate(), params.getTimeDimension()).stream().map(c -> c.toString()).collect(Collectors.toList());
        ArrayList xAxisList = new ArrayList<>(times.size());
        //时间粒度(粒度这里,我们需求是根据天周月的粒度来展示)
        Integer timeDimension = params.getTimeDimension();
        for (int i = 0; i < times.size(); i++) {
            String localDate = times.get(i);
            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate date2 = LocalDate.parse(localDate, fmt);
            if (timeDimension == 3) {
                xAxisList.add(localDate);
            } else if (timeDimension == 2) {
                String weekOfYear = BiUtils.getWeekOfYear(date2);
                xAxisList.add(weekOfYear);
            } else if (timeDimension == 1) {
                String monthOfYear = BiUtils.getMonthOfYear(date2);
                xAxisList.add(monthOfYear);
            }
        }

        //X轴数据
        EChartXAxisVo demoX = new EChartXAxisVo(xAxisList, "时间");
        EChartVo eChartVo = new EChartVo();
        //查询商品成本,毛利率,折扣金额,折扣率,支付金额(这里注意一下,是直接调用Mapper对象查询)
        List goodsAnalysisInfoList = mapper.query(params);
        //商品成本
        Map collect = goodsAnalysisInfoList.stream().collect(Collectors.toMap(c -> c.getDates(), c -> c.getSellCostMoney()));
        //毛利率
        Map collect2 = goodsAnalysisInfoList.stream().collect(Collectors.toMap(c -> c.getDates(), c -> c.getProfitRateStr()));
        //折扣金额
        Map collect3 = goodsAnalysisInfoList.stream().collect(Collectors.toMap(c -> c.getDates(), c -> c.getDiscountMoney()));
        //折扣率
        Map collect4 = goodsAnalysisInfoList.stream().collect(Collectors.toMap(c -> c.getDates(), c -> c.getDiscountRateStr()));
        //支付
        Map collect5 = goodsAnalysisInfoList.stream().collect(Collectors.toMap(c -> c.getDates(), c -> c.getPaidAmount()));

        ArrayList xList = new ArrayList<>();
        //组装参数对象
        EChartSeriesVo seriesVo1 = new EChartSeriesVo();
        EChartSeriesVo seriesVo2 = new EChartSeriesVo();
        EChartSeriesVo seriesVo3 = new EChartSeriesVo();
        EChartSeriesVo seriesVo4 = new EChartSeriesVo();
        EChartSeriesVo seriesVo5 = new EChartSeriesVo();
        for (Object datum : demoX.getData()) {
            BigDecimal orDefault = collect.getOrDefault(datum, new BigDecimal("0.00"));
            seriesVo1.getData().add(orDefault.toString());
            seriesVo1.setName("商品成本");
            String orDefault1 = collect2.getOrDefault(datum, "0%");
            seriesVo2.getData().add(orDefault1);
            seriesVo2.setName("毛利率");
            BigDecimal orDefault2 = collect3.getOrDefault(datum, new BigDecimal("0.00"));
            seriesVo3.getData().add(orDefault2.toString());
            seriesVo3.setName("折扣金额");
            String orDefault3 = collect4.getOrDefault(datum, "0.00");
            seriesVo4.getData().add(orDefault3);
            seriesVo4.setName("折扣率");
            BigDecimal orDefault4 = collect5.getOrDefault(datum, new BigDecimal("0.00"));
            seriesVo5.getData().add(orDefault4.toString());
            seriesVo5.setName("折扣金额");
        }
        //将参数对象放入集合
        xList.add(seriesVo1);
        xList.add(seriesVo2);
        xList.add(seriesVo3);
        xList.add(seriesVo4);
        xList.add(seriesVo5);
	//(这里只是写到这种写法,如果有更好的写法欢迎留言lqm)
        eChartVo.setXAxis(demoX);
        eChartVo.setSeries(xList);
        return eChartVo;
展示成果

返回前端的数据结构


ok~折线图的数据组装暂时就这样,按照这个写法的话,柱状图也是可以使用的,如果觉得可以的话,麻烦点个赞,留个言。不清楚的也可以留言,我看到就会回

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704115.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号