代码调整

This commit is contained in:
2023-04-19 16:23:05 +08:00
parent 592615691c
commit d10cc6d02b
5 changed files with 128 additions and 246 deletions

View File

@@ -2,13 +2,16 @@ package com.njcn.harmonic.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.FileUtil;
import com.njcn.harmonic.enums.HarmonicResponseEnum;
import com.njcn.harmonic.mapper.DeptTempMapper;
import com.njcn.harmonic.mapper.EleEpdMapper;
@@ -94,10 +97,9 @@ public class CustomReportServiceImpl implements CustomReportService {
public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
checkName(reportTemplateParam, false);
MultipartFile fileContent = reportTemplateParam.getFileContent();
String fileName = fileContent.getName();
//检验模板json数据规范
try {
String content = MultipartFileToString(fileContent);
String content = FileUtil.multipartFileToString(fileContent);
new JSONArray(content);
} catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
@@ -129,7 +131,7 @@ public class CustomReportServiceImpl implements CustomReportService {
MultipartFile fileContent = reportTemplateParam.getFileContent();
//检验模板json数据规范
try {
String content = MultipartFileToString(fileContent);
String content = FileUtil.multipartFileToString(fileContent);
new JSONArray(content);
} catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
@@ -366,10 +368,8 @@ public class CustomReportServiceImpl implements CustomReportService {
//根据content获取v值并进行处理
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
JSONArray jsonArray;
InputStream fileStream = null;
try {
try(InputStream fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent())) {
//通过文件服务器获取
fileStream = fileStorageUtil.getFileStream(excelRptTemp.getContent());
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
@@ -412,8 +412,6 @@ public class CustomReportServiceImpl implements CustomReportService {
});
} catch (Exception e) {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
} finally {
IOUtils.closeQuietly(fileStream);
}
List<ReportTemplateDTO> endList = new ArrayList<>();
@@ -421,13 +419,13 @@ public class CustomReportServiceImpl implements CustomReportService {
//开始组织sql
reportTemplateDTOList.stream().forEach(data -> {
StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT);
if (InfluxDBTableConstant.MAX.equals(data.getStatMethod())) {
if (InfluxDBTableConstant.MAX.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDBSqlConstant.MAX, reportSearchParam);
} else if (InfluxDBTableConstant.MIN.equals(data.getStatMethod())) {
} else if (InfluxDBTableConstant.MIN.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDBSqlConstant.MIN, reportSearchParam);
} else if (InfluxDBTableConstant.AVG.equals(data.getStatMethod())) {
} else if (InfluxDBTableConstant.AVG.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDBSqlConstant.AVG, reportSearchParam);
} else if (InfluxDBTableConstant.CP95.equals(data.getStatMethod())) {
} else if (InfluxDBTableConstant.CP95.equalsIgnoreCase(data.getStatMethod())) {
assSql(data, sql, endList, InfluxDBSqlConstant.CP95, reportSearchParam);
}
});
@@ -463,9 +461,8 @@ public class CustomReportServiceImpl implements CustomReportService {
});
}
File newFile = stringToFile(jsonArray.toString());
MultipartFile newMultipartFile = getMultipartFile(newFile);
String newContent = fileStorageUtil.uploadMultipart(newMultipartFile, OssPath.HARMONIC_EXCEL_REPORT);
InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8);
String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json"));
//存入报表库
ExcelRpt excelRpt = new ExcelRpt();
@@ -475,12 +472,8 @@ public class CustomReportServiceImpl implements CustomReportService {
excelRpt.setTempId(excelRptTemp.getId());
excelRpt.setContent(newContent);
excelRpt.setType(reportSearchParam.getType());
//根据模板激活状态判断是否进库修改State字段0未进库 1已进库
if (DataStateEnum.ENABLE.getCode().equals(reportSearchParam.getActivation())) {
excelRpt.setState(DataStateEnum.ENABLE.getCode());
} else {
excelRpt.setState(DataStateEnum.DELETED.getCode());
}
excelRpt.setState(DataStateEnum.ENABLE.getCode());
excelRptMapper.insert(excelRpt);
return newContent;
@@ -497,30 +490,54 @@ public class CustomReportServiceImpl implements CustomReportService {
//cp95函数特殊处理 PERCENTILE(field_key, N)
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 {
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(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM);
sql.append(InfluxDBSqlConstant.FROM)
.append(data.getClassId())
.append(InfluxDBSqlConstant.WHERE)
.append(InfluxDBTableConstant.LINE_ID)
.append(InfluxDBSqlConstant.EQ)
.append(InfluxDBSqlConstant.QM)
.append(reportSearchParam.getLineId())
.append(InfluxDBSqlConstant.QM);
//相别特殊处理
if (!InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) {
sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getPhase()).append(InfluxDBSqlConstant.QM);
sql.append(InfluxDBSqlConstant.AND)
.append(InfluxDBTableConstant.PHASIC_TYPE)
.append(InfluxDBSqlConstant.EQ)
.append(InfluxDBSqlConstant.QM)
.append(data.getPhase())
.append(InfluxDBSqlConstant.QM);
}
//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())) {
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.AND)
.append("time ").append(InfluxDBSqlConstant.GE).append("'").append(reportSearchParam.getStartTime()).append(InfluxDBSqlConstant.START_TIME).append("'")
.append(InfluxDBSqlConstant.TIME).append(InfluxDBSqlConstant.GE).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getStartTime()).append(InfluxDBSqlConstant.START_TIME).append(InfluxDBSqlConstant.QM)
.append(InfluxDBSqlConstant.AND)
.append("time ").append(InfluxDBSqlConstant.LT).append("'").append(reportSearchParam.getEndTime()).append(InfluxDBSqlConstant.END_TIME).append("'");
.append(InfluxDBSqlConstant.TIME).append(InfluxDBSqlConstant.LT).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getEndTime()).append(InfluxDBSqlConstant.END_TIME).append(InfluxDBSqlConstant.QM);
sql.append(InfluxDBSqlConstant.TZ);
System.out.println(sql);
//根据不同的库表赋值
QueryResult queryResult = influxDbUtils.query(String.valueOf(sql));
@@ -548,109 +565,5 @@ public class CustomReportServiceImpl implements CustomReportService {
}
/**
* 文件Url 转 String
*
* @param objectUrl 文件url
* @return 成功标记
*/
private String urlToString(String objectUrl) throws IOException {
URL url = new URL(objectUrl);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
String line = " ";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
}
/**
* 字符串写入指定文件
*
* @param res 原字符串
* @return 成功标记
*/
public File stringToFile(String res) {
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
String businessTempPath = generalInfo.getBusinessTempPath();
File distFile = new File(businessTempPath + File.separator + "temp.json");
try {
if (!distFile.getParentFile().exists()) {
distFile.getParentFile().mkdirs();
}
bufferedReader = new BufferedReader(new StringReader(res));
bufferedWriter = new BufferedWriter(new FileWriter(distFile));
bufferedWriter.write("");
char buf[] = new char[1024]; //字符缓冲区
int len;
while ((len = bufferedReader.read(buf)) != -1) {
bufferedWriter.write(buf, 0, len);
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return distFile;
}
/**
* MultipartFile 转 String
*
* @param multipartFile 原字符串
* @return 成功标记
*/
private String MultipartFileToString(MultipartFile multipartFile) {
InputStreamReader isr;
BufferedReader br;
StringBuilder txtResult = new StringBuilder();
try {
isr = new InputStreamReader(multipartFile.getInputStream(), StandardCharsets.UTF_8);
br = new BufferedReader(isr);
String lineTxt;
while ((lineTxt = br.readLine()) != null) {
txtResult.append(lineTxt);
}
isr.close();
br.close();
return txtResult.toString();
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
/**
* File 转 MultipartFile
*
* @param file 原字符串
* @return 成功标记
*/
public static MultipartFile getMultipartFile(File file) {
FileItem item = new DiskFileItemFactory().createItem("file"
, MediaType.MULTIPART_FORM_DATA_VALUE
, true
, file.getName());
try (InputStream input = new FileInputStream(file);
OutputStream os = item.getOutputStream()) {
// 流转移
IOUtils.copy(input, os);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid file: " + e, e);
}
return new CommonsMultipartFile(item);
}
}