Giter VIP home page Giter VIP logo

jeecgboot / jimureport Goto Github PK

View Code? Open in Web Editor NEW
6.3K 92.0 1.6K 100.17 MB

「开源可视化报表,商业BI替代方案」积木报表是一款类似excel操作风格,在线拖拽完成设计的报表工具。低代码产品的臂膀!功能涵盖: 报表设计、图形报表、打印设计、大屏设计等,完全免费!秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、解决各类报表难题。

Home Page: http://jimureport.com

License: GNU General Public License v3.0

Java 100.00% Dockerfile 0.01%
report ireport birt highcharts jfreechart bigscreen echart bi print jasperreport

jimureport's Introduction

JimuReport积木报表(开源免费报表工具)

v1.7.9 | 2024-07-09

GitHub stars GitHub forks

一款免费的数据可视化报表,含报表、仪表盘和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等!

  • Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。
  • 集成版本已提供了可视化仪表盘设计,支持丰富的数据源连接和移动端,通过拖拉拽方式快速制作图表和门户设计;支持多种图表类型:柱形图、折线图、散点图、饼图、环形图、面积图、漏斗图、进度图、仪表盘、雷达图、地图等等;
  • 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。
  • 领先的企业级Web报表软件,采用纯Web在线技术,专注于解决企业报表快速制作难题。
  • 在线体验(报表和大屏): http://jimureport.com
专注于开源,打造“专业 易用 智能 低代码”的数据可视化报表
开源协议:`功能永久免费、可以商用、代码不开放(大屏不提供离线版,在线免费使用)`

快速启动版本

MAVEN依赖

快速集成到自己项目中,支持SpringBoot脚手架项目。如果你的项目是springboot2或springboot3,可以从下面选择适合版本。

第一步:引入JimuReport依赖
  • springboot2版依赖
<dependency>
   <groupId>org.jeecgframework.jimureport</groupId>
   <artifactId>jimureport-spring-boot-starter</artifactId>
   <version>1.7.8</version>
</dependency>

通过 http://jimureport.com/doc/log 查询最新版本号

  • springboot3版依赖
<dependency>
  <groupId>org.jeecgframework.jimureport</groupId>
  <artifactId>jimureport-spring-boot3-starter-fastjson2</artifactId>
  <version>1.7.8</version>
</dependency>
  • 按需引入mongo和redis支持包
<dependency>
  <groupId>org.jeecgframework.jimureport</groupId>
  <artifactId>jimureport-nosql-starter</artifactId>
  <version>1.6.0</version>
</dependency>
第二步:初始化SQL和项目配置

开发文档

产生背景

报表是企业IT服务必备的一项需求,但是行业内并没有一个免费好用的报表,大部分免费的报表功能较弱也不够智能,商业报表又很贵,所以有了研发一套免费报表的初衷。 做一个什么样的报表呢?随着低代码概念的兴起,原先通过报表工具设计模板,再与系统集成的模式已经落伍,现在追求的是完全在线设计,傻瓜式的操作,实现简单易用又智能的报表!

为什么选择 JimuReport?

永久免费,支持各种复杂报表,并且傻瓜式在线设计,非常的智能,低代码时代,这个是你的首选!

  • 采用SpringBoot的脚手架项目,都可以快速集成
  • Web 版设计器,类似于excel操作风格,通过拖拽完成报表设计
  • 通过SQL、API等方式,将数据源与模板绑定。同时支持表达式,自动计算合计等功能,使计算工作量大大降低
  • 开发效率很高,傻瓜式在线报表设计,一分钟设计一个报表,又简单又强大
  • 支持 ECharts,目前支持28种图表,在线拖拽设计,支持SQL和API两种数据源
  • 支持分组、交叉,合计、表达式等复杂报表
  • 支持打印设计(支持套打、背景打印等)可设置打印边距、方向、页眉页脚等参数 一键快速打印 同时可实现发票套打,不动产证等精准、无缝打印
  • 可视化仪表盘设计器类大屏设计,支持丰富的数据源连接和移动端,通过拖拉拽方式快速制作图表和门户设计;支持多种图表类型:柱形图、折线图、散点图、饼图、环形图、面积图、漏斗图、进度图、仪表盘、雷达图、地图等等;
  • 可设计各种类型的单据、大屏,如出入库单、销售单、财务报表、合同、监控大屏、旅游数据大屏等
  • 在线平台提供免费的大屏设计,支持几十种图表样式,可自由拼接、组合,设计炫酷大屏

数据库兼容

支持含常规、国产、大数据等28种数据库

