mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
报表基础模块:1、新增模板加载空白xml;2、移除模板type改为后端定义;
This commit is contained in:
-5
@@ -1,7 +1,6 @@
|
||||
package com.cf.imes.module.report.controller.admin.template.vo;
|
||||
|
||||
import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO;
|
||||
import com.cf.imes.module.report.validation.template.ReportTemplateTypeInEnum;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@@ -34,10 +33,6 @@ public class ReportTemplateSaveReqVO {
|
||||
@Schema(description = "数据源")
|
||||
private List<ReportDatasourceSaveReqVO> datasource = new ArrayList<>();
|
||||
|
||||
@Schema(description = "模板类型,0内置、1自定义", example = "1")
|
||||
@ReportTemplateTypeInEnum
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "备注", example = "该模板仅供生产使用")
|
||||
private String remark;
|
||||
}
|
||||
|
||||
+20
-10
@@ -58,6 +58,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -105,6 +106,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
||||
if (isSuperAdmin) {
|
||||
template.setType(ReportTemplateTypeEnum.SYSTEM);
|
||||
} else {
|
||||
template.setType(ReportTemplateTypeEnum.CUSTOM);
|
||||
}
|
||||
templateMapper.insert(template);
|
||||
Long templateId = template.getId();
|
||||
@@ -249,8 +252,14 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
// 查询模板
|
||||
ReportTemplateDO template = templateMapper.selectById(id);
|
||||
String xmlContent = template.getContent();
|
||||
InputStream is;
|
||||
if (StringUtils.isNotEmpty(xmlContent)) {
|
||||
is = new ByteArrayInputStream(xmlContent.getBytes());
|
||||
} else {
|
||||
is = this.getClass().getClassLoader().getResourceAsStream("templates/template.ureport.xml");
|
||||
}
|
||||
// 解析xml
|
||||
ReportDefinition reportDefinition = new ReportParser().parse(new ByteArrayInputStream(xmlContent.getBytes()), template.getName());
|
||||
ReportDefinition reportDefinition = new ReportParser().parse(is, template.getName());
|
||||
if (ObjectUtil.isNotNull(template)) {
|
||||
queryDatasource(template.getId(), reportDefinition);
|
||||
}
|
||||
@@ -271,24 +280,26 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
// 查询数据集
|
||||
List<ReportDatasetDO> datasetList = datasetService.getDatasetList(ReportDatasetReqVO.builder().datasourceId(ds.getId()).build());
|
||||
List<DatasetDefinition> datasetDefinitions = new ArrayList<>();
|
||||
// 忽略转换的字段名,手动转列表
|
||||
String ignorePropertieName = "datasets";
|
||||
switch (ds.getType()) {
|
||||
case JDBC, BUILDIN -> {
|
||||
// 转换对应的ureport对象
|
||||
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtil.copyProperties(ds, JdbcDatasourceDefinition.class, "datasets");
|
||||
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtil.copyProperties(ds, JdbcDatasourceDefinition.class, ignorePropertieName);
|
||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, SqlDatasetDefinition.class));
|
||||
jdbcDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||
datasourceDefinitions.add(jdbcDatasourceDefinition);
|
||||
}
|
||||
case SPRING -> {
|
||||
// 转换对应的ureport对象
|
||||
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtil.copyProperties(ds, SpringBeanDatasourceDefinition.class, "datasets");
|
||||
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtil.copyProperties(ds, SpringBeanDatasourceDefinition.class, ignorePropertieName);
|
||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, BeanDatasetDefinition.class));
|
||||
springBeanDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||
datasourceDefinitions.add(springBeanDatasourceDefinition);
|
||||
}
|
||||
case API -> {
|
||||
// 转换对应的ureport对象
|
||||
ApiDatasourceDefinition apiDatasourceDefinition = BeanUtil.copyProperties(ds, ApiDatasourceDefinition.class, "datasets");
|
||||
ApiDatasourceDefinition apiDatasourceDefinition = BeanUtil.copyProperties(ds, ApiDatasourceDefinition.class, ignorePropertieName);
|
||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, ApiDatasetDefinition.class));
|
||||
apiDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||
datasourceDefinitions.add(apiDatasourceDefinition);
|
||||
@@ -306,13 +317,12 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
.orderByDesc(ReportTemplateDO::getCreateTime)
|
||||
// 不返回content xml,点击具体的模板中返回xml
|
||||
.select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark);
|
||||
if(!loginUser.getIsSupAdmin()) {
|
||||
if (loginUser != null && Boolean.FALSE.equals(loginUser.getIsSupAdmin())) {
|
||||
// 普通用户查看机构下的和system模板
|
||||
queryWrapper.or(wrapper -> {
|
||||
wrapper.eq(ReportTemplateDO::getOrganId, loginUser.getOrganId()).eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM);
|
||||
}).or(wrapper -> {
|
||||
wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM);
|
||||
});
|
||||
queryWrapper.or(wrapper -> wrapper
|
||||
.eq(ReportTemplateDO::getOrganId, loginUser.getOrganId())
|
||||
.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM))
|
||||
.or(wrapper -> wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM));
|
||||
}
|
||||
// 超管查看全部
|
||||
return templateMapper.selectList(queryWrapper);
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ureport xmlns="http://www.example.org/ureport2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.example.org/ureport2 http://www.example.org/ureport2 ">
|
||||
<cell expand="None" name="A1" col="1" row="1">
|
||||
<simple-value><![CDATA[]]></simple-value>
|
||||
<cell-style font-size="10" font-family="宋体" align="left" valign="middle"></cell-style>
|
||||
</cell>
|
||||
<row row-number="1" height="18"/>
|
||||
<column col-number="1" width="80"/>
|
||||
<paper type="A4" orientation="portrait" paging-mode="fitpage"></paper>
|
||||
</ureport>
|
||||
-2
@@ -8,7 +8,6 @@ import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveRe
|
||||
import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO;
|
||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO;
|
||||
import com.cf.imes.module.report.enums.datasource.ReportDatasourceTypeEnum;
|
||||
import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -30,7 +29,6 @@ public abstract class ReportCommonServiceImplTest {
|
||||
.id(id)
|
||||
.name("单元测试模板")
|
||||
.content(JsonUtil.zipString(TEMPLATE))
|
||||
.type(ReportTemplateTypeEnum.SYSTEM.getType())
|
||||
.remark(RandomUtils.randomString())
|
||||
.datasource(new ArrayList<>())
|
||||
.build();
|
||||
|
||||
Reference in New Issue
Block a user