mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 05:42:06 +08:00
报表基础模块:内置数据源下的sql数据集支持多租户字段organ_id
This commit is contained in:
@@ -106,5 +106,5 @@ knife4j:
|
|||||||
chenfeng:
|
chenfeng:
|
||||||
gateway:
|
gateway:
|
||||||
access-log-ignore-urls:
|
access-log-ignore-urls:
|
||||||
- /report/template/
|
- /report/template
|
||||||
- /system/captcha/get
|
- /system/captcha/get
|
||||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Set;
|
|||||||
* @since 2024/9/26 16:41
|
* @since 2024/9/26 16:41
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConfigurationProperties("chenfeng.report")
|
@ConfigurationProperties(prefix = "chenfeng.report")
|
||||||
@Data
|
@Data
|
||||||
public class CfReportProperties {
|
public class CfReportProperties {
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
-2
@@ -13,6 +13,7 @@ import com.bstek.datasource.bean.PreviewParams;
|
|||||||
import com.bstek.ureport.definition.dataset.Field;
|
import com.bstek.ureport.definition.dataset.Field;
|
||||||
import com.bstek.ureport.definition.dataset.Parameter;
|
import com.bstek.ureport.definition.dataset.Parameter;
|
||||||
import com.bstek.ureport.definition.dataset.SqlDatasetDefinition;
|
import com.bstek.ureport.definition.dataset.SqlDatasetDefinition;
|
||||||
|
import com.bstek.ureport.definition.dataset.TenantParams;
|
||||||
import com.bstek.ureport.utils.ProcedureUtils;
|
import com.bstek.ureport.utils.ProcedureUtils;
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
import com.cf.imes.framework.common.exception.ServiceException;
|
||||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||||
@@ -230,9 +231,9 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService {
|
|||||||
sqlDatasetDefinition.setSql(sql);
|
sqlDatasetDefinition.setSql(sql);
|
||||||
sqlDatasetDefinition.setParameters(BeanUtils.toBean(parameters, Parameter.class));
|
sqlDatasetDefinition.setParameters(BeanUtils.toBean(parameters, Parameter.class));
|
||||||
|
|
||||||
Map<String, Object> params = new HashMap<String, Object>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
Map<String, Object> pmap = sqlDatasetDefinition.buildParameters(params);
|
Map<String, Object> pmap = sqlDatasetDefinition.buildParameters(params);
|
||||||
String sqlForUse = sqlDatasetDefinition.parseSql(pmap);
|
String sqlForUse = sqlDatasetDefinition.parseSql(pmap, new TenantParams());
|
||||||
if (ProcedureUtils.isProcedure(sqlForUse)) {
|
if (ProcedureUtils.isProcedure(sqlForUse)) {
|
||||||
return ProcedureUtils.procedureColumnsQuery(sqlForUse, pmap, conn);
|
return ProcedureUtils.procedureColumnsQuery(sqlForUse, pmap, conn);
|
||||||
}
|
}
|
||||||
|
|||||||
+27
-4
@@ -64,6 +64,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR;
|
import static com.cf.imes.module.report.enums.ErrorCodeConstants.TEMPLATE_BUILDIN_OPERATION_PERMISSION_ERROR;
|
||||||
@@ -353,15 +354,37 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HtmlReport preview(PreviewParameters params) {
|
public HtmlReport preview(PreviewParameters params) {
|
||||||
|
Long userOrganId = SecurityFrameworkUtils.getUserOrganId();
|
||||||
|
|
||||||
HtmlProducer htmlProducer = new HtmlProducer();
|
HtmlProducer htmlProducer = new HtmlProducer();
|
||||||
ReportRender reportRender = new ReportRender();
|
ReportRender reportRender = new ReportRender();
|
||||||
ReportDefinition reportDefinition = getReportDefinition(reportRender, params);
|
ReportDefinition reportDefinition = getReportDefinition(reportRender, params);
|
||||||
Map<String, Object> parameters = params.getQuery();
|
Map<String, Object> parameters = params.getQuery();
|
||||||
// imes多租户业务表表名列表
|
if (Boolean.FALSE.equals(SecurityFrameworkUtils.isSuperAdmin())) {
|
||||||
Set<String> tenantTableNames = cfReportProperties.getTenantTableNames();
|
// 根据前端传递的数据集id,判断是不是内置数据源下的,是就把name传给ureport
|
||||||
if (CollUtil.isNotEmpty(tenantTableNames)) {
|
List<Long> datasetIds = (List) parameters.get("datasetIds");
|
||||||
|
if (CollUtil.isNotEmpty(datasetIds)) {
|
||||||
|
// 内置数据集名称列表
|
||||||
|
List<String> buildinDsNames = new ArrayList<>();
|
||||||
|
// 遍历获取所有上级数据源
|
||||||
|
List<ReportDatasetDO> reportDatasetDOS = datasetMapper.selectNormalDatasetList(datasetIds.stream().collect(Collectors.toSet()));
|
||||||
|
for (ReportDatasetDO datasetDO : reportDatasetDOS) {
|
||||||
|
Long datasourceId = datasetDO.getDatasourceId();
|
||||||
|
// 查询数据源,如果是内置数据源则把数据集的name传给ureport
|
||||||
|
// 机构下 + 内置数据源查询
|
||||||
|
ReportDatasourceDO datasourceDO = datasourceMapper.selectNormalDatasourceById(datasourceId, userOrganId);
|
||||||
|
if (ObjectUtil.equal(datasourceDO.getBuildinType(), ReportTemplateTypeEnum.SYSTEM)) {
|
||||||
|
buildinDsNames.add(datasetDO.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (CollUtil.isNotEmpty(buildinDsNames)) {
|
||||||
|
parameters.put("buildinDsNames", buildinDsNames);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// imes多租户业务表表名列表
|
||||||
parameters.put("tenantTableNames", cfReportProperties.getTenantTableNames());
|
parameters.put("tenantTableNames", cfReportProperties.getTenantTableNames());
|
||||||
parameters.put("organId", SecurityFrameworkUtils.getUserOrganId());
|
// 用户组织id
|
||||||
|
parameters.put("organId", userOrganId);
|
||||||
}
|
}
|
||||||
Report report = reportRender.render(reportDefinition, parameters);
|
Report report = reportRender.render(reportDefinition, parameters);
|
||||||
return htmlProducer.produce(reportDefinition, report);
|
return htmlProducer.produce(reportDefinition, report);
|
||||||
|
|||||||
@@ -106,7 +106,8 @@ chenfeng:
|
|||||||
encrypt:
|
encrypt:
|
||||||
enable: false
|
enable: false
|
||||||
publicKey: cfimes
|
publicKey: cfimes
|
||||||
tenant-table-names:
|
report:
|
||||||
|
tenant-table-names:
|
||||||
- system_dept
|
- system_dept
|
||||||
- system_user
|
- system_user
|
||||||
- system_organization
|
- system_organization
|
||||||
|
|||||||
BIN
Binary file not shown.
Reference in New Issue
Block a user