当前位置: 首页 > news >正文

免费的建设网站软件下载天元建设集团有限公司2008年招聘

免费的建设网站软件下载,天元建设集团有限公司2008年招聘,上海高端网站搭建,中国招标网官方网站前言 在之前博文中,我们讲解了如何使用java在后台进行Echarts的图表生成组件,博文如下: 序号 博客连接1一款基于JAVA开发的Echarts后台生成框架2Ruoyi单体项目与Echarts4.2.1地图集成时的思路及解决办法3解决Ruoyi单体版本集成Echarts多图表时…

前言

        在之前博文中,我们讲解了如何使用java在后台进行Echarts的图表生成组件,博文如下:

序号

博客连接
1一款基于JAVA开发的Echarts后台生成框架
2Ruoyi单体项目与Echarts4.2.1地图集成时的思路及解决办法
3解决Ruoyi单体版本集成Echarts多图表时在Tab模式下不展示问题

        在之前的博客中,比较分散的介绍了Echarts图表的生成。但是在生成图表时,数据源信息基本上都是提前设定好的,相当与静态数据。针对于动态数据接入的场景,比如需要通过ajax动态获取后台的数据,然后将数据设置到前端的图表组件中。本文将以Ruoyi框架为例,深入讲解基于Ajax技术,实现数据的动态接入,让读者了解如何进行数据的动态接入代码实战开发。

一、Maven依赖定义

        演示项目采用Maven依赖的方式定义,在这里需要引入Echarts的Java后台生成组件和Gson包,Gson是用于生成echarts组件的依赖包,请确保添加。

<!-- 增加Echarts java统一处理类 -->
<dependency><groupId>com.github.abel533</groupId><artifactId>ECharts</artifactId><version>3.0.0</version>
</dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.6.2</version>
</dependency>

二、数据模拟生成

        为了演示简单,这里仅使用Java模拟数据查询的方式进行数据构造。实际情况下,需要根据到数据库中查询实际的数据。本例子中演示的场景为查询上个月某部门的短信发送量信息。

        这里分两个函数实现,第一个函数是生成上个月每一天的时间戳,方便在Echarts图表中进行展示。方法如下,这里需要注意的是上个月采用日历类-1获得:

