基于 SpringBoot + Echarts 实现的动态实时大屏

举报
民工哥 发表于 2022/07/09 00:32:50 2022/07/09
【摘要】 点击下方“Java编程鸭”关注并标星 更多精彩 第一时间直达 来源:https://yydatav.blog.csdn.net/?type=blog 效果图展示         一、 确定需求方案 1、确定产品上线部署的屏幕LED分辨率...

点击下方“Java编程鸭”关注并标星

更多精彩 第一时间直达

来源:https://yydatav.blog.csdn.net/?type=blog

效果图展示

cd04218da2d5eaf88f2350903b0d6cbc.gif

499ba5fe319a333da4cd94868a565c09.png 

4149179cb38b788a876ea42d04fd0f6d.png 

f2e44883b48558ff7cea090394131195.png 

aeb53f06c18d499cf6bc3bb98382071c.png 

cd15ede1791fdac50ccbf60309cccb34.png

一、 确定需求方案

1、确定产品上线部署的屏幕LED分辨率

本案例基于16:9 屏宽比,F11全屏显示。

2、部署方式 

基于免安装可执行程序:支持Windows、Linux、Mac等各种操作系统;将程序复制到服务器上即可,无需其它环境依赖;

观看方式:既可在服务器上直接观看程序界面,也可在远程用浏览器打开播放,例如Chrome浏览器、360浏览器等。

二、整体架构设计

  1. 前端基于Echarts开源库设计,使用WebStorm编辑器;

  2. 后端基于Java Web实现,使用 IDEA 编辑器;

  3. 数据传输格式:JSON;

  4. 数据源类型:目前采用JSON文件方式,自行添加Mybatis可支持PostgreSQL、MySQL、Oracle、Microsoft SQL Server、SQLite,自行添加POI可支持Excel表格等,还可以定制HTTP API接口方式。

    1. 数据更新方式:采用http get 轮询方式 。在实际应用中,也可以视情况选择j监测后端数据实时更新,实时推送到前端的方式;

三、编码实现 (关键代码)

1、前端html代码 - 页面布局layout&样式style


   
   
  1. <div class="container_fluid">
  2.         <!-- 标题栏 -->
  3.         <div class="row_fluid">
  4.             <div id="container_1" class="col-xs-12 col-md-12">
  5.  
  6.             </div>
  7.         </div>
  8.  
  9.         <!-- 上栏 -->
  10.         <div class="row_fluid">
  11.  
  12.             <!-- 上左栏 -->
  13.             <div id="container_2" class="col-xs-12 col-md-4">
  14.                 <div id="container_2_1" class="col-xs-12 col-md-6">
  15.                 </div>
  16.                 <div id="container_2_2" class="col-xs-12 col-md-6">
  17.                 </div>
  18.                 <div id="container_2_3" class="col-xs-12 col-md-12">
  19.                 </div>
  20.             </div>
  21.  
  22.             <!-- 上中栏 -->
  23.             <div id="container_3" class="col-xs-12 col-md-4">
  24.                 <iframe src="myimg/video.mp4" scrolling="no" border=0 frameborder="no" framespacing=0
  25.                     allowfullscreen="true" width="100%" height="100%"> </iframe>
  26.             </div>
  27.  
  28.             <!-- 上右栏 -->
  29.             <div id="container_4" class="col-xs-12 col-md-4">
  30.                 <div id="container_4_1" class="col-xs-12 col-md-3">
  31.                 </div>
  32.  
  33.                 <div id="container_4_2" class="col-xs-12 col-md-3">
  34.                 </div>
  35.  
  36.                 <div id="container_4_3" class="col-xs-12 col-md-3">
  37.                 </div>
  38.  
  39.                 <div id="container_4_4" class="col-xs-12 col-md-3">
  40.                 </div>
  41.  
  42.                 <div id="container_4_5" class="col-xs-12 col-md-6">
  43.                 </div>
  44.  
  45.                 <div id="container_4_6" class="col-xs-12 col-md-6">
  46.                 </div>
  47.             </div>
  48.         </div>
  49.     </div>
  50.  
  51.     <!-- 下栏 -->
  52.     <div class="row_fluid">
  53.         <!-- 下左栏 -->
  54.         <div id="container_5" class="col-xs-12 col-md-4">
  55.  
  56.             <div id="container_5_1" class="col-xs-12 col-md-12">
  57.             </div>
  58.             <div id="container_5_2" class="col-xs-12 col-md-12">
  59.             </div>
  60.         </div>
  61.  
  62.         <!-- 下中栏 -->
  63.         <div id="container_6" class="col-xs-12 col-md-4">
  64.         </div>
  65.  
  66.         <!-- 下右栏 -->
  67.         <div class="col-xs-12 col-md-4">
  68.             <div id="container_7" class="row_fluid">
  69.                 <div id="container_7_1" class="col-xs-12 col-md-6">
  70.                 </div>
  71.                 <div id="container_7_2" class="col-xs-12 col-md-6">
  72.                 </div>
  73.                 <div id="container_7_3" class="col-xs-12 col-md-12">
  74.                 </div>
  75.             </div>
  76.         </div>
  77.  
  78.     </div>

