EverydayOneCat
「Aerodynamic Baking Marshmallows」9:16
统计分析
1.图形报表ECharts
1.1ECharts简介
在之前的Python数据可视化中已经介绍了Echars的效果。
ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用JavaScript实现的数据可视化工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观、交互丰富、可高度个性化定制的数据可视化图表。
官网:https://echarts.baidu.com/
下载地址:https://echarts.baidu.com/download.html
官方实例地址:https://www.echartsjs.com/examples/
1.2会员数量折线图
会员信息是体检机构的核心数据,其会员数量和增长数量可以反映出机构的部分运营情况。通过折线图可以直观的反映出会员数量的增长趋势。我们需要展示过去一年时间内每个月的会员总数据量。
页面引入echarts.js文件
1 | <script src="../plugins/echarts/echarts.js"></script> |
参照官方实例导入折线图
1 | <script type="text/javascript"> |
根据折线图对数据格式的要求,我们发送ajax请求,服务端需要返回如下格式的数据
1 | { |
根据此json得出后端需要返回一个Map对象,Map中有两个List集合
创建ReportController并提供getMemberReport方法
1 |
|
Service:
1 |
|
效果:
1.3套餐预约占比饼形图
会员可以通过移动端自助进行体检预约,在预约时需要选择预约的体检套餐。我们需要通过饼形图直观的展示出会员预约的各个套餐占比情况。
参照官方实例导入饼形图:
1 | <script type="text/javascript"> |
根据饼形图对数据格式的要求,我们发送ajax请求,服务端需要返回如下格式的数据:
1 | { |
根据此json得出后端需要返回一个map对象,Map中有两个List集合,其中key为setmealCount的List泛型也是一个Map。
ReportController中提供getSetmealReport方法
1 |
|
后端难点主要是sql语句,需要分组查询并且起别名才能和前端需要的数据相吻合:
1 | select s.name,count(o.id) value from t_setmeal s,t_order o |
效果:
2.POI报表
2.1运营数据统计
通过运营数据统计可以展示出体检机构的运营情况,包括会员数据、预约到诊数据、热门套餐等信息。
在VUE的钩子函数中发送ajax请求获取动态数据,通过VUE的数据绑定将数据展示到页面
1 | data:{ |
根据页面对数据格式的要求,我们发送ajax请求,服务端需要返回如下格式的数据:
1 | { |
ReportController中提供getBusinessReportData方法
1 |
|
创建ReportService服务接口并声明getBusinessReport方法
1 | /** |
其中热门套餐的sql语句较为复杂,需要t_setmeal和t_order两表查询出套餐的名字和预定此套餐的数量,并求出数量的占比。接着还需要对数量进行降序排序,同时限制只显示前两个。
1 | select s.name,count(o.id) setmeal_count,count(o.id)/(select count(id) from t_order) proportion |
效果:
2.2统计报表导出
运营数据统计报表导出就是将统计数据写入到Excel并提供给客户端浏览器进行下载,以便体检机构管理人员对运营数据的查看和存档。
在企业实际开发中,对于这种比较复杂的表格导出一般我们会提前设计一个Excel模板文件,在这个模板文件中提前将表格的结构和样式设置好,我们的程序只需要读取这个文件并在文件中的相应位置写入具体的值就可以了。
页面提供导出按钮并绑定事件
ReportController中提供exportBusinessReport方法,基于POI将数据写入到Excel中并通过输出流下载到客户端
1 |
|
效果:
3.PDF报表
3.1常见的PDF报表生成方式
iText:
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。
示例代码:
1 | public class ItextDemo { |
JasperReports:
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。
3.2JasperReports入门
创建maven工程,导入JasperReports的maven坐标
1 | <dependency> |
将提前准备好的jrxml文件复制到maven工程中(后面会详细讲解如何创建jrxml文件)
编写单元测试,输出PDF报表
1 |
|
3.3模板设计器Jaspersoft Studio
Jaspersoft Studio是一个图形化的报表设计工具,可以非常方便的设计出PDF报表模板文件(其实就是一个xml文件),再结合JasperReports使用,就可以渲染出PDF文件。
下载地址:https://community.jaspersoft.com/community-download
Jaspersoft Studio页面和eclipse非常相像,在面板左下角可以看到有三种视图方式:Design(设计模式)、Source(源码模式)、Preview(预览模式):
通过Design视图可以看到模板的直观结构和样式
通过Source视图可以看到文件xml源码
通过Preview视图可以预览PDF文件输出后的效果
3.4在项目中输出运营数据PDF报表
使用Jaspersoft Studio设计运营数据PDF报表模板文件health_business3.jrxml,设计后的效果如下:
ReportController中提供exportBusinessReport4PDF方法
1 |
|
结语
明天XML考试我还啥都没看咋办,在线等挺急的😭