通过套打模板打印列表数据

1 场景介绍
套打模板一般用于对单据数据打印,但部分场景中用户希望列表的数据可以按自定义模板进行套打。 目前列表打印的功能是根据列表所见即所得的,无法自定义设计模板样式,本篇文档介绍如何利用打印二开插件,完成列表数据根据自定义模板进行套打。
模板设计

打印效果

2 适用版本
金蝶云苍穹 V5.0.01以上
3 解决方案
3.1 整体思路
首先我们可以考虑通过自定义数据源来实现该业务场景,收集我们列表上需要打印的所有字段,按照单据字段标识,在自定义数据源下原封不动的添加这些字段,并通过插件给这些字段赋值,这样就能通过数据表格绑定自定义数据源,从而实现打印列表的数据。
3.2 关键步骤
创建打印模板,根据列表字段添加自定义数据源


2. 创建打印插件,通过插件给自定义数据源赋值
package kd.bos.print.service;
/**
* @description:
* @author: Dech
* @create: 2021-05-26 17:31
**/
public class PrintDsSamplePlugin extends AbstractPrintSeniorPlugin {
//记录主数据源
private MainDataSource mainDataSource;
//定义需要打印的查询字段
private String queryFields = "billstatus,org.name,pxhe_supplier.name,pxhe_createdate,pxhe_paytype,billno,entryentity.pxhe_materiel.name,entryentity.pxhe_applyqty,entryentity.pxhe_price,entryentity.pxhe_amount,entryentity.pxhe_requiredate";
/**
* 数据访问器初始化事件
* @param event
*/
@Override
public void beforeInitDataVisitor(DataVisitorEvent event) {
//在初始化数据访问器中设置一个合理的查询大小。打印引擎默认500一批分批查询,如果分批后会把勾选的数据拆分,这样会导致数据没办法打印到一个表格。
event.setMaxQuerySize(1000);
}
/**
* 数据加载前方法
* @param evt
*/
@Override
public void beforeLoadData(BeforeLoadDataEvent evt) {
PrtDataSource dataSource = evt.getDataSource();
if(!(dataSource instanceof MainDataSource)){
return;//非主数据源,立即返回
}
//记录主数据源,用于自定义数据源查询时,获取需要的信息
mainDataSource = (MainDataSource) dataSource;
/**
* 取消系统加载主数据源信息,并设置其查询结果为一个DataRowSet
* 目的:引擎会根据主数据源结果集进行分页。一个DataRowSet就会对应至少一页,按列表打印时,不需要根据单据进行分页,只需要根据内容进行分页即可
*/
evt.setCancleLoadData(true);//取消系统加载数据,
List<DataRowSet> returnDataSet = new ArrayList<>(1);
returnDataSet.add(new DataRowSet());
evt.setDataRowSets(returnDataSet);
}
/**
* 加载自定义数据源方法
* @param evt
*/
@Override
public void loadCustomData(CustomDataLoadEvent evt) {
//自己查询数据,获取打平的数据,符合列表展示效果
DynamicObjectCollection collection = QueryServiceHelper.query(mainDataSource.getFormId(), queryFields, new QFilter[]{mainDataSource.getQFilter()});
//将主数据源的信息,组装到自定义数据源中
for(DynamicObject ds : collection){
DataRowSet dataRowSet = new DataRowSet();
String[] splits = queryFields.split("通过套打模板打印列表数据
1 场景介绍套打模板一般用于对单据数据打印,但部分场景中用户希望列表的数据可以按自定义模板进行套打。 目前列表打印的功能是根据列表...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



