echarts饼图前后端代码SpringCloud+Vue3

简介: echarts饼图前后端代码SpringCloud+Vue3

 ♥️作者:小宋1021

🤵‍♂️个人主页:小宋1021主页

♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!

🎈🎈加油! 加油! 加油! 加油

🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+!


展示:

image.gif 编辑

前端:

//饼图
  var chartDom = document.getElementById('barsEchart')
  var myChart = echarts.init(chartDom)
  var option
  option = {
  title: {
    text: '成绩人数占比',
    left: 'center'
  },
  tooltip: {
    trigger: 'item'
  },
  legend: {
    orient: 'vertical',
    left: 'left'
  },
  series: [
    {
     
      type: 'pie',
      radius: '50%',
      data: listPie.value.test,
      emphasis: {
        itemStyle: {
          shadowBlur: 10,
          shadowOffsetX: 0,
          shadowColor: 'rgba(0, 0, 0, 0.5)'
        }
      }
    }
  ]
};
  option && myChart.setOption(option)
  window.addEventListener('resize', function() {
    myChart.resize();
});

image.gif

赋值语句:

const dataKPI = await TeacherMonthExamApi.teacherExamAnalysisKPI(queryParams)
 listKPI.value = dataKPI.list[0]

image.gif

后端向前端返回的结果:

image.gif 编辑

我们要与echarts官网的数据格式相对应,value和name也要一一对应

image.gif 编辑

后端:

我为了返回的时候返回value和name,所以提前定义了一个实体类,用于定义和接收数据:

image.gif 编辑

package com.todod.education.module.study.controller.admin.data.vo;
import lombok.Data;
@Data
public class TeacherData {
    private int value;
    private String name;
    public TeacherData(int value, String name) {
        this.value = value;
        this.name = name;
    }
}

image.gif

XML文件(可忽略):