数据库 支持
MySQL
Oracle、Oracle9i
SqlServer、SqlServer2012
PostgreSQL
DB2、Informix
MariaDB
SQLite、Hsqldb、Derby、H2
达梦、人大金仓、神通
华为高斯、虚谷、瀚高数据库
阿里云PolarDB、PPAS、HerdDB
Hive、HBase、CouchBase

未提供脚本的数据库,可以参考 文档 自己转。

报表工作台

  • 数据可视化(专业一流,数据可视化,解决各类报表难题)

  • 报表设计器(完全在线设计,简单易用)

  • 打印设计(支持套打、背景打印)

  • 数据报表(支持分组、交叉,合计等复杂报表)

  • 图形报表(目前支持28种图表)

仪表盘工作台

大屏设计效果

功能清单

更多功能清单: http://jimureport.com/plan

├─报表设计器
│  ├─数据源
│  │  ├─支持多种数据源,如Oracle,MySQL,SQLServer,PostgreSQL等主流的数据库
│  │  ├─支持SQL编写页面智能化,可以看到数据源下面的表清单和字段清单
│  │  ├─支持参数
│  │  ├─支持但数据源和多数数据源设置
│  ├─单元格格式
│  │  ├─边框
│  │  ├─字体大小
│  │  ├─字体颜色
│  │  ├─背景色
│  │  ├─字体加粗
│  │  ├─支持水平和垂直的分散对齐
│  │  ├─支持文字自动换行设置
│  │  ├─图片设置为图片背景
│  │  ├─支持无线行和无限列
│  │  ├─支持设计器内冻结窗口
│  │  ├─支持对单元格内容或格式的复制、粘贴和删除等功能
│  │  ├─等等
│  ├─报表元素
│  │  ├─文本类型:直接写文本;支持数值类型的文本设置小数位数
│  │  ├─图片类型:支持上传一张图表
│  │  ├─图表类型
│  │  ├─函数类型
│  │  └─支持求和
│  │  └─平均值
│  │  └─最大值
│  │  └─最小值
│  ├─背景
│  │  ├─背景颜色设置
│  │  ├─背景图片设置
│  │  ├─背景透明度设置
│  │  ├─背景大小设置
│  ├─数据字典
│  ├─报表打印
│  │  ├─自定义打印
│  │  └─医药笺、逮捕令、介绍信等自定义样式设计打印
│  │  ├─简单数据打印
│  │  └─出入库单、销售表打印
│  │  └─带参数打印
│  │  └─分页打印
│  │  ├─套打
│  │  └─不动产证书打印
│  │  └─发票打印
│  ├─数据报表
│  │  ├─分组数据报表
│  │  └─横向数据分组
│  │  └─纵向数据分组
│  │  └─多级循环表头分组
│  │  └─横向分组小计
│  │  └─纵向分组小计
│  │  └─合计
│  │  ├─交叉报表
│  │  ├─明细表
│  │  ├─带条件查询报表
│  │  ├─表达式报表
│  │  ├─带二维码/条形码报表
│  │  ├─多表头复杂报表
│  │  ├─主子报表
│  │  ├─预警报表
│  │  ├─数据钻取报表
│  ├─图形报表
│  │  ├─柱形图
│  │  ├─折线图
│  │  ├─饼图
│  │  ├─折柱图
│  │  ├─散点图
│  │  ├─漏斗图
│  │  ├─雷达图
│  │  ├─象形图
│  │  ├─地图
│  │  ├─仪盘表
│  │  ├─关系图
│  │  ├─图表背景
│  │  ├─图表动态刷新
│  │  ├─图表数据字典
│  ├─参数
│  │  ├─参数配置
│  │  ├─参数管理
│  ├─导入导出
│  │  ├─导入Excel
│  │  ├─导出Excel、pdf
│  ├─打印设置
│  │  ├─打印区域设置
│  │  ├─打印机设置
│  │  ├─预览
│  │  ├─打印页码设置
├─大屏设计器
│  ├─系统功能
│  │  ├─静态数据源和动态数据源设置
│  │  ├─基础功能
│  │  └─支持拖拽设计
│  │  └─支持增、删、改、查大屏
│  │  └─支持复制大屏数据和样式
│  │  └─支持大屏预览、分享
│  │  └─支持系统自动保存数据,同时支持手动恢复数据
│  │  └─支持设置大屏密码
│  │  └─支持对组件图层的删除、组合、上移、下移、置顶、置底等
│  │  ├─背景设置
│  │  └─大屏的宽度和高度设置
│  │  └─大屏简介设置
│  │  └─背景颜色、背景图片设置
│  │  └─封面图设置
│  │  └─缩放比例设置
│  │  └─环境地址设置
│  │  └─水印设置
│  │  ├─地图设置
│  │  └─添加地图
│  │  └─地图数据隔离
│  ├─图表
│  │  ├─柱形图
│  │  ├─折线图
│  │  ├─折柱图
│  │  ├─饼图
│  │  ├─象形图
│  │  ├─雷达图
│  │  ├─散点图
│  │  ├─漏斗图
│  │  ├─文本框
│  │  ├─跑马灯
│  │  ├─超链接
│  │  ├─实时时间
│  │  ├─地图
│  │  ├─全国物流地图
│  │  ├─地理坐标地图
│  │  ├─城市派件地图
│  │  ├─图片
│  │  ├─图片框
│  │  ├─轮播图
│  │  ├─滑动组件
│  │  ├─iframe
│  │  ├─video
│  │  ├─翻牌器
│  │  ├─环形图
│  │  ├─进度条
│  │  ├─仪盘表
│  │  ├─字浮云
│  │  ├─表格
│  │  ├─选项卡
│  │  ├─万能组件
└─其他模块
   └─更多功能开发中。。

