EAS二开单据打印集成控制(控制打印次数)
二开单据需要在打印和打印预览的代码里额外增加一行代码
com.kingdee.eas.basedata.assistant.util.PrintIntegrationManager.initPrint(appHlp, this.editData.getBOSType(), idList, getTDFileName(), "com.kingdee.eas.scm.common.SCMResource", true);
其中参数com.kingdee.eas.scm.common.SCMResource是因为该代码摘自供应链系统,可以更改,但是尚未测试。
1.代码添加位置:打印最后一行代码前面
appHlp.print(getTDFileName(), data, javax.swing.SwingUtilities.getWindowAncestor(this));
举例如下
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));
}
2.DEP实现方式
前提条件:需要从代码中摘取queryPk,filedName
var queryPk = new com.kingdee.bos.metadata.MetaDataPK("com.kingdee.eas.custom.salediscount.app.DiscountRecordBillQuery");
var filedName = "/bim/custom/salediscount/DiscountRecordBill";
然后在编辑界面的Print方法中设置前置脚本,举例如下:
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();
}
3.DEP实现方式2
直接在编辑界面的Print方法中设置前置脚本,不需要摘取queryPk,filedName
前提条件:EditUI或者Abstract**EditUI里存在两个重要的函数getTDQueryPK、getTDFileName
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();
}
详情参照:https://www.cnblogs.com/liangxiaotian/articles/14780084.html
EAS二开单据打印集成控制(控制打印次数)
本文2024-09-16 22:51:38发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-50838.html