代码调整

This commit is contained in:
2023-04-06 16:03:18 +08:00
parent 6d2a6635d3
commit 3bc015d338
2 changed files with 110 additions and 40 deletions

View File

@@ -2,6 +2,7 @@ package com.njcn.harmonic.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.*; import cn.hutool.json.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -182,11 +183,11 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
@Override @Override
public void viewCustomReportTemplateById(String id,HttpServletResponse response){ public void viewCustomReportTemplateById(String id, HttpServletResponse response) {
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(id); ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(id);
try{ try {
fileStorageUtil.downloadStream(response,excelRptTemp.getContent()); fileStorageUtil.downloadStream(response, excelRptTemp.getContent());
}catch (Exception exception){ } catch (Exception exception) {
throw new BusinessException(HarmonicResponseEnum.REPORT_TEMPLATE_DOWNLOAD_ERROR); throw new BusinessException(HarmonicResponseEnum.REPORT_TEMPLATE_DOWNLOAD_ERROR);
} }
@@ -228,15 +229,21 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
//先查询库里是否存在已解析的报表数据,存在直接返回/不存在解析数据 //先查询库里是否存在已解析的报表数据,存在直接返回/不存在解析数据
LambdaQueryWrapper<ExcelRpt> lambdaQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ExcelRpt> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.eq(ExcelRpt::getLineId, reportSearchParam.getLineId()).eq(ExcelRpt::getTempId, reportSearchParam.getTempId()); lambdaQuery
List<ExcelRpt> excelRpts = excelRptMapper.selectList(lambdaQuery); .eq(ExcelRpt::getLineId, reportSearchParam.getLineId())
try{ .eq(ExcelRpt::getTempId, reportSearchParam.getTempId())
if (excelRpts.size() > 0) { //年季月周日
fileStorageUtil.downloadStream(response, excelRpts.get(0).getContent()); .eq(ExcelRpt::getType, reportSearchParam.getType())
//报表日期
.eq(ExcelRpt::getDataDate, reportSearchParam.getStartTime());
ExcelRpt excelRpts = excelRptMapper.selectOne(lambdaQuery);
try {
if (Objects.nonNull(excelRpts)) {
fileStorageUtil.downloadStream(response, excelRpts.getContent());
} else { } else {
fileStorageUtil.downloadStream(response, analyzeReport(reportSearchParam, excelRptTemp)); fileStorageUtil.downloadStream(response, analyzeReport(reportSearchParam, excelRptTemp));
} }
}catch (Exception exception){ } catch (Exception exception) {
throw new BusinessException(HarmonicResponseEnum.REPORT_DOWNLOAD_ERROR); throw new BusinessException(HarmonicResponseEnum.REPORT_DOWNLOAD_ERROR);
} }
@@ -351,18 +358,18 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
/** /**
* 解析报表数据 * 解析报表数据
*/ */
private String analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp) { private String analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp) {
//根据content获取v值并进行处理 //根据content获取v值并进行处理
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>(); List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
JSONArray jsonArray = null; JSONArray jsonArray ;
InputStream fileStream = null;
try { try {
//通过文件服务器获取 //通过文件服务器获取
// String objectUrl = fileStorageUtil.getFileUrl(excelRptTemp.getContent()); fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent());
// jsonArray = JSONUtil.parseArray(urlToString(objectUrl));
InputStream fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent());
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig())); jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
jsonArray.forEach(item -> { jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item; JSONObject jsonObject = (JSONObject) item;
@@ -405,6 +412,12 @@ public class CustomReportServiceImpl implements CustomReportService {
}); });
} catch (Exception e) { } catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
}finally {
try {
fileStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
} }
List<ReportTemplateDTO> endList = new ArrayList<>(); List<ReportTemplateDTO> endList = new ArrayList<>();
@@ -502,8 +515,16 @@ public class CustomReportServiceImpl implements CustomReportService {
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())) { if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())) {
sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM); sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM);
} }
sql.append(InfluxDBSqlConstant.TZ); //时间范围处理
sql
.append(InfluxDBSqlConstant.AND)
.append("time ").append(InfluxDBSqlConstant.GE).append("'").append(reportSearchParam.getStartTime()).append(InfluxDBSqlConstant.START_TIME).append("'")
.append(InfluxDBSqlConstant.AND)
.append("time ").append(InfluxDBSqlConstant.LT).append("'").append(reportSearchParam.getEndTime()).append(InfluxDBSqlConstant.END_TIME).append("'");
sql.append(InfluxDBSqlConstant.TZ);
System.out.println(sql);
//根据不同的库表赋值 //根据不同的库表赋值
QueryResult queryResult = influxDbUtils.query(String.valueOf(sql)); QueryResult queryResult = influxDbUtils.query(String.valueOf(sql));

