关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 33605|回复: 10

[Online报表] 【BUG】online报表使用多数据源搜索问题

[复制链接]
发表于 2018-4-16 13:39:42 | 显示全部楼层 |阅读模式
1.jeecg项目使用的是mysql数据库,多数据源配置中配置了oracle数据源
2.online报表中配置sql,来查询oracle数据库中的数据。code字段设置为可查询
3.查询后得到报表,首页默认10条数据。但使用code进行筛选的时候出现bug。当报表首页存在目标数据的时候,条件查询生效。如果首页没有目标数据,查询不到结果。
发表于 2018-4-16 13:58:35 | 显示全部楼层
截图看下具体问题
 楼主| 发表于 2018-4-16 14:29:44 | 显示全部楼层
admin 发表于 2018-4-16 13:58
截图看下具体问题

查询结果,首页:
1.PNG
查询首页中有的基金代码,正常:
2.PNG
查询首页中没有的基金代码,无法搜索到结果。数据库中有这条数据。
3.PNG
 楼主| 发表于 2018-4-16 14:30:54 | 显示全部楼层
admin 发表于 2018-4-16 13:58
截图看下具体问题

可能是翻页查询的时候有问题
发表于 2018-4-16 15:27:52 | 显示全部楼层
首页指的是第一页?
 楼主| 发表于 2018-4-16 16:54:04 | 显示全部楼层
admin 发表于 2018-4-16 15:27
首页指的是第一页?

对。报表默认查出的第一页。
发表于 2018-4-16 17:43:08 | 显示全部楼层
你的意思跑到第二页,点击查询有问题?
 楼主| 发表于 2018-4-16 17:59:37 | 显示全部楼层
本帖最后由 akacd 于 2018-4-16 18:01 编辑
admin 发表于 2018-4-16 17:43
你的意思跑到第二页,点击查询有问题?

搜索第二页的内容有问题,搜索不到。
搜索当前页已有内容可以得到结果。搜索未展示出来的内容,无法搜到。
 楼主| 发表于 2018-4-23 13:42:10 | 显示全部楼层
本帖最后由 akacd 于 2018-4-23 13:45 编辑
admin 发表于 2018-4-16 17:43
你的意思跑到第二页,点击查询有问题?

  多数据源动态报表使用到了SqlUtil.java中的jeecgCreatePageSql方法,其中oracle数据库先进行了分页,再加的查询条件。导致无法查询第二页内容。

        if(DATABSE_TYPE_ORACLE.equalsIgnoreCase(databaseType)) {
                sql = MessageFormat.format(ORACLE_SQL, sqlParam); //sqlParam是分页参数
                sql=getFullSql(sql,params);//前端用户输入的参数


查了一下,         sql=getFullSql(sql,params);//前端用户输入的参数  是我手动加进去的。不加这一行无法进行输入条件的查询
 楼主| 发表于 2018-4-23 14:42:56 | 显示全部楼层
admin 发表于 2018-4-16 17:43
你的意思跑到第二页,点击查询有问题?

在CgReportController.java 中增加即可解决该问题:
if(StringUtils.isNotBlank(dbKey)){
                querySql=SqlUtil.getFullSql(querySql,queryparams);//duchao 20180423 add to support query
            result= DynamicDBUtil.findList(dbKey,SqlUtil.jeecgCreatePageSql(dbKey,querySql,queryparams,p,r));
            Map map=(Map)DynamicDBUtil.findOne(dbKey,SqlUtil.getCountSql(querySql,null));
            if(map.get("COUNT(*)") instanceof BigDecimal){
                    BigDecimal count = (BigDecimal)map.get("COUNT(*)");
                    size = count.longValue();
            }else{
                    size=(Long)map.get("COUNT(*)");
            }
        }else{
            result= cgReportService.queryByCgReportSql(querySql, queryparams, p, r);
            size = cgReportService.countQueryByCgReportSql(querySql, queryparams);
        }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表