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:
+1
-2
@@ -1,6 +1,5 @@
|
|||||||
package com.cf.imes.framework.security.core.util;
|
package com.cf.imes.framework.security.core.util;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
import com.cf.imes.framework.common.exception.ServiceException;
|
||||||
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
|
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
|
||||||
import com.cf.imes.framework.security.core.LoginUser;
|
import com.cf.imes.framework.security.core.LoginUser;
|
||||||
@@ -44,7 +43,7 @@ public class SecurityFrameworkUtils {
|
|||||||
String headerName, String parameterName) {
|
String headerName, String parameterName) {
|
||||||
// 1. 获得 Token。优先级:Header > Parameter
|
// 1. 获得 Token。优先级:Header > Parameter
|
||||||
String token = request.getHeader(headerName);
|
String token = request.getHeader(headerName);
|
||||||
if (StrUtil.isEmpty(token)) {
|
if (StringUtils.isEmpty(token)) {
|
||||||
token = request.getParameter(parameterName);
|
token = request.getParameter(parameterName);
|
||||||
}
|
}
|
||||||
if (!StringUtils.hasText(token)) {
|
if (!StringUtils.hasText(token)) {
|
||||||
|
|||||||
-5
@@ -1,7 +1,6 @@
|
|||||||
package com.cf.imes.module.report.controller.admin.template.vo;
|
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.controller.admin.datasource.vo.ReportDatasourceSaveReqVO;
|
||||||
import com.cf.imes.module.report.validation.template.ReportTemplateTypeInEnum;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@@ -34,10 +33,6 @@ public class ReportTemplateSaveReqVO {
|
|||||||
@Schema(description = "数据源")
|
@Schema(description = "数据源")
|
||||||
private List<ReportDatasourceSaveReqVO> datasource = new ArrayList<>();
|
private List<ReportDatasourceSaveReqVO> datasource = new ArrayList<>();
|
||||||
|
|
||||||
@Schema(description = "模板类型,0内置、1自定义", example = "1")
|
|
||||||
@ReportTemplateTypeInEnum
|
|
||||||
private Integer type;
|
|
||||||
|
|
||||||
@Schema(description = "备注", example = "该模板仅供生产使用")
|
@Schema(description = "备注", example = "该模板仅供生产使用")
|
||||||
private String remark;
|
private String remark;
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-10
@@ -58,6 +58,7 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -105,6 +106,8 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin();
|
||||||
if (isSuperAdmin) {
|
if (isSuperAdmin) {
|
||||||
template.setType(ReportTemplateTypeEnum.SYSTEM);
|
template.setType(ReportTemplateTypeEnum.SYSTEM);
|
||||||
|
} else {
|
||||||
|
template.setType(ReportTemplateTypeEnum.CUSTOM);
|
||||||
}
|
}
|
||||||
templateMapper.insert(template);
|
templateMapper.insert(template);
|
||||||
Long templateId = template.getId();
|
Long templateId = template.getId();
|
||||||
@@ -249,8 +252,14 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
// 查询模板
|
// 查询模板
|
||||||
ReportTemplateDO template = templateMapper.selectById(id);
|
ReportTemplateDO template = templateMapper.selectById(id);
|
||||||
String xmlContent = template.getContent();
|
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
|
// 解析xml
|
||||||
ReportDefinition reportDefinition = new ReportParser().parse(new ByteArrayInputStream(xmlContent.getBytes()), template.getName());
|
ReportDefinition reportDefinition = new ReportParser().parse(is, template.getName());
|
||||||
if (ObjectUtil.isNotNull(template)) {
|
if (ObjectUtil.isNotNull(template)) {
|
||||||
queryDatasource(template.getId(), reportDefinition);
|
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<ReportDatasetDO> datasetList = datasetService.getDatasetList(ReportDatasetReqVO.builder().datasourceId(ds.getId()).build());
|
||||||
List<DatasetDefinition> datasetDefinitions = new ArrayList<>();
|
List<DatasetDefinition> datasetDefinitions = new ArrayList<>();
|
||||||
|
// 忽略转换的字段名,手动转列表
|
||||||
|
String ignorePropertieName = "datasets";
|
||||||
switch (ds.getType()) {
|
switch (ds.getType()) {
|
||||||
case JDBC, BUILDIN -> {
|
case JDBC, BUILDIN -> {
|
||||||
// 转换对应的ureport对象
|
// 转换对应的ureport对象
|
||||||
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtil.copyProperties(ds, JdbcDatasourceDefinition.class, "datasets");
|
JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtil.copyProperties(ds, JdbcDatasourceDefinition.class, ignorePropertieName);
|
||||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, SqlDatasetDefinition.class));
|
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, SqlDatasetDefinition.class));
|
||||||
jdbcDatasourceDefinition.setDatasets(datasetDefinitions);
|
jdbcDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||||
datasourceDefinitions.add(jdbcDatasourceDefinition);
|
datasourceDefinitions.add(jdbcDatasourceDefinition);
|
||||||
}
|
}
|
||||||
case SPRING -> {
|
case SPRING -> {
|
||||||
// 转换对应的ureport对象
|
// 转换对应的ureport对象
|
||||||
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtil.copyProperties(ds, SpringBeanDatasourceDefinition.class, "datasets");
|
SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtil.copyProperties(ds, SpringBeanDatasourceDefinition.class, ignorePropertieName);
|
||||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, BeanDatasetDefinition.class));
|
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, BeanDatasetDefinition.class));
|
||||||
springBeanDatasourceDefinition.setDatasets(datasetDefinitions);
|
springBeanDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||||
datasourceDefinitions.add(springBeanDatasourceDefinition);
|
datasourceDefinitions.add(springBeanDatasourceDefinition);
|
||||||
}
|
}
|
||||||
case API -> {
|
case API -> {
|
||||||
// 转换对应的ureport对象
|
// 转换对应的ureport对象
|
||||||
ApiDatasourceDefinition apiDatasourceDefinition = BeanUtil.copyProperties(ds, ApiDatasourceDefinition.class, "datasets");
|
ApiDatasourceDefinition apiDatasourceDefinition = BeanUtil.copyProperties(ds, ApiDatasourceDefinition.class, ignorePropertieName);
|
||||||
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, ApiDatasetDefinition.class));
|
datasetDefinitions.addAll(BeanUtils.toBean(datasetList, ApiDatasetDefinition.class));
|
||||||
apiDatasourceDefinition.setDatasets(datasetDefinitions);
|
apiDatasourceDefinition.setDatasets(datasetDefinitions);
|
||||||
datasourceDefinitions.add(apiDatasourceDefinition);
|
datasourceDefinitions.add(apiDatasourceDefinition);
|
||||||
@@ -306,13 +317,12 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
.orderByDesc(ReportTemplateDO::getCreateTime)
|
.orderByDesc(ReportTemplateDO::getCreateTime)
|
||||||
// 不返回content xml,点击具体的模板中返回xml
|
// 不返回content xml,点击具体的模板中返回xml
|
||||||
.select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark);
|
.select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark);
|
||||||
if(!loginUser.getIsSupAdmin()) {
|
if (loginUser != null && Boolean.FALSE.equals(loginUser.getIsSupAdmin())) {
|
||||||
// 普通用户查看机构下的和system模板
|
// 普通用户查看机构下的和system模板
|
||||||
queryWrapper.or(wrapper -> {
|
queryWrapper.or(wrapper -> wrapper
|
||||||
wrapper.eq(ReportTemplateDO::getOrganId, loginUser.getOrganId()).eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM);
|
.eq(ReportTemplateDO::getOrganId, loginUser.getOrganId())
|
||||||
}).or(wrapper -> {
|
.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM))
|
||||||
wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM);
|
.or(wrapper -> wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
// 超管查看全部
|
// 超管查看全部
|
||||||
return templateMapper.selectList(queryWrapper);
|
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.datasource.vo.ReportDatasourceSaveReqVO;
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO;
|
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.datasource.ReportDatasourceTypeEnum;
|
||||||
import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -30,7 +29,6 @@ public abstract class ReportCommonServiceImplTest {
|
|||||||
.id(id)
|
.id(id)
|
||||||
.name("单元测试模板")
|
.name("单元测试模板")
|
||||||
.content(JsonUtil.zipString(TEMPLATE))
|
.content(JsonUtil.zipString(TEMPLATE))
|
||||||
.type(ReportTemplateTypeEnum.SYSTEM.getType())
|
|
||||||
.remark(RandomUtils.randomString())
|
.remark(RandomUtils.randomString())
|
||||||
.datasource(new ArrayList<>())
|
.datasource(new ArrayList<>())
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
Reference in New Issue
Block a user