如何在报表上展示多选基础资料数据?原创
3人赞赏了该文章
893次浏览
编辑于2023年07月18日 17:51:42
关键词:报表,多选基础资料,Algo,groupConcat
一、需求
在报表上展示多选基础资料,并且以特殊字符将每个多选基础资料分隔开。
二、思路与方案
在报表取数插件中,需要查询2次,1次是单据上的多选基础资料的id,另1次是查询多选基础资料数据。将2个DataSet用join进行连接,然后使用groupBy和groupConcat,对数据进行分组合并。
三、实现过程
1.准备数据源。
开发名为“建材1”的单据。
“地区”树形基础资料
2.开发报表
拖入几个字段,注册报表取数插件。
3.开发插件
import kd.bos.algo.DataSet; import kd.bos.algo.GroupbyDataSet; import kd.bos.entity.report.AbstractReportListDataPlugin; import kd.bos.entity.report.ReportQueryParam; import kd.bos.servicehelper.QueryServiceHelper; public class BM1ReportListDataPlugin extends AbstractReportListDataPlugin { @Override public DataSet query(ReportQueryParam queryParam, Object o) throws Throwable { // 查询建材 DataSet bm1DataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "kdec_build_materials1", "number as kdec_billno, name as kdec_name, kdec_mul_pro.fbasedataid as kdec_mulproid, kdec_count, kdec_count2", null, null); // 查询地区 DataSet regionDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "kdec_region_base", "id, name as kdec_mulpro", null, null); // join连接2个数据 DataSet resultDataSet = bm1DataSet.join(regionDataSet).on("kdec_mulproid", "id") .select(new String[]{"kdec_billno", "kdec_name", "kdec_count", "kdec_count2"}, new String[]{"kdec_mulpro"}).finish(); // 将建材名称分组,其余字段也加上 GroupbyDataSet groupbyDataSet = resultDataSet.groupBy(new String[]{"kdec_billno","kdec_name","kdec_count","kdec_count2"}); // 将产地名称做分组合并,然后以中文顿号隔开 resultDataSet = groupbyDataSet.groupConcat("kdec_mulpro",null,"、").finish(); return resultDataSet; } }
四、效果图
五、开发环境版本
不限
六、参考资料
groupconcat.zip(11.72KB)
推荐阅读