报表-时间范围和日期范围过滤原创
7人赞赏了该文章
3,783次浏览
编辑于2022年04月12日 10:50:32
看完文章,请点赞收藏,谢谢您嘞
时间字段和时间范围(时间范围包括2个字段:时间开始字段、时间结束字段)在mysql里面是整型int(11),
日期字段和日期范围(日期范围包括2个字段:日期开始字段、日期结束字段)在mysql里面是日期类型datetime,
所以在构造QFilter时,时间直接使用>、<、=这些运算符对比就行,而日期要用 时间戳Timestamp去对比
本文使用报表来展示过滤之后的数据。
关于如何创建报表,如何注册报表插件,请参考文章:
https://club.kdcloud.com/article/172459984633274368
数据源是一个单据:“纺织物”
使用报表来展示数据,过滤之前,报表有5行数据
在报表取数插件中,添加QFilter,获取时间范围内 包含03:10:15的数据
package kd.ecos.demo; import kd.bos.algo.DataSet; import kd.bos.entity.report.AbstractReportListDataPlugin; import kd.bos.entity.report.ReportQueryParam; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.QueryServiceHelper; import java.sql.Timestamp; public class DemoTextLineReportListDataPlugin extends AbstractReportListDataPlugin { @Override public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { // 获取时间范围包含03:10:15的数据 // 03:10:15=3*60*60+10*60+15=11415 QFilter timeFilterSt = new QFilter("kdec_timerangefield_st", QCP.less_equals, 11415); QFilter timeFilterEn = new QFilter("kdec_timerangefield_en", QCP.large_equals, 11415); QFilter[] timeFilters = new QFilter[]{timeFilterSt, timeFilterEn}; DataSet dataSet = QueryServiceHelper.queryDataSet(getClass().getName(), "kdec_textline_bill", "id, billno as kdec_billno, kdec_textline_name, " + "kdec_timerangefield_st, kdec_timerangefield_en," + "kdec_daterangefield_st, kdec_daterangefield_en", // QFilters为空,没有过滤条件,查询全部数据 timeFilters, null); return dataSet; } }
结果如下:
在报表取数插件中,添加QFilter,获取日期范围内 包含2021年10月20日的数据
2021年10月20日转换为时间戳是1635523200000
时间戳转换可以自行百度搜索文章,或者以下参考文章
https://www.cnblogs.com/EasonJim/p/7896082.html
也可以直接在线上网站做转换:
代码如下:
package kd.ecos.demo; import kd.bos.algo.DataSet; import kd.bos.entity.report.AbstractReportListDataPlugin; import kd.bos.entity.report.ReportQueryParam; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.QueryServiceHelper; import java.sql.Timestamp; public class DemoTextLineReportListDataPlugin extends AbstractReportListDataPlugin { @Override public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { // 2021年10月20日(时间戳:1635523200000) // 获取日期范围内 包含 2021年10月20日的数据 Timestamp timestamp = new Timestamp(1635091200000L); QFilter dataFilterSt = new QFilter("kdec_daterangefield_st", QCP.less_equals, timestamp); QFilter dataFilterEn = new QFilter("kdec_daterangefield_en", QCP.large_equals, timestamp); QFilter[] dataFilters = new QFilter[]{dataFilterSt, dataFilterEn}; DataSet dataSet = QueryServiceHelper.queryDataSet(getClass().getName(), "kdec_textline_bill", "id, billno as kdec_billno, kdec_textline_name, " + "kdec_timerangefield_st, kdec_timerangefield_en," + "kdec_daterangefield_st, kdec_daterangefield_en", // QFilters为空,没有过滤条件,查询全部数据 dataFilters, null); return dataSet; } }
结果如下:
赞 7
7人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读