<!--    教师成绩分析表KPI-->
    <select id="teacherExamAnalysisKPI" resultType="java.util.Map">
        SELECT
            COUNT(CASE WHEN htme.exam_score::integer = 150 THEN 1 END) AS perfect_score_count,
            (SELECT MAX(htme_inner.exam_score::integer) FROM hr_teacher_month_exam htme_inner) AS highest_score,
            COUNT(CASE WHEN htme.exam_score::integer BETWEEN 0 AND 60 THEN 1 ELSE NULL END) AS score_0_60_count,
            COUNT(CASE WHEN htme.exam_score::integer BETWEEN 61 AND 120 THEN 1 ELSE NULL END) AS score_61_120_count,
            COUNT(CASE WHEN htme.exam_score::integer BETWEEN 121 AND 150 THEN 1 ELSE NULL END) AS score_121_150_count
        FROM
            hr_teacher_month_exam htme
                JOIN
            hr_teacher_manage htm ON htm.id = htme.teacher_id
        WHERE
        htme.deleted = 0
        AND
        htm.deleted = 0
        <if test=" dataPageReqVO.years != null ">
            AND EXTRACT(YEAR FROM (htme.exam_date)) =  CAST(#{dataPageReqVO.years} AS numeric)
        </if>
        <if test=" dataPageReqVO.months != null ">
            AND EXTRACT(MONTH FROM (htme.exam_date)) =  CAST(#{dataPageReqVO.months} AS numeric)
        </if>
    </select>

image.gif

Mapper:

//教师成绩分析表KPI
    IPage<Map> teacherExamAnalysisKPI(IPage page,@Param("dataPageReqVO") DataPageReqVO dataPageReqVO);

image.gif

Service:

//教师成绩分析表KPI
    PageResult<Map> teacherExamAnalysisKPI(DataPageReqVO dataPageReqVO);

image.gif

实现类:

//教师成绩分析表KPI
    @Override
    public PageResult<Map> teacherExamAnalysisKPI(DataPageReqVO dataPageReqVO) {
        IPage<Map> page = new Page<>(dataPageReqVO.getPageNo(), dataPageReqVO.getPageSize());
        if (dataPageReqVO.getYears() != null && !dataPageReqVO.getYears().isEmpty()) {
            dataPageReqVO.setYears(dataPageReqVO.getYears().substring(0, 4));
        }
        if (dataPageReqVO.getMonths() != null && !dataPageReqVO.getMonths().isEmpty() ){
            dataPageReqVO.setMonths(dataPageReqVO.getMonths().substring(6, 7));
        }
        dataMapper.teacherExamAnalysisKPI(page,dataPageReqVO);
        // 获取查询结果的记录
        List<Map> records = page.getRecords();
        // 对每条记录进行操作
        for (Map<String, Object> record : records) {
            HashMap<Integer,String > teacherExam = new HashMap<>();
            List<Object> pieData = new ArrayList<>();
            TeacherData item1 = new TeacherData(Integer.parseInt(record.get("score_0_60_count").toString()), "0~60分人数");
            TeacherData item2 = new TeacherData(Integer.parseInt(record.get("score_61_120_count").toString()), "61~120分人数");
            TeacherData item3 = new TeacherData(Integer.parseInt(record.get("score_121_150_count").toString()), "121~150分人数");
            pieData.add(item1);
            pieData.add(item2);
            pieData.add(item3);
            record.put("test", pieData);
        }
        return new PageResult<>(page.getRecords(), page.getTotal());
    }

image.gif

由于我这个是通过map结果集直接从数据库返回的,并没有对应的DO实体类,所以我要在实现类里做一步操作:

// 获取查询结果的记录

       List<Map> records = page.getRecords();

       // 对每条记录进行操作

       for (Map<String, Object> record : records) {}

获取查询出来的map集合在对每一条进行操作

List<Object> pieData = new ArrayList<>();
            TeacherData item1 = new TeacherData(Integer.parseInt(record.get("score_0_60_count").toString()), "0~60分人数");
            TeacherData item2 = new TeacherData(Integer.parseInt(record.get("score_61_120_count").toString()), "61~120分人数");
            TeacherData item3 = new TeacherData(Integer.parseInt(record.get("score_121_150_count").toString()), "121~150分人数");
            pieData.add(item1);
            pieData.add(item2);
            pieData.add(item3);
            record.put("test", pieData);

image.gif

定义一个对象的集合与前端想要接受的数据类型匹配,再用我们之前定义的TeacherData,定义三个对象,再依次插入到对象集合pieData中,最后put到record集合中,也就是我们的返回集合,就大功告成了。

目录
相关文章
ECharts 饼图数据放在饼图内部显示
ECharts 饼图数据放在饼图内部显示
256 0
|
2月前
|
数据格式
ECharts 饼图
本章节我们将绘制饼图。
57 15
|
3月前
Echarts——饼图折线图柱状图相互转换
Echarts——饼图折线图柱状图相互转换
133 0
|
5月前
|
开发者 容器
Echarts饼图实现-今日进度-动态图
构建一个动态旋转的ECharts饼图,包括渐变色和动画效果。初始化ECharts实例,设置图表尺寸和背景,配置标题、颜色、系列数据及自定义渲染。利用`renderItem`绘制弧线和圆点,`getCirlPoint`计算坐标。通过`setInterval`和`draw`函数实现旋转动画。完整代码可在链接下载。
122 0
Echarts饼图实现-今日进度-动态图
|
4月前
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
386 0
|
5月前
|
计算机视觉
Echarts饼图,自定义饼图图例的排列方式, formatter使用语法
Echarts饼图,自定义饼图图例的排列方式, formatter使用语法
|
5月前
|
数据可视化 JavaScript 前端开发
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
|
5月前
|
Serverless 开发者 容器
Echarts饼图-今日进度-动态图
构建一个动态饼图,采用ECharts,背景为蓝色科技风,有星球转动效果。通过`echarts.init`初始化,设置图表尺寸和背景色,配置`option`对象含标题、颜色等。利用`series`定义渐变色并自定义渲染,通过`renderItem`绘制弧线和圆点。`getCirlPoint`函数计算坐标,`draw`函数更新角度实现动画。代码包括图表初始化、系列配置、动画逻辑等关键部分。完整代码可在链接处下载。
67 0
ECharts 饼图切换数据源bug 开始没数据显示 切换或刷新后显示
ECharts 饼图切换数据源bug 开始没数据显示 切换或刷新后显示
147 0
Echarts饼图之-玫瑰图数据交互
Echarts饼图之-玫瑰图数据交互
110 0

热门文章

最新文章