打印中如何计算多选基础资料字段中数据的个数

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

打印中如何计算多选基础资料字段中数据的个数

1 业务背景

使用打印公式-count(多选基础资料字段),计算结果是1,因为多选基础资料会以每个基础资料内容按分号拼接,然后以文本的形式输出,例如:,所以无法使用count算出准确数据个数


2 解决方案

二开打印插件,在AfterLoadData 事件中获取数据,自己进行计算,具体步骤参考下面:


步骤一:需要打印出差人数的地方,配置上这个出差人字段,以便在AfterLoadData 事件中能把数据加载出来

步骤二:获取出差人字段的标识,可以在afterLoadData事件中断点查看evt -> dataRowSets ->row

步骤三:具体的代码实现参考

package printplugin;

import kd.bos.print.core.data.DataRowSet;
import kd.bos.print.core.data.datasource.PrtDataSource;
import kd.bos.print.core.data.field.Field;
import kd.bos.print.core.data.field.TextField;
import kd.bos.print.core.plugin.AbstractPrintPlugin;
import kd.bos.print.core.plugin.event.AfterLoadDataEvent;
import kd.sdk.plugin.Plugin;

import java.util.List;

/**
 * 新的打印插件
 */
public class printCountpeople extends AbstractPrintPlugin implements Plugin {

    //出差人名称标识
    public static final String PEOPLEKEY="pio1_mulbasedatafield1.name";

    @Override
    public void afterLoadData(AfterLoadDataEvent evt) {
        PrtDataSource dataSource = evt.getDataSource();
        //获取打印数据
        List<DataRowSet> dataRowSets = evt.getDataRowSets();


        for (DataRowSet dataRowSet : dataRowSets) {
            //获取出差人的数据
            TextField field = (TextField)dataRowSet.getField(PEOPLEKEY);
            String peopleStr = field.toString();
            String[] split = peopleStr.split(";");

            //设置出差人数
            field.setValue(String.valueOf(split.length));

        }

    }
}

步骤四: 插件注册上打印模板



3 适用版本

金蝶云苍穹 V6.0.1及以上

打印中如何计算多选基础资料字段中数据的个数

1 业务背景使用打印公式-count(多选基础资料字段),计算结果是1,因为多选基础资料会以每个基础资料内容按分号拼接,然后以文本的形式输出...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息