diff --git a/README.md b/README.md index 23f6a9a7..50da96a2 100644 --- a/README.md +++ b/README.md @@ -143,11 +143,9 @@ sql文件的目录在:report-core --> src --> main --> resources -- > db.migra 已知以下版本存在兼容性问题 - Node.js V16 - Jdk 11 -- Mysql 8.0(8.0.26版本没有问题,8.0.21版本存在问题) +- Mysql 8.0(8.0.23/26版本没有问题,8.0.21版本存在问题) - Windows 11 -AJ-Report 使用Druid,版本为1.2.6,如果你觉得你配置都是正常但是数据源测试不过,请尝试修改pom文件降低Druid版本。 -例如:MSSQLSERVER 2014,请将Druid版本降低为1.2.1以下 ## 商业授权 AJ-Report使用[Apache2.0开源协议](http://www.apache.org/licenses/LICENSE-2.0.html)
diff --git a/doc/docs/.vuepress/config.js b/doc/docs/.vuepress/config.js index 42bc294f..d8e946e5 100644 --- a/doc/docs/.vuepress/config.js +++ b/doc/docs/.vuepress/config.js @@ -50,7 +50,9 @@ module.exports = { children: [ {title: '数据源', path: '/guide/datasource'}, {title: '数据集', path: '/guide/dataset'}, - {title: '大屏设计', path: '/guide/dashboard'}, + {title: '报表管理', path: '/guide/reportmanager'}, + {title: '大屏报表', path: '/guide/dashboard'}, + {title: '表格报表', path: '/guide/execl'}, {title: '导入导出', path: '/guide/importexport'}, ] }, @@ -65,6 +67,7 @@ module.exports = { title: '社区提供', collapsable: false, children: [ + {title: '说明', path: '/guide/community/report'}, {title: '搭建AJ-Report开发环境', path: '/guide/community/AC1688/搭建aj-report开发环境'} ] } diff --git a/doc/docs/guide/authmanager.md b/doc/docs/guide/authmanager.md index e69de29b..666bdc33 100644 --- a/doc/docs/guide/authmanager.md +++ b/doc/docs/guide/authmanager.md @@ -0,0 +1,22 @@ +## 新增用户 +![img](../picture/authmanager/img.png)
+ +![img](../picture/authmanager/img_1.png)
+新增用户的默认密码是在bootstrap.yml文件中配置的
+![img](../picture/authmanager/img_2.png)
+ +## 用户授权 +**注意**:新建用户完成后需要给用户授权,否则新用户登陆是啥也看不到。
+![img](../picture/authmanager/img_3.png)
+ +![img](../picture/authmanager/img_4.png)
+**注**:这里没有给新用户赋予默认角色的原因是,在角色管理中角色是可以被删除和修改的,因此在新建用户时需要手动的去授权角色
+ +## 角色管理 +![img](../picture/authmanager/img_5.png)
+ +## 权限分配 +为角色分配权限,可看已有角色示例
+![img](../picture/authmanager/img_6.png)
+ + diff --git a/doc/docs/guide/community/report.md b/doc/docs/guide/community/report.md new file mode 100644 index 00000000..9c9b9d6c --- /dev/null +++ b/doc/docs/guide/community/report.md @@ -0,0 +1,14 @@ +# 社区用户提交文档PR的简易说明 + +## 提交位置 +doc -- > docs --> guide -- > community 目录
+![img](../../guide/community/report/img.png)
+ +## 具体操作 +- 请在community目录下新建属于你自己的文件目录,命名方式可以使用自己在gitee的名字作为命名,注意中文命令可能会存在的一些问题。
+- 在你的个人目录下,你可以新建MD文件,需要用到图片可以直接放一个目录,如果md多,图片也多,建议再建下级目录存放。
+ +最后别忘了在config.js中添加配置,如图示。
+![img](../../guide/community/report/img_1.png)
+ + diff --git a/doc/docs/guide/community/report/img.png b/doc/docs/guide/community/report/img.png new file mode 100644 index 00000000..4b79b38f Binary files /dev/null and b/doc/docs/guide/community/report/img.png differ diff --git a/doc/docs/guide/community/report/img_1.png b/doc/docs/guide/community/report/img_1.png new file mode 100644 index 00000000..0452f0da Binary files /dev/null and b/doc/docs/guide/community/report/img_1.png differ diff --git a/doc/docs/guide/dashboard.md b/doc/docs/guide/dashboard.md index 9a4a6c72..1b8ed3a4 100644 --- a/doc/docs/guide/dashboard.md +++ b/doc/docs/guide/dashboard.md @@ -1,16 +1,21 @@ -## 介绍 -## 新增大屏 -![img.png](../picture/dashboard/img.png) +## 设计大屏 +进入大屏设计方法1:
+从报表管理模块选择需要设计的大屏,按图示进入大屏设计界面
+![img](../picture/dashboard/img22.png)
+ +进入大屏设计方法2:
+从大屏报表模块选择需要设计的大屏,按图示进入大屏设计界面
+![img](../picture/dashboard/img23.png)
## 大屏简介 -![img_2.png](../picture/dashboard/img_2.png) +![img_2.png](../picture/dashboard/img_2.png)
## 工具栏 ### 文本框 -![img_3.png](../picture/dashboard/img_3.png) -![img_4.png](../picture/dashboard/img_4.png) -![img_5.png](../picture/dashboard/img_5.png) -![img_6.png](../picture/dashboard/img_6.png) +![img_3.png](../picture/dashboard/img_3.png)
+![img_4.png](../picture/dashboard/img_4.png)
+![img_5.png](../picture/dashboard/img_5.png)
+![img_6.png](../picture/dashboard/img_6.png)
### 滚动文本 已支持动态数据,请参考文本框的操作
diff --git a/doc/docs/guide/execl.md b/doc/docs/guide/execl.md new file mode 100644 index 00000000..b3eeb720 --- /dev/null +++ b/doc/docs/guide/execl.md @@ -0,0 +1,27 @@ +# 介绍 +execl报表基于Luckysheet开发,[Luckysheet](https://gitee.com/mengshukeji/Luckysheet) 一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 +**注意:** execl报表目前只是简单集成,如果你遇到了一些问题请在此[Issue](https://gitee.com/anji-plus/report/issues/I4CEWV) 下面进行回复。
+## 表格报表设计 +进入表格设计方法1:
+从报表管理模块选择需要设计的大屏,按图示进入大屏设计界面
+![img](../picture/execl/img.png)
+ +进入大屏设计方法2:
+从大屏报表模块选择需要设计的大屏,按图示进入大屏设计界面
+![img2](../picture/execl/img_1.png)
+ +## 简介 +![img3](../picture/execl/img_2.png)
+ +## 使用 +**注**:不建议一列中同时存在俩个字段数据,同时一列值也建议不要存到超大数据量,肯定无法显示的
+![img4](../picture/execl/img_3.png)
+ +## 预览/保存 +点击保存,则会将数据写入到库中。
+点击预览,则进入预览界面。
+![img](../picture/execl/img_4.png)
+ +## 预览界面 +可以进行导出操作。
+![img](../picture/execl/img_5.png)
diff --git a/doc/docs/guide/reportmanager.md b/doc/docs/guide/reportmanager.md new file mode 100644 index 00000000..b0be4011 --- /dev/null +++ b/doc/docs/guide/reportmanager.md @@ -0,0 +1,3 @@ +## 新增报表 +![img](../picture/reportmanager/img.png)
+状态默认为已启用。 diff --git a/doc/docs/picture/authmanager/img.png b/doc/docs/picture/authmanager/img.png new file mode 100644 index 00000000..f5823cae Binary files /dev/null and b/doc/docs/picture/authmanager/img.png differ diff --git a/doc/docs/picture/authmanager/img_1.png b/doc/docs/picture/authmanager/img_1.png new file mode 100644 index 00000000..b9a158fa Binary files /dev/null and b/doc/docs/picture/authmanager/img_1.png differ diff --git a/doc/docs/picture/authmanager/img_2.png b/doc/docs/picture/authmanager/img_2.png new file mode 100644 index 00000000..1b926b6a Binary files /dev/null and b/doc/docs/picture/authmanager/img_2.png differ diff --git a/doc/docs/picture/authmanager/img_3.png b/doc/docs/picture/authmanager/img_3.png new file mode 100644 index 00000000..a37ba654 Binary files /dev/null and b/doc/docs/picture/authmanager/img_3.png differ diff --git a/doc/docs/picture/authmanager/img_4.png b/doc/docs/picture/authmanager/img_4.png new file mode 100644 index 00000000..143337d7 Binary files /dev/null and b/doc/docs/picture/authmanager/img_4.png differ diff --git a/doc/docs/picture/authmanager/img_5.png b/doc/docs/picture/authmanager/img_5.png new file mode 100644 index 00000000..55b9aca0 Binary files /dev/null and b/doc/docs/picture/authmanager/img_5.png differ diff --git a/doc/docs/picture/authmanager/img_6.png b/doc/docs/picture/authmanager/img_6.png new file mode 100644 index 00000000..f35d8370 Binary files /dev/null and b/doc/docs/picture/authmanager/img_6.png differ diff --git a/doc/docs/picture/dashboard/img.png b/doc/docs/picture/dashboard/img.png deleted file mode 100644 index 67a0a19a..00000000 Binary files a/doc/docs/picture/dashboard/img.png and /dev/null differ diff --git a/doc/docs/picture/dashboard/img22.png b/doc/docs/picture/dashboard/img22.png new file mode 100644 index 00000000..a9b7723f Binary files /dev/null and b/doc/docs/picture/dashboard/img22.png differ diff --git a/doc/docs/picture/dashboard/img23.png b/doc/docs/picture/dashboard/img23.png new file mode 100644 index 00000000..83bcb8ce Binary files /dev/null and b/doc/docs/picture/dashboard/img23.png differ diff --git a/doc/docs/picture/execl/img.png b/doc/docs/picture/execl/img.png new file mode 100644 index 00000000..bbfa70cf Binary files /dev/null and b/doc/docs/picture/execl/img.png differ diff --git a/doc/docs/picture/execl/img_1.png b/doc/docs/picture/execl/img_1.png new file mode 100644 index 00000000..5c969c97 Binary files /dev/null and b/doc/docs/picture/execl/img_1.png differ diff --git a/doc/docs/picture/execl/img_2.png b/doc/docs/picture/execl/img_2.png new file mode 100644 index 00000000..45efaadb Binary files /dev/null and b/doc/docs/picture/execl/img_2.png differ diff --git a/doc/docs/picture/execl/img_3.png b/doc/docs/picture/execl/img_3.png new file mode 100644 index 00000000..0cc2fcae Binary files /dev/null and b/doc/docs/picture/execl/img_3.png differ diff --git a/doc/docs/picture/execl/img_4.png b/doc/docs/picture/execl/img_4.png new file mode 100644 index 00000000..eafd032e Binary files /dev/null and b/doc/docs/picture/execl/img_4.png differ diff --git a/doc/docs/picture/execl/img_5.png b/doc/docs/picture/execl/img_5.png new file mode 100644 index 00000000..c2112950 Binary files /dev/null and b/doc/docs/picture/execl/img_5.png differ diff --git a/doc/docs/picture/reportmanager/img.png b/doc/docs/picture/reportmanager/img.png new file mode 100644 index 00000000..8ce4974b Binary files /dev/null and b/doc/docs/picture/reportmanager/img.png differ diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java index 33523b33..96619603 100755 --- a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java @@ -179,19 +179,22 @@ public class AccessUserServiceImpl implements AccessUserService { accessUserWrapper.eq(AccessUserRole::getLoginName, loginName); List accessUserRoles = accessUserRoleMapper.selectList(accessUserWrapper); Set roleCodeSet = accessUserRoles.stream().map(AccessUserRole::getRoleCode).collect(Collectors.toSet()); - - LambdaQueryWrapper accessRoleAuthorityWrapper = Wrappers.lambdaQuery(); - accessRoleAuthorityWrapper.select(AccessRoleAuthority::getTarget, AccessRoleAuthority::getAction); - accessRoleAuthorityWrapper.in(AccessRoleAuthority::getRoleCode, roleCodeSet); - List accessRoleAuthorities = accessRoleAuthorityMapper.selectList(accessRoleAuthorityWrapper); - List authorities = accessRoleAuthorities.stream() - .map(accessRoleAuthority -> accessRoleAuthority.getTarget().concat(":").concat(accessRoleAuthority.getAction())).distinct().collect(Collectors.toList()); - + if (roleCodeSet.size() < 1) { + gaeaUser.setAuthorities(new ArrayList<>()); + }else { + LambdaQueryWrapper accessRoleAuthorityWrapper = Wrappers.lambdaQuery(); + accessRoleAuthorityWrapper.select(AccessRoleAuthority::getTarget, AccessRoleAuthority::getAction); + accessRoleAuthorityWrapper.in(AccessRoleAuthority::getRoleCode, roleCodeSet); + List accessRoleAuthorities = accessRoleAuthorityMapper.selectList(accessRoleAuthorityWrapper); + List authorities = accessRoleAuthorities.stream() + .map(accessRoleAuthority -> accessRoleAuthority.getTarget().concat(":").concat(accessRoleAuthority.getAction())).distinct().collect(Collectors.toList()); + gaeaUser.setAuthorities(authorities); + } gaeaUser.setLoginName(loginName); gaeaUser.setRealName(accessUser.getRealName()); gaeaUser.setToken(token); - gaeaUser.setAuthorities(authorities); + String gaeaUserStr = JSONObject.toJSONString(gaeaUser); cacheHelper.stringSetExpire(userKey, gaeaUserStr, 3600); diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dashboard/service/impl/ReportDashboardServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dashboard/service/impl/ReportDashboardServiceImpl.java index 4210fc0d..a89fc060 100644 --- a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dashboard/service/impl/ReportDashboardServiceImpl.java +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dashboard/service/impl/ReportDashboardServiceImpl.java @@ -159,7 +159,7 @@ public class ReportDashboardServiceImpl implements ReportDashboardService, Initi .lambda().eq(ReportDashboardWidget::getReportCode, reportCode)); List widgets = dto.getWidgets(); - List reportDashboardWidgetList = new ArrayList<>(); +// List reportDashboardWidgetList = new ArrayList<>(); for (int i = 0; i < widgets.size(); i++) { ReportDashboardWidget reportDashboardWidget = new ReportDashboardWidget(); ReportDashboardWidgetDto reportDashboardWidgetDto = widgets.get(i); @@ -175,9 +175,13 @@ public class ReportDashboardServiceImpl implements ReportDashboardService, Initi reportDashboardWidget.setEnableFlag(1); reportDashboardWidget.setDeleteFlag(0); reportDashboardWidget.setSort((long) (i + 1)); - reportDashboardWidgetList.add(reportDashboardWidget); + + //兼容底层,不采用批量插入 + reportDashboardWidgetService.insert(reportDashboardWidget); + +// reportDashboardWidgetList.add(reportDashboardWidget); } - reportDashboardWidgetService.insertBatch(reportDashboardWidgetList); +// reportDashboardWidgetService.insertBatch(reportDashboardWidgetList); } diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dataset/service/impl/DataSetServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dataset/service/impl/DataSetServiceImpl.java index 1282bfca..d6ef6248 100644 --- a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dataset/service/impl/DataSetServiceImpl.java +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dataset/service/impl/DataSetServiceImpl.java @@ -315,14 +315,16 @@ public class DataSetServiceImpl implements DataSetService { if (null == dataSetParamDtoList || dataSetParamDtoList.size() <= 0) { return; } - List dataSetParamList = new ArrayList<>(); +// List dataSetParamList = new ArrayList<>(); dataSetParamDtoList.forEach(dataSetParamDto -> { DataSetParam dataSetParam = new DataSetParam(); BeanUtils.copyProperties(dataSetParamDto, dataSetParam); dataSetParam.setSetCode(setCode); - dataSetParamList.add(dataSetParam); + //不采用批量 + dataSetParamService.insert(dataSetParam); +// dataSetParamList.add(dataSetParam); }); - dataSetParamService.insertBatch(dataSetParamList); +// dataSetParamService.insertBatch(dataSetParamList); } @@ -335,15 +337,17 @@ public class DataSetServiceImpl implements DataSetService { if (null == dataSetTransformDtoList || dataSetTransformDtoList.size() <= 0) { return; } - List dataSetTransformList = new ArrayList<>(); +// List dataSetTransformList = new ArrayList<>(); for (int i = 0; i < dataSetTransformDtoList.size(); i++) { DataSetTransform dataSetTransform = new DataSetTransform(); BeanUtils.copyProperties(dataSetTransformDtoList.get(i), dataSetTransform); dataSetTransform.setOrderNum(i + 1); dataSetTransform.setSetCode(setCode); - dataSetTransformList.add(dataSetTransform); + //不采用批量 + dataSetTransformService.insert(dataSetTransform); +// dataSetTransformList.add(dataSetTransform); } - dataSetTransformService.insertBatch(dataSetTransformList); +// dataSetTransformService.insertBatch(dataSetTransformList); } }