EAS二开单据打印集成控制(控制打印次数)
系统标准单据打印集成控制(以下打印次数控制均称之为打印集成控制)
套打管理--单据所在文件夹--打印控制
二开单据若想实现打印集成控制还需要额外在二开的打印和打印预览代码中
增加一行代码
PrintIntegrationManager.initPrint(appHlp, this.editData.getBOSType(), idList, getTDFileName(), "com.kingdee.eas.scm.common.SCMResource", true);
举例说明
public void actionPrint_actionPerformed(ActionEvent e) throws Exception { ArrayList idList = new ArrayList(); if (editData != null && !StringUtils.isEmpty(editData.getString("id"))) { idList.add(editData.getString("id")); } if (idList == null || idList.size() == 0 || getTDQueryPK() == null || getTDFileName() == null) return; com.kingdee.bos.ctrl.kdf.data.impl.BOSQueryDelegate data = new com.kingdee.eas.framework.util.CommonDataProvider(idList,getTDQueryPK()); com.kingdee.bos.ctrl.report.forapp.kdnote.client.KDNoteHelper appHlp = new com.kingdee.bos.ctrl.report.forapp.kdnote.client.KDNoteHelper(); PrintIntegrationManager.initPrint(appHlp, this.editData.getBOSType(), idList, getTDFileName(), "com.kingdee.eas.scm.common.SCMResource", true); appHlp.print(getTDFileName(), data, javax.swing.SwingUtilities.getWindowAncestor(this)); }
补充①:
若要在DEP中实现打印次数控制(针对标准单据或者第三方二开等无法接触源码的情况)
可以在编辑界面的print和printPreview方法中设置前置脚本,举例如下:
其中queryPk(扩展平台的查询Query)、 filedName(套打管理模板路径)可以从抽象类中获取
var idList = new java.util.ArrayList(); var editData = pluginCtx.getDataObject(); if (editData != null && !com.kingdee.bos.ctrl.swing.StringUtils.isEmpty(editData.getString("id"))) { idList.add(editData.getString("id")); } var queryPk = new com.kingdee.bos.metadata.MetaDataPK("com.kingdee.eas.custom.salediscount.app.DiscountRecordBillQuery"); var filedName = "/bim/custom/salediscount/DiscountRecordBill"; if (org.apache.commons.lang.StringUtils.isNotEmpty(editData.getString("id"))){ var data = new com.kingdee.eas.framework.util.CommonDataProvider(idList,queryPk); var appHlp = new com.kingdee.bos.ctrl.report.forapp.kdnote.client.KDNoteHelper(); com.kingdee.eas.basedata.assistant.util.PrintIntegrationManager.initPrint(appHlp, editData.getBOSType(), idList, filedName, "com.kingdee.eas.scm.common.SCMResource", true); appHlp.print(filedName, data, javax.swing.SwingUtilities.getWindowAncestor(pluginCtx.getUI())); com.kingdee.eas.util.SysUtil.abort(); }
补充②:
提供一种不需要摘录的情况,运用了Java的反射机制(前提是在EditUI或者Abstract**EditUI里存在两个重要的函数)
var idList = new java.util.ArrayList(); var editData = pluginCtx.getDataObject(); if (editData != null && !com.kingdee.bos.ctrl.swing.StringUtils.isEmpty(editData.getString("id"))) { idList.add(editData.getString("id")); } var className = pluginCtx.getUI().getClass().getName(); var cls = java.lang.Class.forName(className); var supercls = cls.getSuperclass(); var clsInstance = cls.newInstance(); var TDFileName = null; var TDQueryPK = null; var declaredMethods = cls.getDeclaredMethods(); var md = null; for(var i = 0, size = declaredMethods.length; i < size; i++){ md = declaredMethods[i]; if(TDFileName != null && TDQueryPK != null){ break; } if(TDQueryPK == null && md.getName().equals("getTDQueryPK")){ md.setAccessible(true); TDQueryPK = md.invoke(clsInstance); } if(TDFileName == null && md.getName().equals("getTDFileName")){ md.setAccessible(true); TDFileName = md.invoke(clsInstance); } } if(TDFileName == null || TDQueryPK == null){ declaredMethods = supercls.getDeclaredMethods(); for(var i = 0, size = declaredMethods.length; i < size; i++){ md = declaredMethods[i]; if(TDFileName != null && TDQueryPK != null){ break; } if(TDQueryPK == null && md.getName().equals("getTDQueryPK")){ md.setAccessible(true); TDQueryPK = md.invoke(clsInstance); } if(TDFileName == null && md.getName().equals("getTDFileName")){ md.setAccessible(true); TDFileName = md.invoke(clsInstance); } } } if (org.apache.commons.lang.StringUtils.isNotEmpty(editData.getString("id")) && TDFileName != null && TDQueryPK != null){ var data = new com.kingdee.eas.framework.util.CommonDataProvider(idList,TDQueryPK); var appHlp = new com.kingdee.bos.ctrl.report.forapp.kdnote.client.KDNoteHelper(); com.kingdee.eas.basedata.assistant.util.PrintIntegrationManager.initPrint(appHlp, editData.getBOSType(), idList, TDFileName, "com.kingdee.eas.scm.common.SCMResource", true); appHlp.print(TDFileName, data, javax.swing.SwingUtilities.getWindowAncestor(pluginCtx.getUI())); com.kingdee.eas.util.SysUtil.abort(); }