mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
报表基础模块:获取模板信息、模板导出接口数据源不从xml中读取,走实际的数据库
This commit is contained in:
+16
-5
@@ -1,6 +1,7 @@
|
|||||||
package com.cf.imes.framework.mybatis.core.type;
|
package com.cf.imes.framework.mybatis.core.type;
|
||||||
|
|
||||||
import com.cf.imes.framework.common.util.json.JsonUtils;
|
import com.cf.imes.framework.common.util.json.JsonUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.ibatis.type.JdbcType;
|
import org.apache.ibatis.type.JdbcType;
|
||||||
import org.apache.ibatis.type.StringTypeHandler;
|
import org.apache.ibatis.type.StringTypeHandler;
|
||||||
|
|
||||||
@@ -19,25 +20,35 @@ public class CompressStringTypeHandler extends StringTypeHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
|
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
String compressString = JsonUtils.zipString(parameter);
|
if (StringUtils.isNotEmpty(parameter)) {
|
||||||
ps.setString(i, compressString);
|
String compressString = JsonUtils.zipString(parameter);
|
||||||
|
ps.setString(i, compressString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
||||||
String compressedString = rs.getString(columnName);
|
String compressedString = rs.getString(columnName);
|
||||||
return JsonUtils.unzipString(compressedString);
|
return unzipString(compressedString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
||||||
String compressedString = rs.getString(columnIndex);
|
String compressedString = rs.getString(columnIndex);
|
||||||
return JsonUtils.unzipString(compressedString);
|
return unzipString(compressedString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
||||||
String compressedString = cs.getString(columnIndex);
|
String compressedString = cs.getString(columnIndex);
|
||||||
return JsonUtils.unzipString(compressedString);
|
return unzipString(compressedString);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String unzipString(String compressedString) {
|
||||||
|
if (StringUtils.isNotEmpty(compressedString)) {
|
||||||
|
return JsonUtils.unzipString(compressedString);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -2,6 +2,7 @@ package com.cf.imes.module.report.dal.dataobject.template;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import com.cf.imes.framework.mybatis.core.type.CompressStringTypeHandler;
|
||||||
import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO;
|
import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
@@ -13,7 +14,7 @@ import java.util.List;
|
|||||||
* @author Gqr
|
* @author Gqr
|
||||||
* @since 2024/7/8 11:01
|
* @since 2024/7/8 11:01
|
||||||
*/
|
*/
|
||||||
@TableName("report_template")
|
@TableName(value = "report_template", autoResultMap = true)
|
||||||
@KeySequence("report_template_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
@KeySequence("report_template_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@@ -34,6 +35,7 @@ public class ReportTemplateDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 报表模板
|
* 报表模板
|
||||||
*/
|
*/
|
||||||
|
@TableField(typeHandler = CompressStringTypeHandler.class)
|
||||||
private String content;
|
private String content;
|
||||||
/**
|
/**
|
||||||
* 模板类型,0内置、1自定义
|
* 模板类型,0内置、1自定义
|
||||||
|
|||||||
+35
-23
@@ -193,34 +193,44 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
String xmlContent = template.getContent();
|
String xmlContent = template.getContent();
|
||||||
// 解析xml
|
// 解析xml
|
||||||
ReportDefinition reportDefinition = new ReportParser().parse(new ByteArrayInputStream(xmlContent.getBytes()), template.getName());
|
ReportDefinition reportDefinition = new ReportParser().parse(new ByteArrayInputStream(xmlContent.getBytes()), template.getName());
|
||||||
List<DatasourceDefinition> datasourceDefinitions = new ArrayList<>();
|
|
||||||
if (ObjectUtil.isNotNull(template)) {
|
if (ObjectUtil.isNotNull(template)) {
|
||||||
// 查询数据源
|
queryDatasource(template.getId(), reportDefinition);
|
||||||
List<ReportDatasourceDO> datasourceList = datasourceService.getTemplateDatasourceList(ReportDatasourceReqVO.builder().templateId(template.getId()).build());
|
}
|
||||||
for (ReportDatasourceDO ds : datasourceList) {
|
return new ReportDefinitionWrapper(reportDefinition);
|
||||||
// 查询数据集
|
}
|
||||||
List<ReportDatasetDO> datasetList = datasetService.getDatasetList(ReportDatasetReqVO.builder().datasourceId(ds.getId()).build());
|
|
||||||
List<DatasetDefinition> datasetDefinitions = new ArrayList<>();
|
/**
|
||||||
switch (ds.getType()) {
|
* 查询数据源信息(替代ureport xml中的数据源)
|
||||||
case JDBC, BUILDIN -> {
|
*
|
||||||
// 转换对应的ureport对象
|
* @param templateId 模板id
|
||||||
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtils.toBean(ds, JdbcDatasourceDefinition.class);
|
* @param reportDefinition 报表定义
|
||||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, SqlDatasetDefinition.class));
|
*/
|
||||||
jdbcDatasourceDefinition.setDatasets(datasetDefinitions);
|
private void queryDatasource(Long templateId, ReportDefinition reportDefinition) {
|
||||||
datasourceDefinitions.add(jdbcDatasourceDefinition);
|
List<DatasourceDefinition> datasourceDefinitions = new ArrayList<>();
|
||||||
}
|
// 查询数据源
|
||||||
case SPRING -> {
|
List<ReportDatasourceDO> datasourceList = datasourceService.getTemplateDatasourceList(ReportDatasourceReqVO.builder().templateId(templateId).build());
|
||||||
// 转换对应的ureport对象
|
for (ReportDatasourceDO ds : datasourceList) {
|
||||||
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtils.toBean(ds, SpringBeanDatasourceDefinition.class);
|
// 查询数据集
|
||||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, BeanDatasetDefinition.class));
|
List<ReportDatasetDO> datasetList = datasetService.getDatasetList(ReportDatasetReqVO.builder().datasourceId(ds.getId()).build());
|
||||||
springBeanDatasourceDefinition.setDatasets(datasetDefinitions);
|
List<DatasetDefinition> datasetDefinitions = new ArrayList<>();
|
||||||
datasourceDefinitions.add(springBeanDatasourceDefinition);
|
switch (ds.getType()) {
|
||||||
}
|
case JDBC, BUILDIN -> {
|
||||||
|
// 转换对应的ureport对象
|
||||||
|
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtils.toBean(ds, JdbcDatasourceDefinition.class);
|
||||||
|
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, SqlDatasetDefinition.class));
|
||||||
|
jdbcDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||||
|
datasourceDefinitions.add(jdbcDatasourceDefinition);
|
||||||
|
}
|
||||||
|
case SPRING -> {
|
||||||
|
// 转换对应的ureport对象
|
||||||
|
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtils.toBean(ds, SpringBeanDatasourceDefinition.class);
|
||||||
|
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, BeanDatasetDefinition.class));
|
||||||
|
springBeanDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||||
|
datasourceDefinitions.add(springBeanDatasourceDefinition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reportDefinition.setDatasources(datasourceDefinitions);
|
reportDefinition.setDatasources(datasourceDefinitions);
|
||||||
return new ReportDefinitionWrapper(reportDefinition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -288,6 +298,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
ReportRender reportRender = new ReportRender();
|
ReportRender reportRender = new ReportRender();
|
||||||
// 解析xml
|
// 解析xml
|
||||||
ReportDefinition reportDefinition = reportRender.getReportDefinition(xmlContent, CharsetUtil.UTF_8);
|
ReportDefinition reportDefinition = reportRender.getReportDefinition(xmlContent, CharsetUtil.UTF_8);
|
||||||
|
// 查询数据源
|
||||||
|
queryDatasource(template.getId(), reportDefinition);
|
||||||
// 设置参数
|
// 设置参数
|
||||||
PreviewParameters previewParameters = new PreviewParameters();
|
PreviewParameters previewParameters = new PreviewParameters();
|
||||||
previewParameters.setQuery(reqDTO.getParams());
|
previewParameters.setQuery(reqDTO.getParams());
|
||||||
|
|||||||
Reference in New Issue
Block a user