如何实现根据查询条件设置报表列表标题原创
3人赞赏了该文章
1,160次浏览
编辑于2022年05月05日 10:55:53
一、需求背景
根据查询条件动态修改列表标题,需要获取查询条件,然后将查询条件赋值列表标题。
二、实现方案
实现报表插件,将报表插件注册到报表页面上,需要重新插件里面的方法query、getColumns方法,query方法里面获取查询条件,getColumns方法中重新设置列表标题。getColumns方法中可根据自身需求重新设置标题
三、实现过程
3.1 创建报表页面,添加查询条件,如下图3.1所示
图3.1
3.2 编写插件类,将插件注册到页面上如图3.2
public class ReportDemoPlugin extends AbstractReportListDataPlugin{ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 Object object=null; @Override public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { FilterInfo filterInfo=reportQueryParam.getFilter(); //获取常用过滤条件 List<FilterItemInfo> itemInfos=filterInfo.getFilterItems(); for (FilterItemInfo item:itemInfos) { if(item.getPropName().equals("kdec_date")){ object=item.getValue(); } } //查询的方法根据个人需求是否重新查询数据 DataSet dataSet= QueryServiceHelper.queryDataSet(this.getClass().getName(),"kdec_personleave","kdec_basedatafield,kdec_userfield,kdec_userfield.name,kdec_kdec_integerfield,kdec_integerfield,((kdec_kdec_integerfield-kdec_integerfield)*100) as kdec_integerfield2",null,null); return dataSet; } @Override public List<AbstractReportColumn> getColumns(List<AbstractReportColumn> columns) throws Throwable { // TODO Auto-generated method stub for(int i = 0; i < columns.size(); i ++) { ReportColumn rColumn = (ReportColumn) columns.get(i); String key = rColumn.getFieldKey(); if(key.equals("kdec_integerfield1")) { //匹配字段 if(object!=null){ rColumn.setCaption(new LocaleString(df.format(object))); } rColumn.setFreeze(true); columns.set(i, rColumn); } } return columns; } }
图3.2
四、效果图
4.1选择查询条件日期后,产生的效果图如下图4.1所示
图4.1
五、开发环境版本
不限,本样例采用的轻量级环境,版本是: 苍穹版本号 COSMICV4.0.018.0 星瀚版本号 CONSTELLATIONV4.0.018.0
六、注意事项
注意修改标题列的标识要对应
七、参考资料
参考附件中的代码补丁
元数据直接在开发平台导入
源代码直接在开发工具idea/eclipse中导入
修改标题.zip(7.07KB)
赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读