需求背景:在套打中,需要获取其他单据的数据在打印页面上。
实现方案:配置自定义数据源,自定义数据源名称编码,添加需要显示的字段。然后在插件中,动态获取数据。
具体实现:打印插件需要继承AbstractPrintServicePlugin基类,在customPrintDataEntities事件中,可以获取到数据源的标识,如果与自定义数据源标识一致,则去获取需要显示的数据,格式是List<DynamicObject>,其中字段名称需要与自定义数据源中添加的字段名称对应上。然后再调用setDataEntities设置数据包。
案例代码:
@Override
public void customPrintDataEntities(CustomPrintDataEntitiesArgs e) {
// TODO Auto-generated method stub
super.customPrintDataEntities(e);
List<DynamicObject> dList = new ArrayList<>();
String ds = e.getDataSourceName();
//sodemo1是自定义数据源的编码
if(ds.equals("sodemo1")) {
QFilter qFilter = new QFilter("billno", QCP.equals, "d01");
DynamicObject dObject = QueryServiceHelper.queryOne("kdec_bill", "billno, billstatus", new QFilter[] {qFilter});
dList.add(dObject);
}
e.setDataEntities(dList);
}
推荐阅读