View File

@@ -1,6 +1,8 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.*; import cn.hutool.json.*;
@@ -17,7 +19,6 @@ import com.njcn.harmonic.pojo.po.ExcelRptTemp;
import com.njcn.influxdb.param.InfluxDBSqlConstant; import com.njcn.influxdb.param.InfluxDBSqlConstant;
import com.njcn.influxdb.param.InfluxDBTableConstant; import com.njcn.influxdb.param.InfluxDBTableConstant;
import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.minioss.bo.MinIoUploadResDTO;
import com.njcn.oss.constant.OssPath; import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil; import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.prepare.harmonic.constant.AlgorithmParam; import com.njcn.prepare.harmonic.constant.AlgorithmParam;
@@ -37,14 +38,15 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 自定义报表 * 自定义报表
*
* @author qijian * @author qijian
* @date 2022/10/20 * @date 2022/10/20
*/ */
@@ -79,7 +81,7 @@ public class ReportServiceImpl implements ReportService {
//有监测点,匹配监测点的数据进行处理 //有监测点,匹配监测点的数据进行处理
//无监测点,查询稳态所有监测点 //无监测点,查询稳态所有监测点
List<String> list = reportParam.getLineIds(); List<String> list = reportParam.getLineIds();
if (CollUtil.isEmpty(list)){ if (CollUtil.isEmpty(list)) {
list = new ArrayList<>(); list = new ArrayList<>();
Map<String, List<String>> map = deptLineFeignClient.getLineByDeptRelation(AlgorithmParam.STEADY_STATE).getData(); Map<String, List<String>> map = deptLineFeignClient.getLineByDeptRelation(AlgorithmParam.STEADY_STATE).getData();
Collection<List<String>> values = map.values(); Collection<List<String>> values = map.values();
@@ -89,39 +91,47 @@ public class ReportServiceImpl implements ReportService {
} }
//根据content进行处理 //根据content进行处理
List<ReportTemplateDTO> dataList = new ArrayList<>(); List<ReportTemplateDTO> dataList;
JSONArray jsonArray = null; JSONArray jsonArray;
for (ExcelRptTemp excelRptTemp : reportTemplateList) { for (ExcelRptTemp excelRptTemp : reportTemplateList) {
InputStream fileStream = null;
try { try {
//获取content解析数据 //获取content解析数据
// String objectUrl = fileStorageUtil.getFileUrl(excelRptTemp.getContent()); fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent());
// jsonArray = JSONUtil.parseArray(urlToString(objectUrl));
InputStream fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent());
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig())); jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
dataList = getDataList(jsonArray); dataList = getDataList(jsonArray);
} catch (Exception e) { } catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
}finally {
try {
fileStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
} }
//查询influxDB数据 //查询influxDB数据
List<ReportTemplateDTO> endList = new ArrayList<>(); List<ReportTemplateDTO> endList = new ArrayList<>();
for (String lineId : list) { for (String lineId : list) {
//先判断该模板是否是当前监测点部门的
if (CollUtil.isNotEmpty(dataList)) { if (CollUtil.isNotEmpty(dataList)) {
//开始组织sql //开始组织sql
dataList.stream().forEach(data -> { dataList.stream().forEach(data -> {
StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT); StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT);
switch (data.getStatMethod()) { switch (data.getStatMethod()) {
case InfluxDBTableConstant.MAX: case InfluxDBTableConstant.MAX:
assSql(data, sql, endList, InfluxDBSqlConstant.MAX, lineId); assSql(data, sql, endList, InfluxDBSqlConstant.MAX, lineId, reportParam);
break; break;
case InfluxDBTableConstant.MIN: case InfluxDBTableConstant.MIN:
assSql(data, sql, endList, InfluxDBSqlConstant.MIN, lineId); assSql(data, sql, endList, InfluxDBSqlConstant.MIN, lineId, reportParam);
break; break;
case InfluxDBTableConstant.AVG: case InfluxDBTableConstant.AVG:
assSql(data, sql, endList, InfluxDBSqlConstant.AVG, lineId); assSql(data, sql, endList, InfluxDBSqlConstant.AVG, lineId, reportParam);
break; break;
case InfluxDBTableConstant.CP95: case InfluxDBTableConstant.CP95:
assSql(data, sql, endList, InfluxDBSqlConstant.CP95, lineId); assSql(data, sql, endList, InfluxDBSqlConstant.CP95, lineId, reportParam);
break; break;
default: default:
break; break;
@@ -141,9 +151,9 @@ public class ReportServiceImpl implements ReportService {
//周例如2022年第五周传入2022-01-23周一进行匹配有则更新无则插入 //周例如2022年第五周传入2022-01-23周一进行匹配有则更新无则插入
//日:直接插入,无需配对 //日:直接插入,无需配对
//文件上传到文件服务器,存入文件名 //文件上传到文件服务器,存入文件名
if (BizParamConstant.STAT_BIZ_DAY.equals(reportParam.getType().toString())){ if (BizParamConstant.STAT_BIZ_DAY.equals(reportParam.getType().toString())) {
rptInsert(reportParam, lineId, excelRptTemp, contentToOss(jsonArray.toString())); rptInsert(reportParam, lineId, excelRptTemp, contentToOss(jsonArray.toString()));
}else{ } else {
rptBiz(reportParam, lineId, excelRptTemp, contentToOss(jsonArray.toString())); rptBiz(reportParam, lineId, excelRptTemp, contentToOss(jsonArray.toString()));
} }
} }
@@ -154,14 +164,15 @@ public class ReportServiceImpl implements ReportService {
/** /**
* rpt业务方法 * rpt业务方法
*
* @param reportParam,lineId,excelRptTemp,afterContent 参数 * @param reportParam,lineId,excelRptTemp,afterContent 参数
* @return 结果 * @return 结果
*/ */
private void rptBiz(LineParam reportParam, String lineId, ExcelRptTemp excelRptTemp, String afterContent) { private void rptBiz(LineParam reportParam, String lineId, ExcelRptTemp excelRptTemp, String afterContent) {
LambdaQueryWrapper<ExcelRpt> lambdaQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ExcelRpt> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.eq(ExcelRpt::getLineId, lineId).eq(ExcelRpt::getTempId, excelRptTemp.getId()).eq(ExcelRpt::getType, reportParam.getType()).eq(ExcelRpt::getDataDate,reportParam.getDataDate()); lambdaQuery.eq(ExcelRpt::getLineId, lineId).eq(ExcelRpt::getTempId, excelRptTemp.getId()).eq(ExcelRpt::getType, reportParam.getType()).eq(ExcelRpt::getDataDate, reportParam.getDataDate());
ExcelRpt excelRpt = excelRptMapper.selectOne(lambdaQuery); ExcelRpt excelRpt = excelRptMapper.selectOne(lambdaQuery);
if (excelRpt != null){ if (excelRpt != null) {
excelRpt.setContent(afterContent); excelRpt.setContent(afterContent);
excelRptMapper.updateById(excelRpt); excelRptMapper.updateById(excelRpt);
} else { } else {
@@ -171,6 +182,7 @@ public class ReportServiceImpl implements ReportService {
/** /**
* 新增rpt方法 * 新增rpt方法
*
* @param reportParam,lineId,excelRptTemp,afterContent 参数 * @param reportParam,lineId,excelRptTemp,afterContent 参数
* @return 结果 * @return 结果
*/ */
@@ -190,6 +202,7 @@ public class ReportServiceImpl implements ReportService {
/** /**
* 根据数据填充content * 根据数据填充content
*
* @param jsonArray 参数 * @param jsonArray 参数
* @return 结果 * @return 结果
*/ */
@@ -225,6 +238,7 @@ public class ReportServiceImpl implements ReportService {
/** /**
* 获取content解析数据 * 获取content解析数据
*
* @param jsonArray 参数 * @param jsonArray 参数
* @return 结果 * @return 结果
*/ */
@@ -274,15 +288,17 @@ public class ReportServiceImpl implements ReportService {
/** /**
* 组装influxDB查询sql查询value并封装endlist * 组装influxDB查询sql查询value并封装endlist
*
* @param data,sql,endList,method,reportSearchParam 参数 * @param data,sql,endList,method,reportSearchParam 参数
* @param reportParam
* @return 结果 * @return 结果
*/ */
private void assSql(ReportTemplateDTO data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, String lineId) { private void assSql(ReportTemplateDTO data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, String lineId, LineParam reportParam) {
//sql拼接示例select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai') //sql拼接示例select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai')
//cp95函数特殊处理 PERCENTILE(field_key, N) //cp95函数特殊处理 PERCENTILE(field_key, N)
if (InfluxDBSqlConstant.CP95.equals(method)){ if (InfluxDBSqlConstant.CP95.equals(method)) {
sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.NUM_95).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE); sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.NUM_95).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE);
}else{ } else {
sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE); sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE);
} }
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId()).append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(lineId).append(InfluxDBSqlConstant.QM); sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId()).append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(lineId).append(InfluxDBSqlConstant.QM);
@@ -292,11 +308,44 @@ public class ReportServiceImpl implements ReportService {
} }
//data_flicker、data_fluc、data_plt 无 value_type //data_flicker、data_fluc、data_plt 无 value_type
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())){ if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())) {
sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM); sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM);
} }
String startTime;
String endTime;
DateTime dateTime = new DateTime(reportParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
//时间范围需要处理下
switch (reportParam.getType()){
case 1:
startTime = DateUtil.beginOfYear(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
endTime = DateUtil.endOfYear(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
break;
case 2:
startTime = DateUtil.beginOfQuarter(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
endTime = DateUtil.endOfQuarter(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
break;
case 3:
startTime = DateUtil.beginOfMonth(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
endTime = DateUtil.endOfMonth(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
break;
case 4:
startTime = DateUtil.beginOfWeek(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
endTime = DateUtil.endOfWeek(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
break;
default:
startTime = DateUtil.beginOfDay(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
endTime = DateUtil.endOfDay(dateTime).toString(DatePattern.NORM_DATETIME_PATTERN);
break;
}
sql
.append(InfluxDBSqlConstant.AND)
.append("time ").append(InfluxDBSqlConstant.GE).append("'").append(startTime).append("'")
.append(InfluxDBSqlConstant.AND)
.append("time ").append(InfluxDBSqlConstant.LT).append("'").append(endTime).append("'");
sql.append(InfluxDBSqlConstant.TZ); sql.append(InfluxDBSqlConstant.TZ);
System.out.println(sql);
//根据不同的库表赋值 //根据不同的库表赋值
QueryResult queryResult = influxDbUtils.query(String.valueOf(sql)); QueryResult queryResult = influxDbUtils.query(String.valueOf(sql));
@@ -304,7 +353,7 @@ public class ReportServiceImpl implements ReportService {
List<QueryResult.Result> results = queryResult.getResults(); List<QueryResult.Result> results = queryResult.getResults();
if (results.size() != 0) { if (results.size() != 0) {
QueryResult.Result result = results.get(0); QueryResult.Result result = results.get(0);
if (result.getSeries() != null){ if (result.getSeries() != null) {
List<QueryResult.Series> seriess = result.getSeries(); List<QueryResult.Series> seriess = result.getSeries();
if (seriess.size() != 0) { if (seriess.size() != 0) {
QueryResult.Series series = seriess.get(0); QueryResult.Series series = seriess.get(0);
@@ -351,7 +400,7 @@ public class ReportServiceImpl implements ReportService {
BufferedWriter bufferedWriter = null; BufferedWriter bufferedWriter = null;
File distFile = new File(filePath); File distFile = new File(filePath);
try { try {
if (!distFile.getParentFile().exists()){ if (!distFile.getParentFile().exists()) {
distFile.getParentFile().mkdirs(); distFile.getParentFile().mkdirs();
} }
bufferedReader = new BufferedReader(new StringReader(res)); bufferedReader = new BufferedReader(new StringReader(res));
@@ -413,7 +462,7 @@ public class ReportServiceImpl implements ReportService {
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();
String line = " "; String line = " ";
while ((line = in.readLine()) != null){ while ((line = in.readLine()) != null) {
buffer.append(line); buffer.append(line);
} }
return buffer.toString(); return buffer.toString();