mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
报表基础模块:同步最新ureport-community最新预览代码
This commit is contained in:
+3
-3
@@ -1,5 +1,6 @@
|
|||||||
package com.cf.imes.module.report.controller.admin.template;
|
package com.cf.imes.module.report.controller.admin.template;
|
||||||
|
|
||||||
|
import com.bstek.designer.bean.PreviewParameters;
|
||||||
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
||||||
import com.bstek.designer.excel.ExcelParserUtils;
|
import com.bstek.designer.excel.ExcelParserUtils;
|
||||||
import com.bstek.ureport.definition.ReportDefinition;
|
import com.bstek.ureport.definition.ReportDefinition;
|
||||||
@@ -16,7 +17,6 @@ import com.cf.imes.framework.common.exception.ServiceException;
|
|||||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||||
import com.cf.imes.module.report.api.template.dto.ReportTemplateGenerateReqDTO;
|
import com.cf.imes.module.report.api.template.dto.ReportTemplateGenerateReqDTO;
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewPageParametersVO;
|
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO;
|
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO;
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateRespVO;
|
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateRespVO;
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO;
|
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO;
|
||||||
@@ -105,8 +105,8 @@ public class ReportTemplateController {
|
|||||||
@PostMapping("/template/preview")
|
@PostMapping("/template/preview")
|
||||||
@Operation(summary = "模板预览")
|
@Operation(summary = "模板预览")
|
||||||
// @PreAuthorize("@ss.hasPermission('report:template:query')")
|
// @PreAuthorize("@ss.hasPermission('report:template:query')")
|
||||||
public CommonResult<HtmlReport> preview(@Valid @RequestBody ReportTemplatePreviewPageParametersVO pageParametersVO) {
|
public CommonResult<HtmlReport> preview(@RequestBody PreviewParameters params) {
|
||||||
return success(templateService.preview(pageParametersVO));
|
return success(templateService.preview(params));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/template/export")
|
@PostMapping("/template/export")
|
||||||
|
|||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
package com.cf.imes.module.report.service.template;
|
package com.cf.imes.module.report.service.template;
|
||||||
|
|
||||||
|
import com.bstek.designer.bean.PreviewParameters;
|
||||||
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
||||||
import com.bstek.ureport.export.html.HtmlReport;
|
import com.bstek.ureport.export.html.HtmlReport;
|
||||||
import com.bstek.ureport.model.Report;
|
import com.bstek.ureport.model.Report;
|
||||||
import com.cf.imes.module.report.api.template.dto.ReportTemplateGenerateReqDTO;
|
import com.cf.imes.module.report.api.template.dto.ReportTemplateGenerateReqDTO;
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewPageParametersVO;
|
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO;
|
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO;
|
||||||
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.dal.dataobject.template.ReportTemplateDO;
|
import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO;
|
||||||
@@ -68,10 +68,10 @@ public interface ReportTemplateService {
|
|||||||
/**
|
/**
|
||||||
* 模板预览
|
* 模板预览
|
||||||
*
|
*
|
||||||
* @param pageParametersVO
|
* @param params
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
HtmlReport preview(ReportTemplatePreviewPageParametersVO pageParametersVO);
|
HtmlReport preview(PreviewParameters params);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+37
-48
@@ -6,11 +6,9 @@ import cn.hutool.core.util.CharsetUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.URLUtil;
|
import cn.hutool.core.util.URLUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.bstek.designer.bean.PreviewPageParameters;
|
import com.bstek.common.exception.ReportDesignException;
|
||||||
import com.bstek.designer.bean.PreviewParameters;
|
import com.bstek.designer.bean.PreviewParameters;
|
||||||
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
import com.bstek.designer.bean.ReportDefinitionWrapper;
|
||||||
import com.bstek.ureport.build.paging.Page;
|
|
||||||
import com.bstek.ureport.definition.Paper;
|
|
||||||
import com.bstek.ureport.definition.ReportDefinition;
|
import com.bstek.ureport.definition.ReportDefinition;
|
||||||
import com.bstek.ureport.definition.dataset.ApiDatasetDefinition;
|
import com.bstek.ureport.definition.dataset.ApiDatasetDefinition;
|
||||||
import com.bstek.ureport.definition.dataset.BeanDatasetDefinition;
|
import com.bstek.ureport.definition.dataset.BeanDatasetDefinition;
|
||||||
@@ -20,12 +18,10 @@ import com.bstek.ureport.definition.datasource.ApiDatasourceDefinition;
|
|||||||
import com.bstek.ureport.definition.datasource.DatasourceDefinition;
|
import com.bstek.ureport.definition.datasource.DatasourceDefinition;
|
||||||
import com.bstek.ureport.definition.datasource.JdbcDatasourceDefinition;
|
import com.bstek.ureport.definition.datasource.JdbcDatasourceDefinition;
|
||||||
import com.bstek.ureport.definition.datasource.SpringBeanDatasourceDefinition;
|
import com.bstek.ureport.definition.datasource.SpringBeanDatasourceDefinition;
|
||||||
import com.bstek.ureport.export.PageBuilder;
|
import com.bstek.ureport.exception.ReportComputeException;
|
||||||
import com.bstek.ureport.export.ReportRender;
|
import com.bstek.ureport.export.ReportRender;
|
||||||
import com.bstek.ureport.export.SinglePageData;
|
|
||||||
import com.bstek.ureport.export.html.HtmlProducer;
|
import com.bstek.ureport.export.html.HtmlProducer;
|
||||||
import com.bstek.ureport.export.html.HtmlReport;
|
import com.bstek.ureport.export.html.HtmlReport;
|
||||||
import com.bstek.ureport.export.html.SearchFormData;
|
|
||||||
import com.bstek.ureport.model.Report;
|
import com.bstek.ureport.model.Report;
|
||||||
import com.bstek.ureport.parser.ReportParser;
|
import com.bstek.ureport.parser.ReportParser;
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||||
@@ -38,7 +34,6 @@ import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetReqVO;
|
|||||||
import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO;
|
import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO;
|
||||||
import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceReqVO;
|
import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceReqVO;
|
||||||
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.ReportTemplatePreviewPageParametersVO;
|
|
||||||
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO;
|
import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO;
|
||||||
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.dal.dataobject.dataset.ReportDatasetDO;
|
import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO;
|
||||||
@@ -60,6 +55,7 @@ import java.io.ByteArrayInputStream;
|
|||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -329,52 +325,45 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HtmlReport preview(ReportTemplatePreviewPageParametersVO pageParametersVO) {
|
public HtmlReport preview(PreviewParameters params) {
|
||||||
HtmlProducer htmlProducer = new HtmlProducer();
|
HtmlProducer htmlProducer = new HtmlProducer();
|
||||||
ReportRender reportRender = new ReportRender();
|
ReportRender reportRender = new ReportRender();
|
||||||
HtmlReport htmlReport = new HtmlReport();
|
ReportDefinition reportDefinition = getReportDefinition(reportRender, params);
|
||||||
|
|
||||||
// 转换ureport参数
|
|
||||||
PreviewPageParameters pageParameters = BeanUtils.toBean(pageParametersVO, PreviewPageParameters.class);
|
|
||||||
PreviewParameters params = pageParameters.getParams();
|
|
||||||
|
|
||||||
// 解析xml
|
|
||||||
ReportDefinition reportDefinition = reportRender.getReportDefinition(URLUtil.decode(params.getContent()), CharsetUtil.UTF_8);
|
|
||||||
|
|
||||||
Map<String, Object> parameters = params.getQuery();
|
Map<String, Object> parameters = params.getQuery();
|
||||||
|
Report report = reportRender.render(reportDefinition, parameters);
|
||||||
Paper paper = reportDefinition.getPaper();
|
return htmlProducer.produce(reportDefinition, report);
|
||||||
Report report;
|
|
||||||
String html;
|
|
||||||
// 构建html
|
|
||||||
if (paper.isPageEnabled()) {
|
|
||||||
// todo 后续有可能做成缓存
|
|
||||||
report = reportRender.render(reportDefinition, parameters);
|
|
||||||
int pageIndex = pageParameters.getPageIndex();
|
|
||||||
SinglePageData pageData = PageBuilder.buildSinglePageData(pageIndex, report);
|
|
||||||
List<Page> pages = pageData.getPages();
|
|
||||||
html = htmlProducer.produce(report.getContext(), pages, pageData.getColumnMargin(), false);
|
|
||||||
htmlReport.setTotalPage(pageData.getTotalPages());
|
|
||||||
htmlReport.setPageIndex(pageIndex);
|
|
||||||
if (reportDefinition.getPaper().isColumnEnabled()) {
|
|
||||||
htmlReport.setColumn(reportDefinition.getPaper().getColumnCount());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
report = reportRender.render(reportDefinition, parameters);
|
|
||||||
html = htmlProducer.produce(report);
|
|
||||||
}
|
|
||||||
htmlReport.setChartDatas(report.getContext().getChartDataMap().values());
|
|
||||||
htmlReport.setContent(html);
|
|
||||||
htmlReport.setStyle(reportDefinition.getStyle());
|
|
||||||
SearchFormData searchFormData = reportDefinition.buildSearchFormData(report.getContext().getDatasetMap(), parameters);
|
|
||||||
htmlReport.setSearchFormData(searchFormData);
|
|
||||||
htmlReport.setReportAlign(report.getPaper().getHtmlReportAlign().name());
|
|
||||||
htmlReport.setBgImage(report.getPaper().getBgImage());
|
|
||||||
htmlReport.setFreeze(reportDefinition.getFreeze());
|
|
||||||
htmlReport.setFloatImages(reportDefinition.getFloatImages());
|
|
||||||
return htmlReport;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ReportDefinition getReportDefinition(ReportRender reportRender, PreviewParameters params) {
|
||||||
|
ReportDefinition reportDefinition;
|
||||||
|
|
||||||
|
String content = params.getContent();
|
||||||
|
if (StringUtils.isNotBlank(content)) {
|
||||||
|
content = URLUtil.decode(content);
|
||||||
|
reportDefinition = reportRender.getReportDefinition(content, "utf-8");
|
||||||
|
} else {
|
||||||
|
throw new ReportComputeException("模版文件不能为空");
|
||||||
|
}
|
||||||
|
if (reportDefinition == null) {
|
||||||
|
throw new ReportDesignException("模板数据已过期,无法预览");
|
||||||
|
}
|
||||||
|
Map<String, Object> parameters = params.getQuery();
|
||||||
|
if (parameters == null) {
|
||||||
|
parameters = new HashMap<>();
|
||||||
|
params.setQuery(parameters);
|
||||||
|
}
|
||||||
|
Map<String, String> component = params.getComponent();
|
||||||
|
if (component == null) {
|
||||||
|
component = new HashMap<>();
|
||||||
|
params.setComponent(component);
|
||||||
|
}
|
||||||
|
// 相同的低优先级的参数会被高优先级参数覆盖
|
||||||
|
// 参数优先级, token参数 > 页面表单参数 > url链接参数 > 数据集默认参数
|
||||||
|
parameters.put("pageIndex", params.getPageIndex());
|
||||||
|
return reportDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Report generateReport(ReportTemplateGenerateReqDTO reqDTO) {
|
public Report generateReport(ReportTemplateGenerateReqDTO reqDTO) {
|
||||||
Long templateId = reqDTO.getTemplateId();
|
Long templateId = reqDTO.getTemplateId();
|
||||||
|
|||||||
Reference in New Issue
Block a user