JasperReportUtil 工具类

JasperReportUtil 是一个用于报表处理的工具类,包含获取报表SQL、保存JRXML文件到本地、编译JRXML为JASPER文件等功能。它通过HTTP请求获取远程报表文件,并能根据报表名称解析SQL。此外,类中还提供了处理报表参数、CLOB转换为String等方法。
摘要由CSDN通过智能技术生成
package org.platform.service.report.oauth;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;


import javax.sql.rowset.serial.SerialClob;


import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.json.JSONObject;


import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.platform.service.report.config.ReportConfig;
import org.platform.service.report.dto.ReportQueryParamsDto;
import org.platform.utils.file.FileUtil;
import org.platform.utils.httpclient.HttpClientHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import com.alibaba.fastjson.JSON;
/**
 * @ProjectName platform-service-report
 * @PackageName org.platform.service.report.oauth
 * @Description 报表公共方法
 * @ClassName JasperReportUtil
 * @Author L_X
 * @Date 2017年8月11日 下午2:41:24
 */
public class JasperReportUtil {

private static final Logger logger = LoggerFactory.getLogger(JasperReportUtil.class);

/**
* @Description 获取报表SQL
* @MethodName findToSql
* @Author L_X
* @Date 2017年9月8日 上午11:11:13
* @param reportName
* @param reportMD5
* @param subReportMD5
* @return
* @throws Exception String
*/
public static String findReportToSql(String reportName, String reportMD5, String subReportMD5) throws Exception{
String sql = null;
if (ReportConfig.IS_ON_OFF.equals(DefaultConstants.IS_ON)) {
File file = new File(ReportConfig.NATIVE_FILE_PATH + reportName + ".jrxml");
String md5Local = FileUtil.getFileMD5(file);
File subfile = new File(ReportConfig.NATIVE_FILE_PATH + reportName + "_subReport.jrxml");
String subMd5Local = FileUtil.getFileMD5(subfile);
if (file.exists() && md5Local.equals(reportMD5)) {
sql = getLocationSql(reportName);
} else {
sql = saveSqlToNative(reportName);
}
StringBuffer sb = new StringBuffer("null");
if (StringUtils.isNotBlank(subReportMD5) && !subReportMD5.contentEquals(sb)) {
if ( !subfile.exists() || !subMd5Local.equals(subReportMD5)) {
saveReportFileToLocal(reportName+ "_subReport",".jrxml");
}
}
}else {
sql = getSql(reportName);
}
return sql;
}

/**
* @Description 根据报表名称获取JRXML文件,解析得到SQL
* @MethodName getSql
* @Author L_X
* @Date 2017年8月11日 下午2:39:56
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值