Kingdee Cloud Cloud does not print certain document body data when generating a print template

Register the plug
- in in the print template form designer interface. The plug -in inherits from AbstractPrintServicePlugin

public class AnalysisPrintPlugin extends AbstractPrintServicePlugin {
    
    
    //用于保存整张单据
    private static DynamicObject fullBill = null;

    @Override
    public void customPrintDataEntities(CustomPrintDataEntitiesArgs e) {
    
    
        List<DynamicObject> sysDataEntities = e.getDataEntities();
        //获取数据源标识
        String dataSource = e.getDataSourceName();

        if ("要打印的单据的标识".equalsIgnoreCase(dataSource)) {
    
    
            //只会获取一个页面去打印
            DynamicObject head = sysDataEntities.get(0);
            //根据pk获取整张单据的数据
            DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle(head.getPkValue(), "要打印的单据的标识");
            //将完整的单据数据转移
            fullBill = dataEntity;
        } else if ("entryentity".equalsIgnoreCase(dataSource)) {
    
    
            DynamicObjectCollection oriEntry = fullBill.getDynamicObjectCollection("entryentity");
            List<Integer> prison = new ArrayList<>();
            for (int i = 0; i < oriEntry.size(); i++) {
    
    
                DynamicObject object = oriEntry.get(i);
                //是否打印
                boolean print = object.getBoolean("print");
                if (!print) {
    
    
                    prison.add(i);
                }
            }
            if (prison.size() != 0) {
    
    
                //从当前模板移除该条数据
                for (int i : prison) {
    
    
                    sysDataEntities.remove(i);
                }
            }
            //重新设置打印数据
            e.setDataEntities(sysDataEntities);
        }
    }
    @Override
    public void afterOutputElement(OutputElementArgs e) {
    
    
        if (e.getKey() != null && ("cma".equals(e.getKey())||"cnas".equals(e.getKey()))) {
    
    
            kd.bos.entity.plugin.IPrintScriptable apw = e.getOutput();
            int pageNumber = apw.getPageNumber();
            //从第二页开始不显示图片
            if (pageNumber > 1) {
    
    
                e.getOutput().setHide(true);
            }
        }
    }
}

Guess you like

Origin blog.csdn.net/Evain_Wang/article/details/112848300