报表,Algo,DataSet,时间排序原创
金蝶云社区-吴锐雄
吴锐雄
5人赞赏了该文章 2,877次浏览 未经作者许可,禁止转载编辑于2022年05月25日 17:37:05


在使用QueryServiceHelper查询时,可以使用order by参数排序。


报表结构

image.png



按时间字段升序

报表取数插件,代码如下

public class DemoTextLineReportListDataPlugin extends AbstractReportListDataPlugin {

    @Override
    public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
        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为空,没有过滤条件,查询全部数据
                null,
                "kdec_timerangefield_st asc");
        return dataSet;
    }
}


效果

image.png


按日期字段降序

报表取数插件,代码如下

public class DemoTextLineReportListDataPlugin extends AbstractReportListDataPlugin {


    @Override
    public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {

        //TODO: 时间字段和时间范围(时间范围包括时间开始字段、时间结束字段)在mysql里面是整型int(11),
        // 日期字段和日期范围(日期范围包括日期开始字段、日期结束字段)在mysql里面是日期类型datetime,
        // 所以在构造QFilter时,时间直接使用>,<,=这些运算符对比就行,而日期要用 时间戳Timestamp去对比

        // 获取时间范围包含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};


        // 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为空,没有过滤条件,查询全部数据
                null,
                "kdec_daterangefield_st desc");

        return dataSet;
    }
}

效果:

image.png


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

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0