文本介绍了如何在业务平台上实现仅打印勾选的分录行证照图片的需求。由于原平台只能整单打印,文本提出通过修改单据列表插件和打印插件的方法,实现在打印插件中过滤出并仅打印用户勾选的分录行。具体步骤包括在单据列表插件中设置勾选分录行参数,并在打印插件中利用这些参数筛选数据。此外,还提到了开发环境的配置和注意事项。
业务背景
业务需求:实现首营品种申请列表勾选过期证照分录行进行打印证照图片。平台单据列表勾选分录行在打印时实际是整单选择,无法满足仅打印勾选的分录行。
单据列表勾选单据编号 SYSP202302020001 分录行序号2 ,在打印插件中调试查询的数据是整单数据。
思路方案
核心思路:在打印插件 AbstractPrintPlugin 插件 afterLoadData() 方法过滤分录行数据。
要实现过滤勾选的分录行数据就需要在打印插件中获取到单据列表中勾选的分录行有哪些。查看打印插件基类 AbstractPrintPlugin 源码 getExtParam() 方法可用。调试跟踪【打印】操作,发现可在单据列表插件 beforeDoOperation() 方法 printpreview 操作代码 FormOperate.getParameter().put("extParam",勾选分录行) ,将列表勾选的分录行传入到打印插件中,对应 AbstractPrintPlugin.extParam。
实现步骤
1、编写单据列表插件,重写 beforeDoOperation() 。点击【打印】操作时列表勾选分录行参数赋值 FormOperate.getParameter() 对应的键 extParam。
列表勾选的分录行按照 单据ID+"#"+分录ID 拼接成key 用于打印插件筛选使用。
选择行获取单据ID:ListSelectedRow.getPrimaryKeyValue()
选择行获取分录行ID:ListSelectedRow.getEntryPrimaryKeyValue()
2、编写打印插件,重写 AbstractPrintPlugin.afterLoadData() 方法,主要目的筛选勾选分录行数据。AbstractPrintPlugin.getExtParam() 获取传入的列表勾选分录行参数。
筛选分录行采用的策略使用 单据ID+"#"+分录ID 拼接成key,进行匹配筛选。
筛选后的数据,只保留列表勾选的分录行数据。
实现效果
打印预览效果是勾选的两条分录数据。单据编号 SYSP202302020001 只打印勾选的分录行(到期日期 2023-02-11)。
开发环境版本
苍穹版本号 v5.0.011
注意事项
1、单据列表默认启用【分录行支持被选择】
新建页面,类型是【参数】,模版是【列表选项模版】
字段【分录行支持被选择】缺省值设置为打开。保存,发布。
在页面开发设计器,【列表】页签,修改【列表选项】为新创建的参数页面。
2、打印插件基类 AbstractPrintPlugin 是新打印的插件(对应新打印模板),AbstractPrintServicePlugin 是旧打印的插件。
推荐阅读