如何在苍穹报表列表中动态设置小数字段精度原创
金蝶云社区-聚宝彭
聚宝彭
9人赞赏了该文章 4,561次浏览 未经作者许可,禁止转载编辑于2022年04月15日 18:35:39
summary-icon摘要由AI智能服务提供

本文介绍了在报表中动态设置小数字段精度的需求、思路、实现过程及注意事项。通过选择报表插件事件,在插件中找到并修改小数字段精度属性,并展示了如何在Java代码中设置精度。特别提醒了当前平台版本对动态添加小数字段精度控制的限制,并提供了开发环境版本要求和下载样例元数据补丁包、Java代码的说明。

关键词:报表、小数精度


一、需求

在报表中动态设置小数字段的精度


二、思路与方案

报表相关插件中提供了多个事件可进行二开,我们只需选择合适的事件来进行业务逻辑开发即可。关于动态设置小数字段精度,我们不知道如何着手开发时,可先在设计器中添加小数字段,然后在插件中断点找到控制其精度的属性,最后反过来在插件中通过接口设置即可。


三、实现过程

1. 以采购申请单(kdec_template_purapply)为例,其设计器界面如下图所示。

采购申请单-设计器.png


2. 其报表设计器(kdec_report_demo2)界面如下图所示。为简化样例,该报表的查询数据源 & 各字段映射的数据源字段均通过配置完成,不另外开发取数插件去实现业务数据展示。

报表设计器.png


3. 动态设置小数字段的精度。

	@Override
	public void afterBindData(EventObject e) {
		this.setDecimalReportColumnStycle();
		super.afterBindData(e);
	}
	
	/**
	 * 设置小数字段精度
	 */
	private void setDecimalReportColumnStycle() {
		MainEntityType type = getModel().getDataEntityType();
		DecimalProp prop = (DecimalProp) type.getProperty("kdec_decimal");
		int precision = 15;
		int scale = 3;
		prop.setPrecision(precision);
		prop.setScale(scale);
	}


四、效果图

注意:为了复现样例效果,需先在采购申请单(kdec_template_purapply)中新增测试数据。

效果图-新.png


五、开发环境版本

V4.0.015(含)以上


六、注意事项

1. 在当前案例所依赖的平台版本中,只能动态设置设计器中预置的小数字段精度,动态添加的小数字段的精度暂控制不了(kd.bos.entity.report.ReportColumn.setScale(int)不生效)。各位小伙伴如遇业务有此类需求,请提单给平台处理。后期平台如支持该功能请以平台实际功能为准。

2. 文章附件中包含样例元数据补丁包、Java代码源码。各位小伙伴下载附件之后解压,然后导入元数据(在MC中以更新补丁的形式升级 or 在开发平台下直接导入元数据压缩包),并将Java文件放到本地开发工具(Eclipse/Idea)中,重启服务,运行代码即可查看效果。


七、参考资料

开发平台

学习成长中心

开发指南—报表

插件开发—报表界面插件

插件开发—报表取数插件

报表动态增减列

增加了报表树形报表展示功能支持

分组报表

报表添加合计行

报表设置列冻结



图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!