电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

报表日期漏斗查询不准确解决方案

来源:金蝶云社区作者:金蝶2024-09-234

报表日期漏斗查询不准确解决方案

1 问题描述

在报表中,通过漏斗查询是很常见的搜索方式。而日期漏斗查询有时会出现不那么精确的现象。

2 原因分析

 原因是日期漏斗范围过滤的结束时间判断条件默认都是"<"当前所选择的时间。所以”上月“条件和”从...到...“选择6月1日至6月30日,实际上是相差一天的,如下图。这俩个条件本身都没有问题,但如果我们拿他们做对比,可能就觉得查询没那么舒适了。



3 解决方法

可以对"从..到..."这个条件进行二开

准备数据源,以及报表查询取数插件这里就不详细说了。

步骤一:先实现报表显示漏斗过滤功能,需要继承报表表单插件并重写setSortAndFilter方法

public void setSortAndFilter(List<SortAndFilterEvent> allColumns) {
    super.setSortAndFilter(allColumns);
    for(SortAndFilterEvent event: allColumns){
        event.setFilter(true);
    }

}

步骤二:报表取数插件重写query方法,拿到前端漏斗过滤的条件,执行过滤查询

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

    DataSet resultDataSet = null;
    String pattern = "yyyy-MM-dd HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    QFilter[] qFilters =null;
    Calendar calendar = Calendar.getInstance();


    //获取漏斗过滤条件
    List<QFilter> headFilters = reportQueryParam.getFilter().getHeadFilters();
    //获取漏斗过滤条件的选择项
    List<FilterItemInfo> tableHeadFilterItems = reportQueryParam.getFilter().getTableHeadFilterItems();
    String search=null;
    for (int x=0;x<headFilters.size();x++){
    //判断是否是日期字段过滤
        if(headFilters.get(x).getProperty().equals("lago_datefield")){
        //拿到搜索条件
            search= (String) headFilters.get(x).toString();
            //拿到过滤条件的选择项
            String compareType = tableHeadFilterItems.get(x).getCompareType();
            String[] splitstart = search.split(">=");
            String[] splitend = search.split("<");
            String startDate = splitstart[1].substring(2, 21);
            String end

报表日期漏斗查询不准确解决方案

1 问题描述在报表中,通过漏斗查询是很常见的搜索方式。而日期漏斗查询有时会出现不那么精确的现象。2 原因分析 原因是日期漏斗范围过滤...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信