授权协议

开源版本遵循 LGPL 条款发布,如果您不能接受 LGPL,并且需要将该项目用于商业用途且不想保留版权信息(预览“Powered by 积木报表”等版权及链接), 为保障您的合法权益,需购买商业授权

jimureport's People

Contributors

learningpro avatar zhangdaiscott avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jimureport's Issues

数据报表分组 合计问题

我们需要实现一些数据的分组还有,各分组的合计以及总计 目前看视频还有文档教程里面都没有涉及这部分。
官网报表示例各个表如果能实现就好了

使用中的遇到一些问题和建议

非常感谢将积木报对外提供使用与集成,一直在关注这个项目的信息,看到1.1beta发布后,做了一些测试并发现一些问题,具体如下,本人真心希望这个项目越来越优秀。

运行环境:
docker desktop k8s以单点方式运行:
版本:
jeecg-boot 2.4.1 (master 2020-12-11)
jimureport 1.1-beta

问题汇总:
1.报表插入图片后,调整大小后,在图片上右键选择设置背景后,图片恢复原有大小,选择其他也是一样;
2.在上述操作后,想更换背景图片,没找到相应功能;
3.新建报表后,进入报表设计器页面,在不保存的情况下点击预览,链接地址为:about:blank
4.新建报表时,选择在数据报表下,但在保存时,对话框默认还是“报表设计”;
5.当报表有图片背景,并选择分页显示后,调整每页显示的条数,背景图片会消失,重新刷新才会再显示;
6.当将数据列拖动不在一行时只显示不在同一条时,只会显示一条数据,此时点击下一页会显示第11条数据;
7.新建数据集,并创建mysql数据源,点击测试,无提示,但可以正常进行sql解析;

对于图片上传的一些建议:
1.现在是每个图片上传图片后,其他报表要再次使用时需要重新上传,一是操作过于麻烦,二是也不便于统一替换,比如:一些通用性的图标/图片,能否采用资源的方式进行管理;
2.图表创建后,输入名称后,在保存时如果存在会提示,让用户选择是覆盖还是取消;如果基于数据防覆盖的考虑,可以在后端数据库中进行历史报表数据的备份;

此外,还有就是在使用jimureport时(/jeecg-boot/jmreport/list),在做上述测试时,后台服务报异常后,虽然前台还可以使用,但操作一会就会导致容器重启(运行环境见问题开始部分)。
错误信息如下:
2020-12-12 20:00:43.839 [http-nio-8080-exec-5] ERROR org.apache.tomcat.websocket.pojo.PojoEndpointBase:175 - No error handling configured for [org.jeecg.modules.message.websocket.WebSocket] and the following error occurred
java.io.EOFException: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1231)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1141)
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72)
at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171)
at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Unknown Source)
2020-12-12 20:00:43.840 [http-nio-8080-exec-5] INFO org.jeecg.modules.message.websocket.WebSocket:51 - 【websocket消息】连接断开,总数为:0
2020-12-12 20:01:44.126 [http-nio-8080-exec-2] INFO org.jeecg.modules.jmreport.desreport.a.a:809 - ============initDataSource==========
2020-12-12 20:01:44.129 [http-nio-8080-exec-4] INFO org.jeecg.modules.jmreport.desreport.a.a:764 - ============fieldTree==========
2020-12-12 20:01:44.427 [http-nio-8080-exec-10] INFO org.jeecg.modules.jmreport.desreport.a.a:1286 - ============地图列表查询==========
2020-12-12 20:01:48.020 [http-nio-8080-exec-10] INFO org.jeecg.modules.jmreport.desreport.a.a:790 - ============loadDbData==========
2020-12-12 20:01:52.656 [http-nio-8080-exec-9] INFO org.jeecg.modules.jmreport.desreport.a.a:741 - ============saveDb==========
2020-12-12 20:01:53.323 [http-nio-8080-exec-8] INFO org.jeecg.modules.jmreport.desreport.a.a:764 - ============fieldTree==========