private List<String> getEveryDayOfMonth() {List<String> result = new ArrayList<String>();//获取CalendarCalendar calendar=Calendar.getInstance();calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.MONTH, -1);//获取上个月Date startDate = calendar.getTime();//设置日期为本月最大日期calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));Date endDate = calendar.getTime();while(startDate.getTime() <= endDate.getTime()){String dayStr = DateUtils.parseDateToStr("yyyy-MM-dd", startDate);result.add(dayStr);calendar.setTime(startDate);calendar.add(Calendar.DATE,1);Date tempDate = calendar.getTime();startDate = tempDate;}return result;}

        在此基础上,我们进行月份内,每天的信息发送数据模拟,生成Echarts对象。

public String buildOrgzSendSmsCount(String orgzName) {String result = "";List<String> dateList = this.getEveryDayOfMonth();GsonOption option = new GsonOption();option.title().text("【" + orgzName + "】上月短信统计(单位:条)");option.tooltip().trigger(Trigger.axis);option.legend("短信发送量");option.legend().y(Y.bottom).padding(0);option.toolbox().show(true).feature(new MagicType(Magic.line, Magic.bar).show(true), Tool.saveAsImage);option.calculable(true);List<String> months = new ArrayList<String>();List<Integer> sendCounts = new ArrayList<Integer>();Random random = new Random();for (String date : dateList) {months.add(date);sendCounts.add(random.nextInt(100));}CategoryAxis categoreAxis = new CategoryAxis();categoreAxis.data(months.toArray()).axisLabel().interval(0).rotate(30);option.xAxis(categoreAxis);option.yAxis(new ValueAxis());Bar bar = new Bar("短信发送量");bar.data(sendCounts.toArray());bar.markPoint().data(new PointData().type(MarkType.max).name("最大值"), new PointData().type(MarkType.min).name("最小值"));bar.markLine().data(new PointData().type(MarkType.average).name("平均值"));option.series(bar);result = option.toString();return result;}

三、后台接口调用

        后台采用开放接口形式对外提供调用,为了演示方便,不加入过多的参数,实际情况根据需要传递相关参数即可,这里需要注意的是,在使用AjaxResult对象进行输出的时候,返回的json参数使用data进行携带。

@PostMapping("/echarts/getmsgsendchart")
@ResponseBody
public AjaxResult msgSendChart(){String charts = echartService.buildOrgzSendSmsCount("信息技术部");AjaxResult result = AjaxResult.success();result.put("data", charts);return result;
}

四、Html5网页定义

        在html页面中采用如下的代码进行短信发送量图表对象的定义,关键代码如下,注意这里的图表高度直接设定为200px:

<div id="tab-4" class="tab-pane"><div class="panel-body"><div class="row"><div class="col-sm-12"><div class="ibox float-e-margins"><div class="ibox-title"><h5>短信发送量</h5><div class="ibox-tools"><a class="collapse-link"><i class="fa fa-chevron-up"></i></a><a class="dropdown-toggle" data-toggle="dropdown" href="#"><i class="fa fa-wrench"></i></a><ul class="dropdown-menu dropdown-user"><li><a href="#">选项1</a></li><li><a href="#">选项2</a></li></ul><a class="close-link"><i class="fa fa-times"></i></a></div></div><div class="ibox-content"><div style="height:200px" id="echarts-msgsend-chart"></div></div></div></div></div></div></div>

五、Ajax数据初始化

        采用Jquery+bootstrap进行图表初始化,

msgsendChart = echarts.init(document.getElementById("echarts-msgsend-chart"));
$(window).resize(msgsendChart.resize);
charts.push(msgsendChart);
initMsgSendChart();
function initMsgSendChart(){$.ajax({type: "POST",url: ctx + "/demo/report/echarts/getmsgsendchart",data: {},dataType : "json",success: function(serverdata){if(serverdata != ""){var serverJsonData = eval('('+serverdata.data+')');msgsendChart.setOption(serverJsonData,true);$(window).resize(msgsendChart.resize);}},error:function(data){parent.layer.alert('系统发生错误!', {icon: 5});}});
}

        以上代码需要注意的是,var serverJsonData = eval('('+serverdata.data+')');这里使用eval函数进行参数转换,同时需要注意的是,serverdata.data;后面的data即是之前提到过的后台返回AjaxResult中的key。

六、图表展示及过程分析

        模拟短信发送量统计柱状图页面展示效果。 

 来看下具体的接口请求情况:

{"msg":"操作成功","code":0,"data":"{\"calculable\": true,\"title\": {\"text\": \"【信息技术部】上月短信统计(单位:条)\"},\"toolbox\": {\"feature\": {\"magicType\": {\"show\": true,\"title\": {\"bar\": \"柱形图切换\",\"stack\": \"堆积\",\"tiled\": \"平铺\",\"line\": \"折线图切换\"},\"type\": [\"line\",\"bar\"]},\"saveAsImage\": {\"show\": true,\"title\": \"保存为图片\",\"type\": \"png\",\"lang\": [\"点击保存\"]}},\"show\": true},\"tooltip\": {\"trigger\": \"axis\"},\"legend\": {\"data\": [\"短信发送量\"],\"y\": \"bottom\",\"padding\": 0},\"xAxis\": [{\"type\": \"category\",\"axisLabel\": {\"interval\": 0,\"rotate\": 30},\"data\": [\"2023-07-01\",\"2023-07-02\",\"2023-07-03\",\"2023-07-04\",\"2023-07-05\",\"2023-07-06\",\"2023-07-07\",\"2023-07-08\",\"2023-07-09\",\"2023-07-10\",\"2023-07-11\",\"2023-07-12\",\"2023-07-13\",\"2023-07-14\",\"2023-07-15\",\"2023-07-16\",\"2023-07-17\",\"2023-07-18\",\"2023-07-19\",\"2023-07-20\",\"2023-07-21\",\"2023-07-22\",\"2023-07-23\",\"2023-07-24\",\"2023-07-25\",\"2023-07-26\",\"2023-07-27\",\"2023-07-28\",\"2023-07-29\",\"2023-07-30\",\"2023-07-31\"]}],\"yAxis\": [{\"type\": \"value\"}],\"series\": [{\"name\": \"短信发送量\",\"type\": \"bar\",\"markPoint\": {\"data\": [{\"name\": \"最大值\",\"type\": \"max\"},{\"name\": \"最小值\",\"type\": \"min\"}]},\"markLine\": {\"data\": [{\"name\": \"平均值\",\"type\": \"average\"}]},\"data\": [60,87,89,81,69,65,89,45,1,29,25,27,24,79,50,23,20,8,60,72,31,61,7,10,57,5,65,74,64,29,4]}]}"}

总结

        以上就是本文的主要内容,本文将以Ruoyi框架为例,深入讲解基于Ajax技术,实现数据的动态接入,让读者了解如何进行数据的动态接入代码实战开发。行文仓促,难免有许多问题,欢迎朋友们批评指正。

http://www.yayakq.cn/news/538290/

相关文章:

  • 六安手机网站建设汤唯梁朝伟做的视频网站
  • 门户网站的主要特点中国十大购物网站排行榜
  • 布料市场做哪个网站好wordpress 国人原创
  • 网站推广方案编写苏州物联网app开发公司
  • 前程无忧网杭州网站建设类岗位百度一下首页问问
  • 凡科网做音乐网站9377 这种网站怎么做
  • 汽车服务网站建设方案自学网
  • 电子设计网站seo排名软件怎么做
  • 北海网站建设北京建设主管部门网站
  • 建站能赚钱吗网站的后台地址
  • 免费制作永久网站wordpress关闭错误提示
  • 太原建设网站的公司长沙seo网站推广
  • 常宁网站建设joomla 2.5:你的网站建设_使用与管理 pdf
  • 戴尔网站建设规划苏州有什么好玩的景点
  • 苏州网站建设软件网站建设代码容易出错
  • wordpress+站群软件淘宝网站建设服务类目选择
  • 池州有哪些做网站的哈尔滨网站建设资海
  • 网站建设管理实训报告中国铁工建设有限公司网站
  • 网站搭建徐州百都网络搭建wordpress全自动采集插件
  • 建网站能赚钱吗好的学校网站设计
  • 佛山seo百度快速seo
  • 建站流程网站上线承接网站开发 小程序开发
  • 网站开发的步骤做外贸主要看什么网站
  • 做网站客户要求多很烦公司网站展示有哪些
  • 潍坊网站建设选聚搜网络好网站图标怎么上传
  • wordpress 直播网站吗高职学院网站建设方案
  • 星火网站建设网站建设从零开始视频教程
  • 网站项目珠海网络公司排名
  • 怎么学网站设计网址在线生成
  • 网站360做的标记如何取消优化营商环境条例心得体会