在打印模板表单设计器界面注册插件
插件继承自AbstractPrintServicePlugin
public class AnalysisPrintPlugin extends AbstractPrintServicePlugin {
//用于保存整张单据
private static DynamicObject fullBill = null;
@Override
public void customPrintDataEntities(CustomPrintDataEntitiesArgs e) {
List<DynamicObject> sysDataEntities = e.getDataEntities();
//获取数据源标识
String dataSource = e.getDataSourceName();
if ("要打印的单据的标识".equalsIgnoreCase(dataSource)) {
//只会获取一个页面去打印
DynamicObject head = sysDataEntities.get(0);
//根据pk获取整张单据的数据
DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle(head.getPkValue(), "要打印的单据的标识");
//将完整的单据数据转移
fullBill = dataEntity;
} else if ("entryentity".equalsIgnoreCase(dataSource)) {
DynamicObjectCollection oriEntry = fullBill.getDynamicObjectCollection("entryentity");
List<Integer> prison = new ArrayList<>();
for (int i = 0; i < oriEntry.size(); i++) {
DynamicObject object = oriEntry.get(i);
//是否打印
boolean print = object.getBoolean("print");
if (!print) {
prison.add(i);
}
}
if (prison.size() != 0) {
//从当前模板移除该条数据
for (int i : prison) {
sysDataEntities.remove(i);
}
}
//重新设置打印数据
e.setDataEntities(sysDataEntities);
}
}
@Override
public void afterOutputElement(OutputElementArgs e) {
if (e.getKey() != null && ("cma".equals(e.getKey())||"cnas".equals(e.getKey()))) {
kd.bos.entity.plugin.IPrintScriptable apw = e.getOutput();
int pageNumber = apw.getPageNumber();
//从第二页开始不显示图片
if (pageNumber > 1) {
e.getOutput().setHide(true);
}
}
}
}