报表,手动填值、多页签处理和多选基础资料赋值原创
金蝶云社区-Yukiicl
Yukiicl
1人赞赏了该文章 1,140次浏览 未经作者许可,禁止转载编辑于2023年04月10日 21:45:22

前提:使用报表模板,在报表插件中,继承AbstractReportFormPlugin,非报表页面数据源填值


1. 报表列表目前可能不支持多选基础资料赋值,若仅需要显示多选基础资料内容,则可在报表列表中放一个文本字段,在代码中取到值,拿到多选基础资料所选项名称进行拼接,再放入文本字段中。


其中,多选基础资料取值,可以考虑直接用BusinessDataServiceHelper查询出字段,用DynamicObjectCollection取到字段值,用

List<Long> mul = MulBaseDataUtils.getPkValuesByMulData(multiPro);

取到多选基础资料值id集合

另外,赋值可考虑addNew方法

DynamicObject setMul = multi.addNew();
setMul.set("fbasedataid_id", baseDataId.getPkValue());

其中,multi是所取到的DynamicObjectCollection字段,baseDataId是所取到的fbasedataid_id值


以上的赋值过程可在processRowData方法中使用(手动填值可用),该方法会二次进入,第一次进入无值,第二次进入时会带入查询出的行数据

public void processRowData(String gridPK, DynamicObjectCollection rowData, ReportQueryParam queryParam)

gridPK是报表列表标识,rowData是所查出的所有行数据,遍历rowData来进行赋值


2. 报表列表在有多页签的情况下,需在afterQuery(ReportQueryParam queryParam)方法中进行各个页签底下的报表加载,如:

image.png


3.不用报表数据源,通过插件手动填值

首先,写好查询插件(继承AbstractReportListDataPlugin),在query()方法:

public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable

用DataSet查询出值,return dataSet

注意:查询出的数据列名必须和报表列表字段名相同且一一对应(用sql方式查的话可自己设定列名如 t.fbillno billno)

若不能或者不好取出的数想要赋值,可考虑按(1)中processrowData方法赋值


以上方法不一定在任何场景都适用,具体问题具体分析

赞 1