大屏尺寸不兼容1920x1080

@zhangdaiscott
1608287431(1)
1608287494(1)
在大屏设计器中设置大屏尺寸 1920x1080 在实际使用中全屏观看的时候,出现了滚动条,并且滚到到最右边会出现一块黑色的边,详情见如上图

我在使用时候发现两个问题

问题1:在使用sql数据聚合的时候 ,生成分页列表 开始默认 10条/每页 第一次 点击下一页 可用 第二次点击下一页不可用
问题2:选择 图表柱状图 sql数据集 我配置的另一个数据源,不是jeecg-boot , 然后在配置柱状图数据项绑定的时候 点击运行,后台报错,显示找的是jeecg-boot的数据源,而不是我配置的数据源

导出功能无法使用

1、带参数api数据集,excel导出,后台只接收到参数默认值,且调式接口有数据返回,但是表格还是${}字段,没有数据替换。参数只接收默认字段应该是下面这段代码的问题, 数据没替换不知道原因
for(var47 = var45.keySet().iterator(); var47.hasNext(); var21 = var21.replace(var49 + "='${" + var49 + "}'", var49 + "=" + var26)) { var49 = (String)var47.next(); var26 = var45.getString(var49); if (StringUtils.isEmpty(var26)) { var26 = ""; } }
2、pdf导出也是没有参数传入,麻烦看看原因

excel 导出,添加的参数没有生效

版本号:1.0.2-beta

问题描述:excel数据集包含参数的情况下,修改链接中的参数,预览时显示没问题,导出的excel中参数没有生效

截图&代码:
EC7E4203-A60A-4b0d-AFE6-A3116F2E127D

B1561DD9-04B9-421e-92B7-2401080A4E43

A87D9149-2876-4aa2-B77B-C68A21F8AD77

736E3FB4-A580-4ac3-8016-3B66382BC2F7

套打预览打印后,对不齐

操作步骤:
1、点开报表设计器
2、新建报表,导入图片并设置为套打图片
3、调整单元格,与图片填写内容处对齐,输入内容
4、保存并填写报表名称,#bug1
5、调整后再次保存,点击预览,看到套打图片与内容吻合
6、为了保证图片与实际大小相符,进行如下操作:1、第一次打印直接打印图片,再将打印出的图片放入打印机;2、点击设计器预览中的打印按钮。#bug2

bug说明:
bug1:第一次保存报表,调整好的位置会在保存后刷新时改变位置,需要微调。
bug2:打印出来的套打,对不齐,内容列在实际打印出来都会偏左一列,与图片重合了。请参考效果图。

bug1效果图:
第一次保存前调整好后的截图:
11
第一次保存自动刷新页面后的截图,一定程度的向右偏和向下偏:
保存后
bug2效果图:
打印错误结果

图表取的还是内置数据源。

插入图表后,选择相应数据源和字段,但是图表没有展示;通过后台报错发现图表实际取的还是内置数据源。

没有基于jeecg-boot的项目,引入404

<dependency>
            <groupId>com.jimureport</groupId>
            <artifactId>spring-boot-starter-jimureport</artifactId>
            <version>1.1-beta</version>
        </dependency>

image

image

image
搭建过程中遇到的问题,本地Maven仓库是可以拉到Jar包的,但是Class 没办法加载进来

sql解析出错

我有一个sql 类似于
select a,b,c from db1
union
select * from (
select a2,b1,c1 from db2
where ....
group by ...)db3
这种,但是sql解析的时候会把where及其之后的内容截断,变成
select count(1) from (select a,b,c from db1
union
select a2,b1,c1 from db2) temp_count where 1=1 这种了,有办法解决吗

新建弹窗登陆过期 预览报字段错误

按文档步骤部署到本地后,部署成功,但不能新建,提示:登录已过期,可以对示例进行设计,但不能预览 提示字段错误,
环境:oracle11G,jeecg boot2.3
集成依赖 jar
执行升级 sql sql是从mysql同步过来的
修改配置文件
角色授权菜单,就可以看到报表设计菜单
shiro权限排除

