AJ-Report 初学(入门教程)

2年前 (2022) 程序员胖胖胖虎阿
460 0 0

文章目录

  • 前言
  • 简介
  • 官网与源码下载地址
  • 准备工作
    • 1.下载
    • 2. 数据库准备
  • 发行版的配置与启动
    • 1. 修改 bootstrap.yml
    • 2. 修改 start.bat
    • 3. 启动与访问
  • 源码的配置与启动
    • 1. IDEA 导入项目
    • 2. 后端启动
    • 2. 前端启动
  • 我所踩过的坑
    • 1. 除 mysql 之外的驱动问题
    • 2. 请求超时问题
    • 3. 空值导致的空指针异常
    • 4. 表字段长度不够
    • 5. 导出文件失败
  • 总结

前言

项目里面需要用到这个 AJ-Reprot 生成动态的大屏报表,这两天也研究了下,觉得是个挺不错的开源项目,遂即整理一下以作分享。


不多说,初学者最懂初学者


简介

AJ-Report 初学(入门教程)
在线体验:https://report.anji-plus.com/index.html

体验账号:guest

密码:guest

官方文档是这么介绍的:

  • AJ-Report是一个完全开源的BI平台,酷炫大屏展示,能随时随地掌控业务动态,让每个决策都有数据支撑。
  • 多数据源支持,内置mysql、elasticsearch、kudu等多种驱动,支持自定义数据集省去数据接口开发,目前已支持20种大屏组件/图表,不会开发,照着设计稿也可以制作大屏。
  • 三步轻松完成大屏设计:配置数据源---->写SQL配置数据集---->拖拽配置大屏---->保存发布。

按我的说法解释就是你可以用这个开源的项目,在这上面配好数据,写好 sql(数据集),就能够直接设计报表,并且能够动态的预览报表,并且支持导出。

以上我就直接 copy 官方文档所介绍的了,文档地址下面我也有提供,建议先看看官方文档,已经很详细了 ~~

AJ-Report 初学(入门教程)

官网与源码下载地址

gitee 下载:https://gitee.com/anji-plus/report/releases

官方文档:http://192.168.98.2:14000/

准备工作

1.下载

根据上面提供的 gitee 下载 链接进去下载就完事

AJ-Report 初学(入门教程)呈现在最上面的就是最新版本的,旧版本往下拉就可以找到,这边下载有三个,简单介绍一下:

  1. aj-report-xxxx.zip 这个是发行版,windows 下载之后改下配置可以直接运行 .bat 文件启动
  2. Source code (zip) 如果你想在 windows 下看源码或者启动就下载这个
  3. Source code (tar.gz) 如果你想直接在 linux 下运行就下载这个

linux 上的我就不做示范了,我就下载前两个玩玩

下载发行版和源码之后解压

AJ-Report 初学(入门教程)

2. 数据库准备

首先你总得有个数据库对吧,如果你没有数据库的话,以下我也提供一个本地 mysql 数据给大家学习(有的话恭喜你可以跳过这一步)

windows 下 mysql-5.7.17.msi 的安装包下载
链接:百度网盘地址
提取码:5lxo

这个安装步骤就不赘述了,基本上就是傻瓜式安装了

AJ-Report 初学(入门教程)

发行版的配置与启动

如果你是作为开发人员,启不动启动这个发行版都没关系,反正学习还得用到源码,它就是能够让你更好更快速的了解 AJ-Report,这里为什么我会加上这个,因为有些大数据的工作者可能没必要看源码,用这个发行版的玩玩,熟悉下。

双击进入该目录
AJ-Report 初学(入门教程)

1. 修改 bootstrap.yml

首先需要来到配置文件目录 conf 下修改 bootstrap.yml 文件的配置(建议自己看下该配置文件,开发人员很多配置都很良心的加上了注释)

AJ-Report 初学(入门教程)

这里要修改的地方就是数据库的配置了,改成你自己的,保存

AJ-Report 初学(入门教程)

注意

  • aj_report库是存放底层基础信息的库,flyway启动时会自动建立,如果你在这里修改了库,将会出错
  • 请确认你的Mysql是否支持远程连接,登陆用户是否有DDL权限

2. 修改 start.bat

再修改 bin 目录下的 start.bat ,以文本的形式开打编辑

AJ-Report 初学(入门教程)
把这个 rem 注释给删掉,配上你自己 jdk 的配置

AJ-Report 初学(入门教程)
如何查看 JDK 的配置?

此电脑 -> 鼠标右键选择 “属性” -> 高级系统设置 -> 高级-环境变量 -> 系统变量 - java_home

AJ-Report 初学(入门教程)
所以我这里就是
rem set JAVA_HOME=D:\App\Java\jdk1.8.0_172
改成 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_172

注意:如果你JAVA_HOME 的配置存在空格,则还需要将最下面 JAVA_HOME 加上 " "

AJ-Report 初学(入门教程)

3. 启动与访问

双击 bin 目录下的 start.bat 文件直接启动即可

AJ-Report 初学(入门教程)
并且可以看到启动后会直接往你的数据库中增加 aj_reportaj_report_init 两个 database

AJ-Report 初学(入门教程)
启动完之后就可以直接本地访问,至于这里面的功能,自己多点点就明白了,发行版不做详解 ~~

地址:http://localhost:9095

账号:admin
密码:123456

AJ-Report 初学(入门教程)

源码的配置与启动

1. IDEA 导入项目

AJ-Report 初学(入门教程)

导入之后是这样的


AJ-Report 初学(入门教程)
其中 report-core 是后端代码,report-ui 是前端代码

