EAS二开单据打印集成控制(控制打印次数)原创
金蝶云社区-RyeC
RyeC
2人赞赏了该文章 478次浏览 未经作者许可,禁止转载编辑于2021年05月19日 16:27:01

二开单据需要在打印和打印预览的代码里额外增加一行代码


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

赞 2