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

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格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



