mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
禅道#961问题修复:预览、打印、文件下载同步使用数据库中的数据源、数据集
This commit is contained in:
+86
-1
@@ -80,6 +80,7 @@ import java.io.PrintWriter;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
@@ -437,10 +438,80 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
checkSearchForm(reportDefinition.getSearchForm(), query);
|
||||
// 增加多租户参数
|
||||
tenantParamsUtils.prepareTenantParam(query);
|
||||
// 匹配数据源、数据集
|
||||
queryPreviewDatasource(query, reportDefinition);
|
||||
|
||||
Report report = reportRender.render(reportDefinition, query);
|
||||
return htmlProducer.produce(reportDefinition, report);
|
||||
}
|
||||
|
||||
/**
|
||||
* 预览查询数据源信息(替代ureport xml中的数据源)
|
||||
*
|
||||
* @param query 预览参数
|
||||
* @param reportDefinition 报表定义
|
||||
*/
|
||||
private void queryPreviewDatasource(Map<String, Object> query, ReportDefinition reportDefinition) {
|
||||
Object datasetIdsObj = query.get("datasetIds");
|
||||
Object datasourceIdsObj = query.get("datasourceIds");
|
||||
|
||||
List<Long> datasetIds = new ArrayList<>();
|
||||
if (ObjectUtil.isNotNull(datasetIdsObj)) {
|
||||
datasetIds = (List) datasetIdsObj;
|
||||
}
|
||||
|
||||
List<ReportDatasourceDO> reportDatasourceDOS = new ArrayList<>();
|
||||
|
||||
if (ObjectUtil.isNotNull(datasourceIdsObj)) {
|
||||
List<Long> datasourceIds = (List) datasourceIdsObj;
|
||||
// 查询模板下的数据源
|
||||
reportDatasourceDOS = datasourceMapper.selectNormalDatasourceList(new HashSet<>(datasourceIds), SecurityFrameworkUtils.getUserOrganId());
|
||||
}
|
||||
|
||||
List<ReportDatasetDO> reportDatasetDOS = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(datasetIds)) {
|
||||
// 查询模板下的数据集
|
||||
reportDatasetDOS = datasetMapper.selectNormalDatasetList(new HashSet<>(datasetIds));
|
||||
}
|
||||
// 转换ureport对象后的数据源列表
|
||||
List<DatasourceDefinition> datasourceDefinitions = new ArrayList<>();
|
||||
|
||||
|
||||
// 遍历列表转换为ureport对象
|
||||
for (ReportDatasourceDO ds : reportDatasourceDOS) {
|
||||
// 转换ureport对象后的数据集列表
|
||||
List<DatasetDefinition> datasetDefinitions = new ArrayList<>();
|
||||
// 匹配数据源下的数据集
|
||||
List<ReportDatasetDO> datasetInDatasourceList = reportDatasetDOS.stream().filter(reportDatasetDO -> ds.getId().equals(reportDatasetDO.getDatasourceId())).toList();
|
||||
// 忽略转换的字段名,手动转列表
|
||||
String ignorePropertieName = "datasets";
|
||||
switch (ds.getType()) {
|
||||
case JDBC -> {
|
||||
// 转换对应的ureport对象
|
||||
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtil.copyProperties(ds, JdbcDatasourceDefinition.class, ignorePropertieName);
|
||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetInDatasourceList, SqlDatasetDefinition.class));
|
||||
jdbcDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||
datasourceDefinitions.add(jdbcDatasourceDefinition);
|
||||
}
|
||||
case SPRING -> {
|
||||
// 转换对应的ureport对象
|
||||
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtil.copyProperties(ds, SpringBeanDatasourceDefinition.class, ignorePropertieName);
|
||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetInDatasourceList, BeanDatasetDefinition.class));
|
||||
springBeanDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||
datasourceDefinitions.add(springBeanDatasourceDefinition);
|
||||
}
|
||||
case API -> {
|
||||
// 转换对应的ureport对象
|
||||
ApiDatasourceDefinition apiDatasourceDefinition = BeanUtil.copyProperties(ds, ApiDatasourceDefinition.class, ignorePropertieName);
|
||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetInDatasourceList, ApiDatasetDefinition.class));
|
||||
apiDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||
datasourceDefinitions.add(apiDatasourceDefinition);
|
||||
}
|
||||
}
|
||||
}
|
||||
reportDefinition.setDatasources(datasourceDefinitions);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HtmlReport commonPreview(ReportTemplateCommonPreviewReqVO reqVO) {
|
||||
// 查询模板
|
||||
@@ -465,9 +536,11 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
Map<String, Object> query = params.getQuery();
|
||||
// 检查表单配置
|
||||
checkSearchForm(reportDefinition.getSearchForm(), query);
|
||||
|
||||
// 增加多租户参数
|
||||
tenantParamsUtils.prepareTenantParam(query);
|
||||
// 匹配数据源、数据集
|
||||
queryDatasource(reportTemplateDO, reportDefinition);
|
||||
|
||||
Report report = reportRender.render(reportDefinition, query);
|
||||
return htmlProducer.produce(reportDefinition, report);
|
||||
}
|
||||
@@ -522,6 +595,9 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
checkSearchForm(reportDefinition.getSearchForm(), query);
|
||||
// 增加多租户参数
|
||||
tenantParamsUtils.prepareTenantParam(query);
|
||||
// 匹配数据源、数据集
|
||||
queryPreviewDatasource(query, reportDefinition);
|
||||
|
||||
Report report = reportRender.render(reportDefinition, query);
|
||||
Map<String, String> chartImages = params.getChartImages();
|
||||
report.setChartImages(chartImages);
|
||||
@@ -568,6 +644,9 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
checkSearchForm(reportDefinition.getSearchForm(), query);
|
||||
// 增加多租户参数
|
||||
tenantParamsUtils.prepareTenantParam(query);
|
||||
// 匹配数据源、数据集
|
||||
queryDatasource(reportTemplateDO, reportDefinition);
|
||||
|
||||
Report report = reportRender.render(reportDefinition, query);
|
||||
Map<String, String> chartImages = params.getChartImages();
|
||||
report.setChartImages(chartImages);
|
||||
@@ -602,6 +681,9 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
checkSearchForm(reportDefinition.getSearchForm(), query);
|
||||
// 增加多租户参数
|
||||
tenantParamsUtils.prepareTenantParam(query);
|
||||
// 匹配数据源、数据集
|
||||
queryPreviewDatasource(query, reportDefinition);
|
||||
|
||||
Report report = reportRender.render(reportDefinition, query);
|
||||
Map<String, String> chartImages = params.getChartImages();
|
||||
report.setChartImages(chartImages);
|
||||
@@ -647,6 +729,9 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
checkSearchForm(reportDefinition.getSearchForm(), query);
|
||||
// 增加多租户参数
|
||||
tenantParamsUtils.prepareTenantParam(query);
|
||||
// 匹配数据源、数据集
|
||||
queryDatasource(reportTemplateDO, reportDefinition);
|
||||
|
||||
Report report = reportRender.render(reportDefinition, query);
|
||||
Map<String, String> chartImages = params.getChartImages();
|
||||
report.setChartImages(chartImages);
|
||||
|
||||
Reference in New Issue
Block a user