统计图表展示

柔情只为你懂 2021-07-24 22:15 662阅读 0赞

一 后端聚合数据

1 web层

  1. @ApiOperation("显示统计数据")
  2. @GetMapping("show-chart/{begin}/{end}")
  3. public R showChart(
  4. @ApiParam("开始时间") @PathVariable String begin,
  5. @ApiParam("结束时间") @PathVariable String end){
  6. Map<String, Map<String, Object>> map = dailyService.getChartData(begin, end);
  7. return R.ok().data("chartData", map);
  8. }

2 service层

接口

  1. Map<String, Map<String, Object>> getChartData(String begin, String end);

实现

  1. @Override
  2. public Map<String, Map<String, Object>> getChartData(String begin, String end) {
  3. // 学员登录数统计
  4. Map<String, Object> registerNum = this.getChartDataByType(begin, end, "register_num");
  5. // 学员注册数统计
  6. Map<String, Object> loginNum = this.getChartDataByType(begin, end, "login_num");
  7. // 课程播放数统计
  8. Map<String, Object> videoViewNum = this.getChartDataByType(begin, end, "video_view_num");
  9. // 每日新增课程数统计
  10. Map<String, Object> courseNum = this.getChartDataByType(begin, end, "course_num");
  11. Map<String, Map<String, Object>> map = new HashMap<>();
  12. map.put("registerNum", registerNum);
  13. map.put("loginNum", loginNum);
  14. map.put("videoViewNum", videoViewNum);
  15. map.put("courseNum", courseNum);
  16. return map;
  17. }
  18. /**
  19. * 根据时间和要查询的列查询数据
  20. * @param begin
  21. * @param end
  22. * @param type 要查询的列名
  23. * @return
  24. */
  25. private Map<String, Object> getChartDataByType(String begin, String end, String type){
  26. Map<String, Object> map = new HashMap<>();
  27. List<String> xList = new ArrayList<>(); // 日期列表
  28. List<Integer> yList = new ArrayList<>(); // 数据列表
  29. QueryWrapper<Daily> queryWrapper = new QueryWrapper<>();
  30. queryWrapper.select("date_calculated", type);
  31. queryWrapper.between("date_calculated", begin, end);
  32. List<Map<String, Object>> mapsData = baseMapper.selectMaps(queryWrapper);
  33. for (Map<String, Object> data : mapsData) {
  34. String dateCalculated = (String)data.get("date_calculated");
  35. xList.add(dateCalculated);
  36. Integer count = (Integer)data.get(type);
  37. yList.add(count);
  38. }
  39. map.put("xData", xList);
  40. map.put("yData", yList);
  41. return map;
  42. }

二 前端显示图标

1 api

  1. showChart(searchObj) {
  2. return request({
  3. // baseURL: 'http://127.0.0.1:8180',
  4. url: `/admin/statistics/daily/show-chart/${searchObj.begin}/${searchObj.end}`,
  5. method: 'get'
  6. })
  7. }

2 脚本

  1. <script>
  2. var echarts = require('echarts')
  3. import statisticsApi from '@/api/statistics'
  4. export default {
  5. data() {
  6. return {
  7. searchObj: {},
  8. btnDisabled: false,
  9. chartData: {} // 数据
  10. }
  11. },
  12. methods: {
  13. // 显示数据
  14. showChart() {
  15. statisticsApi.showChart(this.searchObj).then(response => {
  16. this.chartData = response.data.chartData
  17. this.showChartByType('register_num', '学员登录数统计', this.chartData.courseNum)
  18. this.showChartByType('login_num', '学员注册数统计', this.chartData.registerNum)
  19. this.showChartByType('video_view_num', '课程播放数统计', this.chartData.videoViewNum)
  20. this.showChartByType('course_num', '每日课程数统计', this.chartData.loginNum)
  21. })
  22. },
  23. showChartByType(type, title, data) {
  24. // 基于准备好的dom,初始化echarts实例
  25. var myChart = echarts.init(document.getElementById(type))
  26. // 指定图表的配置项和数据
  27. var option = {
  28. title: {
  29. text: title
  30. },
  31. xAxis: {
  32. data: data.xData
  33. },
  34. yAxis: {},
  35. series: [{
  36. type: 'line',
  37. data: data.yData
  38. }]
  39. }
  40. // 使用刚指定的配置项和数据显示图表。
  41. myChart.setOption(option)
  42. }
  43. }
  44. }
  45. </script>

三 测试结果

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,662人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据的图表展示

    1 落在,某一特定类别或组中的数据个数称为() A、频数 B、频率 C、频数分布表 D、累积频数 正确答案: A 2 一个样本或总体中各个部分的数

    相关 统计图表操作之G2

    前言:最近在做一个东西的时候,需要对于用户数据,以及其他相关的数据进行图表统计,所以自己在网上找了一下插件,发现了G2,这的确是一个好东西,功能强大,但是唯一不足的时候该插件

    相关 统计图表

    统计图表 一. 为什么要使用统计图表 1,数据可视化,用于分析 2,用于方便领导进行决策统计 二. 需要支持的东西 必须得有数据【不能少】,数据需要分类