不能新建的我进行了Debug 发现在a.class @PostMapping({"/save"})
public Result<?> a(HttpServletRequest var1, @requestbody JSONObject var2) {}的这个方法中的
JimuReport var7 = (JimuReport)this.jmReportDesignService.getOne(var6);这条语句 如果是mysql的话就没有问题 oracle直接走catch

是否支持主子表?

有以下场景,有一个工程(主表),有供应商信息(子表),有材料信息(子表),报表上面显示工程信息(一条数据但是分多行显示),下面显示供应商信息(多条数据多行显示,每行显示一条数据),再下面显示材料信息(多条数据多行显示,每行显示一条数据),这种主子表形式的报表是否可以支持?

积木报表功能建议 =》标签打印功能

  • 报表添加自定义纸张尺寸 例:100 * 70
  • 报表添加打印条码,二维码功能
  • 分栏打印能有吗?

_ 不是我要求太多,实在是对大神们的景仰犹如滔滔江水连绵不绝_

数据源配置问题

以下问题是在使用,报表设计器——打印设计下具体设计报表时,添加mysql数据源的时候遇到的问题。我不确定大家是否都有遇到同样的问题。
1、页面上添加数据源按钮操作。数据源配置只支持一个,添加第二个,第一个就被覆盖了。
2、数据配置完,测试连接通过,保存成功。但是添加sql数据集的时候,并不是访问的页面上配置的数据源的链接信息,而是走的yaml文件里面写的数据库链接。只有对应yaml文件里面的数据库的表才能查的到,才能解析成功。

按文档步骤部署到本地后,部署成功,但不能新建,提示:登录已过期

按文档步骤部署到本地后,部署成功,但不能新建,提示:登录已过期
环境:oracle11G,jeecg boot2.2.1
部署步骤:
第一步: 集成依赖 jar
第二步: 执行升级 sql
第三步:修改配置文件
第四步: 角色授权菜单,就可以看到报表设计菜单
第五步: shiro权限排除
第六步:ISysBaseAPI 集成下类CommonAPI.java
第七步:覆盖类TokenUtils.zip
第八步:从2.3覆盖org/jeecg/common/api/vo/Result.java

无法打开报表设计器页面

按照readme的步骤,成功安装了依赖并给菜单设置了权限,点击“报表设计器”的时候,打开了新的标签页,提示
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Nov 01 11:33:52 CST 2020
There was an unexpected error (type=Not Found, status=404).
No message available

无法使用

jeecgboot2.1+JimuReport

jeecgboot用的2.1,集成报表的时候报表的service出现循环引用了,咋解决呢?谢谢,具体描述见下面

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'jimuReportServiceImpl': Bean with name 'jimuReportServiceImpl' has been injected into other beans [jmReportDbFieldServiceImpl] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
1609836743(1)

前端新建报表时报token非法的问题

跟进昨天在群里说的问题,新建报表时出现
出现token非法的情况。
目前分析如下:
前台在点击新建报表时,先调用的save方法
//新建报表
createExcel: function(){
var that = this;
$http.post({
url:api.saveReport,
data:{},
contentType:'json',
success:(result)=>{
window.open(api.index+result.id+"?token="+this.token);
}
},that)
},
后台进入方法

@PostMapping({"/save"})
@JimuLoginRequired
public Result<?> a(HttpServletRequest var1, @requestbody JSONObject var2) {
try {
JimuReport var3 = this.jmReportDesignService.saveReport(var2);
return Result.OK(var3);
} catch (Exception var4) {
return Result.error(403, "token非法");
}
}

public JimuReport saveReport(JSONObject json) {
String var2 = this.jimuTokenClient.getUsername(this.request);
a.debug("============EXCEL JSON数据正在保存==========");
String var3 = json.getString("excel_config_id");
LambdaQueryWrapper var4 = new LambdaQueryWrapper();
var4.eq(JimuReport::getId, var3);
JimuReport var5 = (JimuReport)((JimuReportMapper)this.baseMapper).selectOne(var4);
JSONObject var6 = json.getJSONObject("designerObj");
String var7 = "";
String var8 = "";
if (var6 != null) {
var7 = var6.getString("name");
var8 = var6.getString("type");
json.remove("designerObj");
}
......

调用save时,代码会从前端传参中获取报表的主键,并调用selectOne方法,但由于新建时,无该主键,所以selectOne抛出异常,该异常被上层捕获后,直接抛出token非法的错误,最终导致该问题。我个人觉得这是一个前端逻辑bug,新建时为什么要save?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.