【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

前言

在插件开发中,某些时候需要对结果报表做一些操作,以实现自定义的展示需求,比如给结果报表增加新的悬浮元素等。

开发过程

我们以分页预览为例,首先来看一下分页预览从发起请求到最后响应给浏览器端展示HTML的过程。

可以看到结果报表是在PageActor(预览执行方式Actor接口的实现类)之后产生的,如果我们需要修改结果报表的话,那么久可以继承PageActor,重写这个类生成结果报表的方法。

关键方法

结果获取
/**
 * 从缓存中读取结果报表(如果有缓存)
 *
 * @param tpl          报表薄
 * @param tplPath      报表路径
 * @param reportCache  用于缓存报表的对象
 * @param parameterMap 参数集
 * @return 结果报表薄
 */
public ResultWorkBook getResultBookFromCacheIfNeed(TemplateWorkBook tpl, String tplPath,
                                                   ReportCache reportCache,
                                                   Map parameterMap, int sheetIndex);
多sheet计算
/**
 * 生成报表薄跨sheet计算器
 *
 * @param workBook     报表薄
 * @param parameterMap 参数集
 * @return 跨sheet计算器
 */
public WorkBookExecutor createWorkBookExecutor(WorkBook workBook, Map parameterMap);

一般来说,只需要重载getResultBookFromCacheIfNeed方法就可以实现修改结果报表的目的了。

示例代码

ModifyActor
public class ModifyActor extends PageActor {

    @Override
    public ResultWorkBook getResultBookFromCacheIfNeed(TemplateWorkBook tpl, String tplPath, ReportCache reportCache, Map parameterMap, int sheetIndex) {
        ResultWorkBook wb = super.getResultBookFromCacheIfNeed(tpl, tplPath, reportCache, parameterMap, sheetIndex);
        modifyWorkBook(wb);
        return wb;
    }
    
    private void modifyWorkBook(ResultWorkBook wb) {
        // 修改结果报表的具体实现
    }
}

接入点注册

<extra-report>
   <WebActor class="com.fr.plugin.demo.ModifyActor"/>
</extra-report>

 

 

 

 

  • No labels