1. 为什么要在若依微服务里集成积木报表?
如果你正在用若依微服务框架开发企业级应用,大概率会遇到一个绕不开的需求:报表。无论是销售数据统计、财务报表,还是运营分析,一个灵活、强大的报表工具能省去你大量重复造轮子的时间。积木报表(JimuReport)就是这样一款开源的Web报表工具,它主打“零代码”设计,通过拖拽就能生成复杂报表,对业务人员非常友好。
但问题来了,若依微服务本身是一个架构清晰、功能强大的后台管理系统,而积木报表是一个独立的报表引擎。怎么把它们无缝地“粘”在一起,让报表功能成为你系统里一个自然的部分,而不是一个孤立的“外挂”?这就是我们今天要解决的核心问题。
我见过不少项目,集成过程磕磕绊绊,要么是报表服务启动不了,要么是前端页面访问不到,最头疼的是权限控制对不上,导致数据安全问题。所以,这篇文章我会结合我自己的实战经验,带你走一遍从零开始,把积木报表深度整合进若依微服务(RuoYi-Cloud)的完整流程。我们不仅要让它跑起来,还要跑得稳、跑得安全,特别是要搞定微服务架构下最关键的网关路由和Token权限控制。
简单来说,这次整合的目标是:在你的若依系统菜单里,点一下“报表中心”,就能直接打开积木报表的设计器或预览页面,并且当前登录用户的权限能自动传递过去,报表里的数据也能根据用户身份进行安全过滤。听起来是不是很实用?那我们开始吧。
2. 项目结构与模块创建:打好地基
在微服务架构里,讲究的是职责分离。报表功能相对独立,业务逻辑也比较重,所以最佳实践是新建一个独立的报表微服务模块。这样做的好处很明显:代码清晰,便于维护,发布和扩容也互不影响。
2.1 新建报表微服务模块
在你的若依微服务项目根目录下(比如 ruoyi-cloud),找到 modules 目录,新建一个模块,我习惯命名为 ruoyi-modules-report 或者 iotings-report(参考原始文章)。用你熟悉的IDE(如IDEA)的Maven模块创建功能,或者直接复制一个现有模块(如 system)的目录结构进行修改。
创建完成后,你的项目结构应该类似这样:
ruoyi-cloud
├── ruoyi-gateway # 网关模块
├── ruoyi-auth # 认证中心
├── ruoyi-system # 系统模块
├── ruoyi-modules-report # 新建的报表模块
│ ├── src
│ │ ├── main
│ │ │ ├── java/com/yourcompany/report
│ │ │ │ ├── IotingsReportApplication.java # 启动类
│ │ │ │ ├── config
│ │ │ │ └── service
│ │ │ └── resources
│ │ │ ├── application.yml
│ │ │ └── bootstrap.yml
│ └── pom.xml
└── pom.xml # 父POM
关键点:确保新建模块的 pom.xml 正确继承了若依的父工程,并且 artifactId 和 name 定义清晰。这个模块将专门负责所有与积木报表相关的后端逻辑。
2.2 初始化积木报表所需数据库表
积木报表需要一些自己的表来存储报表模板、数据集定义等信息。官方提供了SQL脚本。由于网络原因,从GitHub拉取可能较慢,建议使用Gitee镜像。
- 获取SQL脚本:访问积木报表的Gitee仓库(例如
https://gitee.com/jeecg/JimuReport),找到db目录下的jimureport.sql文件。 - 选择数据库:你可以选择在若依的主业务库(如
ry-cloud)中执行,也可以单独创建一个报表库。为了简化,我通常和业务库放一起。但生产环境建议根据数据量和隔离要求来决定。 - 执行SQL:在你的MySQL客户端(如Navicat、DBeaver)中,连接到目标数据库,运行下载的
jimureport.sql脚本。
执行成功后,你会看到数据库里新增了多张以 jimu_ 或 report_ 为前缀的表,例如 jimu_report(报表头表)、jimu_report_dataset(数据集表)等。这就为报表功能准备好了数据存储的基础。
3. 依赖引入与核心配置:让报表引擎转起来
基础打好了,接下来就要把积木报表的“发动机”——它的核心Jar包,引入到我们的项目中。
3.1 在父POM中统一管理版本
为了便于版本管理,首先在项目最顶层的 pom.xml 文件的 <properties> 标签内,声明积木报表的版本号。这样做的好处是,所有子模块引用时版本一致,避免冲突。
<properties>
<!-- 其他版本号,如 spring-boot.version -->
<jeecg.jimureport.version>1.6.0</jeecg.jimureport.version> <!-- 建议使用较新稳定版 -->
</properties>
注意:版本号请根据实际情况调整,可以到积木报表的官方仓库查看最新Release版本。原始文章用的是1.5.6,这里我升级到了1.6.0示例,新版本通常修复了旧版的一些问题。
3.2 在报表模块中添加依赖
然后,在你新建的报表微服务模块的 pom.xml 文件中,添加积木报表的Spring Boot Starter依赖。
<dependencies>
<!-- 其他若依微服务模块需要的依赖,如 ruoyi-common 等 -->
<!-- JimuReport 积木报表核心依赖 -->
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot-starter</artifactId>
<version>${jeecg.jimureport.version}</version>
</dependency>
<!-- 数据库驱动、MyBatis等依赖通常父工程已管理,这里确保有即可 -->
</dependencies>
添加完依赖,记得刷新Maven,让IDE下载相关的jar包。
3.3 配置启动类与组件扫描
这是非常关键的一步。积木报表的代码在 org.jeecg.modules.jmreport 包下,我们需要让Spring Boot能够扫描并加载这些Bean。同时,也要扫描我们自己的报表模块代码。
修改你的报表模块启动类(例如 IotingsReportApplication.java):
package com.yourcompany.report;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; // 如果不用MongoDB可以排除
import com.yourcompany.common.security.annotation.EnableCustomConfig;
import com.yourcompany.common.security.annotation.EnableRyFeignClients;
import com.yourcompany.common.swagger.annotation.EnableCustomSwagger2;
@EnableCustomConfig
@EnableCustomSwagger2
@EnableRyFeignClients
// 重点在这里:排除不需要的自动配置,并指定扫描包路径
@SpringBootApplication(exclude = {MongoAutoConfiguration.class},
scanBasePackages = {"org.jeecg.modules


5120

被折叠的 条评论
为什么被折叠?



