前言
在打印次数功能中主要涉及了三张表,两张需要预置的表(pub_printlimit 和 pub_printpara)与一张最终入库的表(PUB_PRINTNUMBER)
字段属性自行查看数据字典
数据表
1.打印次数设置表 pub_printlimit
样例:
insert into pub_printlimit (BILLTYPENAME, BILLTYPENAME2, BILLTYPENAME3, BILLTYPENAME4, BILLTYPENAME5, BILLTYPENAME6, CONTROLTYPE, CREATIONTIME, CREATOR, DR, FUNCODE, MODIFIEDTIME, MODIFIER, PK_BILLTYPE, PK_GROUP, PK_ORG, PK_PRINTLIMIT, PRINTLIMIT, TEMPLATEID, TS)
values ('付款单', null, null, null, null, null, 0, '2023-10-26 16:43:55', '0001A1100000000001G3', 0, '20080EBR', '2023-10-30 10:35:05', '1001A110000000000K3B', '0001A1100000000017VX', '0001A1100000000003ZW', '0001A1100000000003ZW', '0001A11000000000DJO3', 0, null, '2023-10-30 10:35:05');
2.打印参数表 pub_printpara
样例:
insert into PUB_PRINTPARA (BILLIDNAME, BILLNONAME, DR, ORGNAME, PK_PARA, PK_PRINTLIMIT, PROPOSER, PROPOSETIME, TS)
values ('pk_paybill', 'billno', 0, 'pk_org', '0001A11000000000PPO3', '0001A11000000000DJO3', 'billmaker', 'creationtime', '2023-10-26 10:15:49');
PK_PRINTLIMIT 关联的 打印次数设置表的数据的主键
3.打印次数 pub_printnumber
后端代码集成
重构打印和预览按钮
继承nc.ui.pubapp.uif2app.actions.MetaDataBasedPrintAction
打印详细代码块
package nc.ui.arap.actions;
/** <a href="http://www.cpupk.com/decompiler">Eclipse Class Decompiler</a> plugin, Copyright (c) 2017 Chen Chao. **/
import java.awt.event.ActionEvent;
import nc.ui.arap.sideforms.TaxForm;
import nc.ui.pubapp.pub.power.PowerCheckUtils;
import nc.ui.pubapp.uif2app.actions.MetaDataBasedPrintAction;
import nc.ui.uif2.actions.ActionInitializer;
import nc.vo.arap.pay.AggPayBillVO;
public class BillPrintAction extends MetaDataBasedPrintAction {
private static final long serialVersionUID = 1L;
private TaxForm taxForm = null;
public void setTaxForm(TaxForm taxForm) {
this.taxForm = taxForm;
}
public TaxForm getTaxForm() {
return this.taxForm;
}
public BillPrintAction() {
ActionInitializer.initializeAction(this, "Print");
}
public void doAction(ActionEvent e) throws Exception {
AggPayBillVO aggVo = (AggPayBillVO) getModel().getSelectedData();
PowerCheckUtils.checkHasPermission(new AggPayBillVO[] { aggVo }, "D3",
"Print", "billno");
super.setPreview(false);
super.doAction(e);
}
}
billno 关联打印参数表 pub_printpara 中的BILLNONAME
预览按钮代码块
/** <a href="http://www.cpupk.com/decompiler">Eclipse Class Decompiler</a> plugin, Copyright (c) 2017 Chen Chao. **/
package nc.ui.arap.actions;
import nc.ui.arap.sideforms.TaxForm;
import nc.ui.pub.print.PrintEntry;
import nc.ui.pubapp.uif2app.actions.BaseMetaDataBasedPrintAction;
import nc.ui.pubapp.uif2app.actions.MetaDataBasedPrintAction;
import nc.ui.uif2.actions.ActionInitializer;
import nc.vo.ml.AbstractNCLangRes;
import nc.vo.ml.NCLangRes4VoTransl;
public class PrintPreviewAction extends MetaDataBasedPrintAction {
private static final long serialVersionUID = 1L;
private TaxForm taxForm = null;
public void setTaxForm(TaxForm taxForm) {
this.taxForm = taxForm;
}
public TaxForm getTaxForm() {
return this.taxForm;
}
public PrintPreviewAction() {
setBtnName(NCLangRes4VoTransl.getNCLangRes().getStrByID("common",
"UC001-0000112"));
ActionInitializer.initializeAction(this, "Preview");
}
public void doPrint(PrintEntry entry) {
super.setPreview(true);
entry.preview();
}
}
技术细节
问题1:没有找到设置的打印模板信息
原因: 主要是没有指定打印模板,
方法1: config配置文件中 nodekey属性赋值默认模板节点标识
方法2: 也可在打印次数设置表 pub_printlimit 表中TEMPLATEID 字段绑定打印模板