2、前端JS代码 - 各个echarts图表


   
   
  1. var idContainer_4_5 = "container_4_5";
  2. function initEchart_4_5() {
  3.   // 基于准备好的dom,初始化echarts实例
  4.   var myChart = echarts.init(document.getElementById(idContainer_4_5), gTheme);
  5.   option = {
  6.     title: {
  7.       text: "年龄分布",
  8.       top: "10%",
  9.       left: "center",
  10.       textStyle: {
  11.         color: "#17c0ff",
  12.         fontSize: "12",
  13.       },
  14.     },
  15.  
  16.     tooltip: {
  17.       trigger: "item",
  18.       formatter: "{a} <br/>{b}: {c} ({d}%)",
  19.       position: function (p) {
  20.         //其中p为当前鼠标的位置
  21.         return [p[0] + 10, p[1] - 10];
  22.       },
  23.     },
  24.  
  25.     grid: {
  26.       left: "0",
  27.       right: "10",
  28.       bottom: "25%",
  29.       top: "20%",
  30.       containLabel: true,
  31.     },
  32.  
  33.     xAxis: {
  34.       type"category",
  35.       data: [],
  36.       axisLabel: {
  37.         textStyle: {
  38.           color: "rgba(255,255,255,.8)",
  39.           fontSize: 10,
  40.         },
  41.       },
  42.       axisLine: {
  43.         lineStyle: {
  44.           color: "rgba(255,255,255,.2)",
  45.         },
  46.       },
  47.       splitLine: {
  48.         lineStyle: {
  49.           color: "rgba(255,255,255,.1)",
  50.         },
  51.       },
  52.     },
  53.     yAxis: {
  54.       type"value",
  55.       data: [],
  56.       axisLabel: {
  57.         textStyle: {
  58.           color: "rgba(255,255,255,.8)",
  59.           fontSize: 10,
  60.         },
  61.       },
  62.       axisLine: {
  63.         lineStyle: {
  64.           color: "rgba(255,255,255,.2)",
  65.         },
  66.       },
  67.       splitLine: {
  68.         lineStyle: {
  69.           color: "rgba(255,255,255,.1)",
  70.         },
  71.       },
  72.     },
  73.     series: [
  74.       {
  75.         name: "年龄分布",
  76.         type"bar",
  77.         stack: "total",
  78.         label: {
  79.           show: true,
  80.         },
  81.       },
  82.     ],
  83.   };
  84.  
  85.   // 使用刚指定的配置项和数据显示图表。
  86.   myChart.setOption(option);
  87.   window.addEventListener("resize", function () {
  88.     myChart.resize();
  89.   });
  90. }
  91.  
  92. function getKeys(dataList) {
  93.   var keys = [];
  94.   var len = dataList.length;
  95.   for (var i = 0; i < len; i++) keys.push(dataList[i].name);
  96.   return keys;
  97. }
  98.  
  99. function asyncData_4_5() {
  100.   $.getJSON("myjson/bar_age.json").done(function (data) {
  101.     var myChart = echarts.init(document.getElementById(idContainer_4_5));
  102.     myChart.setOption({
  103.       xAxis: { data: getKeys(data) },
  104.       series: [{ data: data }],
  105.     });
  106.   }); //end $.getJSON
  107. }
  108.  
  109. initEchart_4_5();

3、后端Java代码


   
   
  1. @RestController
  2. @RequestMapping("/json")
  3. public class Process {
  4.  
  5.     @RequestMapping("/{filename}")
  6.     public String json(@PathVariable("filename") String filename) throws Exception {
  7.         System.out.println(filename);
  8.         ChangeJSON(filename);
  9.  
  10.         String jsonStr = readJSON(filename);
  11.         System.out.println(jsonStr);
  12.         return jsonStr;
  13.     }

4、数据通信 JSON

[{"name""<18""value"2962}, {"name""18-23""value"3119}, {"name""24-30""value"2562}, {"name""31-40""value"1024}, {"name""41-50""value"2791}, {"name"">50""value"4073}]
  
  

四、开发配置&代码结构说明

1、Java开发环境配置

38b202a867b1926a9f0c2f5c998af922.png

 f50121d572230253f464323e70f0ab93.png

9f41cd39f82167c37bdfada18c0ba404.png

 然后GENERATE,下载包即可。

2、json库配置

使用alibaba的json库,pom.xml文件增加配置:


   
   
  1. <dependency>
  2.    <groupId>com.alibaba</groupId>
  3.    <artifactId>fastjson</artifactId>
  4.    <version>1.2.51</version>
  5. </dependency>

3、代码结构说明 

a、静态路径

da7ba12392400d78b4cf7be82dd0b96a.png

b、Java 目录

7bc0499d37a457901e2aa739d4d7fd02.png

c、端口配置

ac345ebe7e40f8d2df10b9448238fe90.png

4、启动命令 

e3a8b5629397ebebcf21f08b5b84515b.png

5、浏览器查看

浏览器中输入网址查看大屏(端口为 application.properties 中的 server.port 值)http://localhost:80xx 

END


   
   
  1. 看完本文有收获?请转发分享给更多人
  2. 关注「Java编程鸭」,提升Java技能
  3. 关注Java编程鸭微信公众号,后台回复:码农大礼包 可以获取最新整理的技术资料一份。涵盖Java 框架学习、架构师学习等!
  4. 文章有帮助的话,在看,转发吧。
  5. 谢谢支持哟 (*^__^*)

文章来源: mingongge.blog.csdn.net,作者:民工哥,版权归原作者所有,如需转载,请联系作者。

原文链接:mingongge.blog.csdn.net/article/details/125650278

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。