2. 后端启动

这个项目是用 springboot 搭建,所以后可以直接去运行启动类,但是前提是需要配置下 bootstrap.yml 文件

AJ-Report 初学(入门教程)
可以把这三个 bootstrap 文件的数据库都改成你所使用的数据库

比如说我本地的数据库,就这样改了:

  datasource:
    url: jdbc:mysql://localhost:3306/aj_report?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: root

运行启动类:

AJ-Report 初学(入门教程)
启动成功:

AJ-Report 初学(入门教程)
并且可以看到启动后会直接往你的数据库中增加 aj_reportaj_report_init 两个 database

AJ-Report 初学(入门教程)

2. 前端启动

前端的启用需要用到 node ,如果你没有下载 node,以下我也提供了我目前正在使用 node,安装也是傻瓜式安装,不做赘述了。

windows 下 node-v14.16.0-x64.msi 的安装包下载
链接:百度网盘地址
提取码:knw5

前端启动不管你用 webstorm 还是 visual studio code 或者是其它前端工具也好,都差不多,我这里就不那么麻烦了,也用 IDEA 启动算了

点击下面的 Terminal

AJ-Report 初学(入门教程)
依次输入以下三条命令:
cd report-ui : 刚进入应该是在 report-Vxxx 下,cd 进入 report-ui
npm install : 安装前端所需要的依赖包
npm run dev :运行前端

AJ-Report 初学(入门教程)
AJ-Report 初学(入门教程)
看到这样子就表示你前端也启动成功了

访问地址:http://localhost:9528

账号:admin
密码:123456

AJ-Report 初学(入门教程)

我所踩过的坑

以上的安装启动都是常规,一般看着官方文档都能做到,关键是使用之后所遇到的问题,官方文档中可就没有了,以下我就梳理了我在使用的时候遇见的问题以及处理的方式。

1. 除 mysql 之外的驱动问题

在报表设计中,我们可以配置不同的数据源

AJ-Report 初学(入门教程)
不同的数据源有不同的驱动类,比如 mysql 的驱动类是 com.mysql.cj.jdbc.Driver ,mssqlserver 的驱动类是 com.microsoft.sqlserver.jdbc.SQLServerDriver,在后端的 .pom 文件中有些驱动类的依赖是没有的,需要我们自己去添加,要不然运行该数据中的 sql 就会报错,比如我这里有个数据库的类型是 mssqlserver

AJ-Report 初学(入门教程)
我这里就新增一个数据集,选用的是 mssqlserver 这个数据库

AJ-Report 初学(入门教程)可以看到点击预览就报错了,后台错误日志信息如下:

AJ-Report 初学(入门教程)
大概意思就是 Jdbc 获取连接池时出现问题了,解决方法就是根据 数据库 对应的驱动类添加对应的 依赖,我这里连的数据库是 mssqlserver ,所以我在 .pom 文件添加 mssqlserver 对应的依赖即可

AJ-Report 初学(入门教程)

        <!-- mssqlserver 对应的驱动类 -->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>8.2.2.jre8</version>
        </dependency>

maven 一下,重启项目即可。

2. 请求超时问题

如果你的 sql 写得比较复杂,或者查询效率比较慢,又或者报表结构过于复杂等等原因导致请求超时,前端会提示 timeout 20000ms exceeded,后端会提示:你的主机中的软件中止了一个已建立的连接,后台错误日志信息如下:

AJ-Report 初学(入门教程)这个错误的出现的原因就是前端限制了 20000 ms,如果在这个时间内后端还没有响应的话,前端就拒绝接收了后端返回的数据了,而后端传着传着,前端把门都给关了,能不报错吗?解决方案就是将前端设置的 请求超时时间 调大一点,修改 report-ui 下 src\utils\request.js 文件中的 timeout,再重启下前端就行

AJ-Report 初学(入门教程)

3. 空值导致的空指针异常

数据集中的 sql 语句如果对 空值 没有做处理的话,就可能出现空指针异常,比如点击 预览,前端展示 系统异常

AJ-Report 初学(入门教程)
AJ-Report 初学(入门教程)
后端就是:java.lang.NullPointerException: null

AJ-Report 初学(入门教程)
根据后台错误日志可以看到是 ReportExcelServiceImpl.java:336 这一行代码抛出的,可以点击找到对应的地方,是 fieldLabelnull 导致的,解决方法就是要么 sql 对那些 空值 给个默认的 值,要么就直接改后端的代码,比如:

AJ-Report 初学(入门教程)
代码如下(示例):

// 如果 fieldLabel 为 null ,就设置成 " "
if (fieldLabel==null) {
    fieldLabel = " ";
}
String replace = v.replace("#{".concat(dataSet.getSetCode()).concat(".").concat(dataSet.getFieldLabel()).concat("}"), fieldLabel);

重启后端,即可解决。

4. 表字段长度不够

这个也是比较常见的问题,解决方案很简单,就是找到对应的表扩容字段即可

AJ-Report 初学(入门教程)

5. 导出文件失败

这个就是你使用导出功能没有配置路径的原因了,换个你电脑上有的路径

AJ-Report 初学(入门教程)比如说我把 dist-path 改成 dist-path: D:\download,使用导出功能的时候就放到我 D 盘下的 download 目录下了

AJ-Report 初学(入门教程)

总结

以上就是我这两天学习 AJ-Ropert 的收获以及解决的问题。

版权声明:程序员胖胖胖虎阿 发表于 2022年9月27日 上午11:16。
转载请注明:AJ-Report 初学(入门教程) | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...