diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java index e0fb455de..0d9bee876 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java @@ -1,5 +1,6 @@ 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.excel.ExcelParserUtils; 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.util.object.BeanUtils; 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.ReportTemplateRespVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; @@ -105,8 +105,8 @@ public class ReportTemplateController { @PostMapping("/template/preview") @Operation(summary = "模板预览") // @PreAuthorize("@ss.hasPermission('report:template:query')") - public CommonResult preview(@Valid @RequestBody ReportTemplatePreviewPageParametersVO pageParametersVO) { - return success(templateService.preview(pageParametersVO)); + public CommonResult preview(@RequestBody PreviewParameters params) { + return success(templateService.preview(params)); } @PostMapping("/template/export") diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java index f7b652091..387473383 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java @@ -1,10 +1,10 @@ package com.cf.imes.module.report.service.template; +import com.bstek.designer.bean.PreviewParameters; import com.bstek.designer.bean.ReportDefinitionWrapper; import com.bstek.ureport.export.html.HtmlReport; import com.bstek.ureport.model.Report; 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.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO; @@ -68,10 +68,10 @@ public interface ReportTemplateService { /** * 模板预览 * - * @param pageParametersVO + * @param params * @return */ - HtmlReport preview(ReportTemplatePreviewPageParametersVO pageParametersVO); + HtmlReport preview(PreviewParameters params); /** diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java index 70eee6e76..35a2d6f30 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java @@ -6,11 +6,9 @@ import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.URLUtil; 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.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.dataset.ApiDatasetDefinition; 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.JdbcDatasourceDefinition; 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.SinglePageData; import com.bstek.ureport.export.html.HtmlProducer; import com.bstek.ureport.export.html.HtmlReport; -import com.bstek.ureport.export.html.SearchFormData; import com.bstek.ureport.model.Report; import com.bstek.ureport.parser.ReportParser; 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.datasource.vo.ReportDatasourceReqVO; 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.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO; @@ -60,6 +55,7 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -329,52 +325,45 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { } @Override - public HtmlReport preview(ReportTemplatePreviewPageParametersVO pageParametersVO) { + public HtmlReport preview(PreviewParameters params) { HtmlProducer htmlProducer = new HtmlProducer(); ReportRender reportRender = new ReportRender(); - HtmlReport htmlReport = new HtmlReport(); - - // 转换ureport参数 - PreviewPageParameters pageParameters = BeanUtils.toBean(pageParametersVO, PreviewPageParameters.class); - PreviewParameters params = pageParameters.getParams(); - - // 解析xml - ReportDefinition reportDefinition = reportRender.getReportDefinition(URLUtil.decode(params.getContent()), CharsetUtil.UTF_8); - + ReportDefinition reportDefinition = getReportDefinition(reportRender, params); Map parameters = params.getQuery(); - - Paper paper = reportDefinition.getPaper(); - 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 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; + Report report = reportRender.render(reportDefinition, parameters); + return htmlProducer.produce(reportDefinition, report); } + 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 parameters = params.getQuery(); + if (parameters == null) { + parameters = new HashMap<>(); + params.setQuery(parameters); + } + Map component = params.getComponent(); + if (component == null) { + component = new HashMap<>(); + params.setComponent(component); + } + // 相同的低优先级的参数会被高优先级参数覆盖 + // 参数优先级, token参数 > 页面表单参数 > url链接参数 > 数据集默认参数 + parameters.put("pageIndex", params.getPageIndex()); + return reportDefinition; + } + + @Override public Report generateReport(ReportTemplateGenerateReqDTO reqDTO) { Long templateId = reqDTO.getTemplateId();