起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3912|回复: 5

[结贴] 通过report组件展现报表性能很慢

[复制链接]

649

主题

2068

帖子

3741

积分

论坛元老

Rank: 8Rank: 8

积分
3741
QQ
发表于 2017-4-20 01:09:13 | 显示全部楼层 |阅读模式
通过执行 一个存储过程 返回table给report
后台存储过程 执行 只需要5秒钟
前台展现出来需要 几分钟

-------------------后台JAVA代码
        public static Table sp_jzsalaryConfireDataRptProc(String fFactoryCode,String fWorkShopName,String fTeamName,String fEmpName,String fOrderNo,String fBeginDate,String fEndDate,String fProNameGroup,String fGroupName,String fProName,String fProPriceType){
                java.sql.Connection conn = null;
                PersonMember pm = ContextHelper.getPersonMember();
                String fPersonID = pm.getPerson().getID();
                String fPersonCode = pm.getPerson().getCode();
                String fPersonName = pm.getPerson().getName();
                // Map<String, Object> ResultMap = new HashMap <String, Object>();
                java.sql.CallableStatement proc = null;
                try {
                        conn = com.justep.model.ModelUtils.getConnection(DATA_MODEL);
                        proc = conn.prepareCall("{call sp_jzsalaryConfireDataRptProc(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
                        proc.setString(1, fFactoryCode);
                        proc.setString(2, fWorkShopName);
                        proc.setString(3, fTeamName);
                        proc.setString(4, fEmpName);
                        proc.setString(5, fOrderNo);
                        proc.setString(6, fBeginDate);
                        proc.setString(7, fEndDate);
                        proc.setString(8, fProNameGroup);
                        proc.setString(9, fGroupName);
                        proc.setString(10, fProName);
                        proc.setString(11, fPersonID);
                        proc.setString(12, fPersonCode);
                        proc.setString(13, fPersonName);
                        proc.setString(14, fProPriceType);
                       
                        proc.registerOutParameter(15, java.sql.Types.VARCHAR); // 执行存储过程
                        proc.registerOutParameter(16, java.sql.Types.VARCHAR); // 执行存储过程
                        ResultSet rt = proc.executeQuery();
                        Table table = com.justep.system.util.BizUtils.resultSet2Table(rt, DATA_MODEL);
                        return table;
                } catch (NamingException e) {
                        e.printStackTrace();
                        return null;
                } catch (SQLException e) {
                        e.printStackTrace();
                        return null;
                } finally {
                        try {
                                proc.close();
                        } catch (SQLException e) {
                                // TODO 自动生成的 catch 块
                                e.printStackTrace();
                        }
                        try {
                                conn.close();
                        } catch (SQLException e) {
                                // TODO 自动生成的 catch 块
                                e.printStackTrace();
                        }
                }
               
        }

---------------前台JS代码

                        this.comp('RptMasterData').setStringVar("fFactoryCode", fFactoryCode);
                        this.comp('RptMasterData').setStringVar("fWorkShopName", fWorkShopName);
                        this.comp('RptMasterData').setStringVar("fTeamName", fTeamName);
                        this.comp('RptMasterData').setStringVar("fEmpName", fEmpCodeName);
                        this.comp('RptMasterData').setStringVar("fOrderNo", fOrderNO);
                        this.comp('RptMasterData').setStringVar("fBeginDate", fBeginDate);
                        this.comp('RptMasterData').setStringVar("fEndDate", fEndDate);
                        this.comp('RptMasterData').setStringVar("fProNameGroup", fProNameGroup);
                        this.comp('RptMasterData').setStringVar("fGroupName", fGroupName);
                        this.comp('RptMasterData').setStringVar("fProName", fPartName);
                        this.comp('RptMasterData').setStringVar("fProPriceType", fProPriceTypeName);
                        this.comp('report').refresh();

IMOM智能制造管理大师
官网:http://www.i-mom.cn
Tel:15905043811

649

主题

2068

帖子

3741

积分

论坛元老

Rank: 8Rank: 8

积分
3741
QQ
 楼主| 发表于 2017-4-20 09:09:04 | 显示全部楼层
后台执行存储过程特别快
慢在这句 返回table
     Table table = com.justep.system.util.BizUtils.resultSet2Table(rt, DATA_MODEL);
                        return table;
IMOM智能制造管理大师
官网:http://www.i-mom.cn
Tel:15905043811
回复 支持 反对

使用道具 举报

649

主题

2068

帖子

3741

积分

论坛元老

Rank: 8Rank: 8

积分
3741
QQ
 楼主| 发表于 2017-4-20 09:41:00 | 显示全部楼层
查询这个报表导致 tomcat内存 直线上升 了 卡死
IMOM智能制造管理大师
官网:http://www.i-mom.cn
Tel:15905043811
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36109
发表于 2017-4-20 10:57:50 | 显示全部楼层
数据多,或者excel中有计算会导致报表慢,这个目前没有好的优化方案
如果数据多可以用分页实现
可以自己写一个工具栏来模拟一下分页,类似报表参数过滤的例子
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

649

主题

2068

帖子

3741

积分

论坛元老

Rank: 8Rank: 8

积分
3741
QQ
 楼主| 发表于 2017-4-20 15:14:05 | 显示全部楼层
点预览打印 没发分页吧
IMOM智能制造管理大师
官网:http://www.i-mom.cn
Tel:15905043811
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36109
发表于 2017-4-20 16:12:35 | 显示全部楼层
可以返回总的记录数,以及一页显示的条数计算有多少页,然后打印的时候调用多次看看

目前只能这样,没有其他的优化方案
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-2-24 20:22 , Processed in 0.085204 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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