qianlishi 3 years ago
commit 3780db8589

@ -143,11 +143,9 @@ sql文件的目录在report-core --> src --> main --> resources -- > db.migra
已知以下版本存在兼容性问题
- Node.js V16
- Jdk 11
- Mysql 8.08.0.26版本没有问题8.0.21版本存在问题)
- Mysql 8.08.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 @@
## 新增用户
![img](../picture/authmanager/img.png) <br>
![img](../picture/authmanager/img_1.png) <br>
新增用户的默认密码是在bootstrap.yml文件中配置的 <br>
![img](../picture/authmanager/img_2.png) <br>
## 用户授权
**注意**:新建用户完成后需要给用户授权,否则新用户登陆是啥也看不到。<br>
![img](../picture/authmanager/img_3.png) <br>
![img](../picture/authmanager/img_4.png) <br>
**注**:这里没有给新用户赋予默认角色的原因是,在角色管理中角色是可以被删除和修改的,因此在新建用户时需要手动的去授权角色 <br>
## 角色管理
![img](../picture/authmanager/img_5.png) <br>
## 权限分配
为角色分配权限,可看已有角色示例 <br>
![img](../picture/authmanager/img_6.png) <br>

@ -0,0 +1,14 @@
# 社区用户提交文档PR的简易说明
## 提交位置
doc -- > docs --> guide -- > community 目录 <br>
![img](../../guide/community/report/img.png) <br>
## 具体操作
- 请在community目录下新建属于你自己的文件目录命名方式可以使用自己在gitee的名字作为命名注意中文命令可能会存在的一些问题。<br>
- 在你的个人目录下你可以新建MD文件需要用到图片可以直接放一个目录如果md多图片也多建议再建下级目录存放。<br>
最后别忘了在config.js中添加配置如图示。<br>
![img](../../guide/community/report/img_1.png) <br>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@ -1,16 +1,21 @@
## 介绍
## 新增大屏
![img.png](../picture/dashboard/img.png)
## 设计大屏
进入大屏设计方法1 <br>
从报表管理模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
![img](../picture/dashboard/img22.png) <br>
进入大屏设计方法2 <br>
从大屏报表模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
![img](../picture/dashboard/img23.png) <br>
## 大屏简介
![img_2.png](../picture/dashboard/img_2.png)
![img_2.png](../picture/dashboard/img_2.png) <br>
## 工具栏
### 文本框
![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) <br>
![img_4.png](../picture/dashboard/img_4.png) <br>
![img_5.png](../picture/dashboard/img_5.png) <br>
![img_6.png](../picture/dashboard/img_6.png) <br>
### 滚动文本
已支持动态数据,请参考文本框的操作 <br>

@ -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>
![img](../picture/execl/img.png) <br>
进入大屏设计方法2 <br>
从大屏报表模块选择需要设计的大屏,按图示进入大屏设计界面 <br>
![img2](../picture/execl/img_1.png) <br>
## 简介
![img3](../picture/execl/img_2.png) <br>
## 使用
**注**:不建议一列中同时存在俩个字段数据,同时一列值也建议不要存到超大数据量,肯定无法显示的<br>
![img4](../picture/execl/img_3.png) <br>
## 预览/保存
点击保存,则会将数据写入到库中。<br>
点击预览,则进入预览界面。<br>
![img](../picture/execl/img_4.png) <br>
## 预览界面
可以进行导出操作。<br>
![img](../picture/execl/img_5.png) <br>

@ -0,0 +1,3 @@
## 新增报表
![img](../picture/reportmanager/img.png) <br>
状态默认为已启用。

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

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);
}
}

Loading…
Cancel
Save