Merge branch 'dev' of https://gitee.com/anji-plus/report into dev
@@ -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) <br>
|
||||
|
||||
@@ -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开发环境'}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
## 新增用户
|
||||
 <br>
|
||||
|
||||
 <br>
|
||||
新增用户的默认密码是在bootstrap.yml文件中配置的 <br>
|
||||
 <br>
|
||||
|
||||
## 用户授权
|
||||
**注意**:新建用户完成后需要给用户授权,否则新用户登陆是啥也看不到。<br>
|
||||
 <br>
|
||||
|
||||
 <br>
|
||||
**注**:这里没有给新用户赋予默认角色的原因是,在角色管理中角色是可以被删除和修改的,因此在新建用户时需要手动的去授权角色 <br>
|
||||
|
||||
## 角色管理
|
||||
 <br>
|
||||
|
||||
## 权限分配
|
||||
为角色分配权限,可看已有角色示例 <br>
|
||||
 <br>
|
||||
|
||||
|
||||
|
||||
14
doc/docs/guide/community/report.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# 社区用户提交文档PR的简易说明
|
||||
|
||||
## 提交位置
|
||||
doc -- > docs --> guide -- > community 目录 <br>
|
||||
 <br>
|
||||
|
||||
## 具体操作
|
||||
- 请在community目录下新建属于你自己的文件目录,命名方式可以使用自己在gitee的名字作为命名,注意中文命令可能会存在的一些问题。<br>
|
||||
- 在你的个人目录下,你可以新建MD文件,需要用到图片可以直接放一个目录,如果md多,图片也多,建议再建下级目录存放。<br>
|
||||
|
||||
最后别忘了在config.js中添加配置,如图示。<br>
|
||||
 <br>
|
||||
|
||||
|
||||
BIN
doc/docs/guide/community/report/img.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
doc/docs/guide/community/report/img_1.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
@@ -1,16 +1,21 @@
|
||||
## 介绍
|
||||
## 新增大屏
|
||||

|
||||
## 设计大屏
|
||||
进入大屏设计方法1: <br>
|
||||
从报表管理模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
|
||||
 <br>
|
||||
|
||||
进入大屏设计方法2: <br>
|
||||
从大屏报表模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
|
||||
 <br>
|
||||
|
||||
## 大屏简介
|
||||

|
||||
 <br>
|
||||
|
||||
## 工具栏
|
||||
### 文本框
|
||||

|
||||

|
||||

|
||||

|
||||
 <br>
|
||||
 <br>
|
||||
 <br>
|
||||
 <br>
|
||||
|
||||
### 滚动文本
|
||||
已支持动态数据,请参考文本框的操作 <br>
|
||||
|
||||
27
doc/docs/guide/execl.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# 介绍
|
||||
execl报表基于Luckysheet开发,[Luckysheet](https://gitee.com/mengshukeji/Luckysheet) 一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。
|
||||
**注意:** execl报表目前只是简单集成,如果你遇到了一些问题请在此[Issue](https://gitee.com/anji-plus/report/issues/I4CEWV) 下面进行回复。<br>
|
||||
## 表格报表设计
|
||||
进入表格设计方法1: <br>
|
||||
从报表管理模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
|
||||
 <br>
|
||||
|
||||
进入大屏设计方法2: <br>
|
||||
从大屏报表模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
|
||||
 <br>
|
||||
|
||||
## 简介
|
||||
 <br>
|
||||
|
||||
## 使用
|
||||
**注**:不建议一列中同时存在俩个字段数据,同时一列值也建议不要存到超大数据量,肯定无法显示的<br>
|
||||
 <br>
|
||||
|
||||
## 预览/保存
|
||||
点击保存,则会将数据写入到库中。<br>
|
||||
点击预览,则进入预览界面。<br>
|
||||
 <br>
|
||||
|
||||
## 预览界面
|
||||
可以进行导出操作。<br>
|
||||
 <br>
|
||||
3
doc/docs/guide/reportmanager.md
Normal file
@@ -0,0 +1,3 @@
|
||||
## 新增报表
|
||||
 <br>
|
||||
状态默认为已启用。
|
||||
BIN
doc/docs/picture/authmanager/img.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
doc/docs/picture/authmanager/img_1.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
doc/docs/picture/authmanager/img_2.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
doc/docs/picture/authmanager/img_3.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
doc/docs/picture/authmanager/img_4.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
doc/docs/picture/authmanager/img_5.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
doc/docs/picture/authmanager/img_6.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 24 KiB |
BIN
doc/docs/picture/dashboard/img22.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
doc/docs/picture/dashboard/img23.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
doc/docs/picture/execl/img.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
doc/docs/picture/execl/img_1.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
doc/docs/picture/execl/img_2.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
doc/docs/picture/execl/img_3.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
doc/docs/picture/execl/img_4.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
doc/docs/picture/execl/img_5.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
doc/docs/picture/reportmanager/img.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
@@ -179,19 +179,22 @@ public class AccessUserServiceImpl implements AccessUserService {
|
||||
accessUserWrapper.eq(AccessUserRole::getLoginName, loginName);
|
||||
List<AccessUserRole> accessUserRoles = accessUserRoleMapper.selectList(accessUserWrapper);
|
||||
Set<String> roleCodeSet = accessUserRoles.stream().map(AccessUserRole::getRoleCode).collect(Collectors.toSet());
|
||||
|
||||
LambdaQueryWrapper<AccessRoleAuthority> accessRoleAuthorityWrapper = Wrappers.lambdaQuery();
|
||||
accessRoleAuthorityWrapper.select(AccessRoleAuthority::getTarget, AccessRoleAuthority::getAction);
|
||||
accessRoleAuthorityWrapper.in(AccessRoleAuthority::getRoleCode, roleCodeSet);
|
||||
List<AccessRoleAuthority> accessRoleAuthorities = accessRoleAuthorityMapper.selectList(accessRoleAuthorityWrapper);
|
||||
List<String> 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<AccessRoleAuthority> accessRoleAuthorityWrapper = Wrappers.lambdaQuery();
|
||||
accessRoleAuthorityWrapper.select(AccessRoleAuthority::getTarget, AccessRoleAuthority::getAction);
|
||||
accessRoleAuthorityWrapper.in(AccessRoleAuthority::getRoleCode, roleCodeSet);
|
||||
List<AccessRoleAuthority> accessRoleAuthorities = accessRoleAuthorityMapper.selectList(accessRoleAuthorityWrapper);
|
||||
List<String> 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);
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ public class ReportDashboardServiceImpl implements ReportDashboardService, Initi
|
||||
.lambda().eq(ReportDashboardWidget::getReportCode, reportCode));
|
||||
List<ReportDashboardWidgetDto> widgets = dto.getWidgets();
|
||||
|
||||
List<ReportDashboardWidget> reportDashboardWidgetList = new ArrayList<>();
|
||||
// List<ReportDashboardWidget> 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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -315,14 +315,16 @@ public class DataSetServiceImpl implements DataSetService {
|
||||
if (null == dataSetParamDtoList || dataSetParamDtoList.size() <= 0) {
|
||||
return;
|
||||
}
|
||||
List<DataSetParam> dataSetParamList = new ArrayList<>();
|
||||
// List<DataSetParam> 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<DataSetTransform> dataSetTransformList = new ArrayList<>();
|
||||
// List<DataSetTransform> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||