1.分钟数据转统计数据mysql日表之外添加inflxudb日表
2.报表默认查询influxdb日表
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package com.njcn.harmonic.controller;
|
package com.njcn.harmonic.controller.report;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
@@ -42,6 +42,21 @@ public class CustomReportController extends BaseController {
|
|||||||
|
|
||||||
private final CustomReportService customReportService;
|
private final CustomReportService customReportService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 替换报表数据并返回
|
||||||
|
* @author qijian
|
||||||
|
* @date 2022/10/19
|
||||||
|
*/
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
@PostMapping("/getCustomReport")
|
||||||
|
@ApiOperation("获取报表")
|
||||||
|
@ApiImplicitParam(name = "reportSearchParam", value = "查询体", required = false)
|
||||||
|
public void getCustomReport(@RequestBody ReportSearchParam reportSearchParam, HttpServletResponse response) {
|
||||||
|
customReportService.getCustomReport(reportSearchParam,response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增自定义报表模板
|
* 新增自定义报表模板
|
||||||
* @author cdf
|
* @author cdf
|
||||||
@@ -222,19 +237,7 @@ public class CustomReportController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 替换报表数据并返回
|
|
||||||
* @author qijian
|
|
||||||
* @date 2022/10/19
|
|
||||||
*/
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
|
||||||
@PostMapping("/getCustomReport")
|
|
||||||
@ApiOperation("获取报表")
|
|
||||||
@ApiImplicitParam(name = "reportSearchParam", value = "查询体", required = false)
|
|
||||||
public void getCustomReport(@RequestBody ReportSearchParam reportSearchParam, HttpServletResponse response) {
|
|
||||||
String methodDescribe = getMethodDescribe("getCustomReport");
|
|
||||||
customReportService.getCustomReport(reportSearchParam,response);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -119,6 +119,22 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
private final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
|
private final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response) {
|
||||||
|
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId());
|
||||||
|
if (Objects.isNull(excelRptTemp)) {
|
||||||
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
||||||
|
}
|
||||||
|
if (Objects.isNull(reportSearchParam.getCustomType())) {
|
||||||
|
//通用报表
|
||||||
|
analyzeReport(reportSearchParam, excelRptTemp, response);
|
||||||
|
} else {
|
||||||
|
//浙江无线报表
|
||||||
|
analyzeReportZhejiang(reportSearchParam, excelRptTemp, response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
|
public boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam) {
|
||||||
checkName(reportTemplateParam, false);
|
checkName(reportTemplateParam, false);
|
||||||
@@ -252,22 +268,6 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response) {
|
|
||||||
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId());
|
|
||||||
if (Objects.isNull(excelRptTemp)) {
|
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
|
||||||
}
|
|
||||||
if (Objects.isNull(reportSearchParam.getCustomType())) {
|
|
||||||
//通用报表
|
|
||||||
analyzeReport(reportSearchParam, excelRptTemp, response);
|
|
||||||
} else {
|
|
||||||
//浙江无线报表
|
|
||||||
analyzeReportZhejiang(reportSearchParam, excelRptTemp, response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ReportTreeVO> reportChooseTree() {
|
public List<ReportTreeVO> reportChooseTree() {
|
||||||
DictData dic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.CS_DATA_TYPE.getName(), DicDataEnum.EPD.getName()).getData();
|
DictData dic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.CS_DATA_TYPE.getName(), DicDataEnum.EPD.getName()).getData();
|
||||||
@@ -514,6 +514,163 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
* @param assNoPassMap 用于存储不合格的指标
|
* @param assNoPassMap 用于存储不合格的指标
|
||||||
* @date 2023/10/20
|
* @date 2023/10/20
|
||||||
*/
|
*/
|
||||||
|
private void assSqlNew(List<ReportTemplateDTO> data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam reportSearchParam, Map<String, ReportTemplateDTO> limitMap, Map<String, Float> overLimitMap, Map<String, ReportTemplateDTO> assNoPassMap) {
|
||||||
|
//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)
|
||||||
|
if (InfluxDbSqlConstant.CP95.equals(method)) {
|
||||||
|
|
||||||
|
for (int i = 0; i < data.size(); i++) {
|
||||||
|
if (i == data.size() - 1) {
|
||||||
|
sql.append(InfluxDbSqlConstant.PERCENTILE)
|
||||||
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
|
.append(data.get(i).getTemplateName())
|
||||||
|
.append(InfluxDbSqlConstant.NUM_95)
|
||||||
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
|
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
||||||
|
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM);
|
||||||
|
} else {
|
||||||
|
sql.append(InfluxDbSqlConstant.PERCENTILE)
|
||||||
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
|
.append(data.get(i).getTemplateName())
|
||||||
|
.append(InfluxDbSqlConstant.NUM_95)
|
||||||
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
|
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
||||||
|
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM).append(StrUtil.COMMA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
for (int i = 0; i < data.size(); i++) {
|
||||||
|
if (i == data.size() - 1) {
|
||||||
|
sql.append(method)
|
||||||
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
|
.append(data.get(i).getTemplateName())
|
||||||
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
|
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
||||||
|
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM);
|
||||||
|
} else {
|
||||||
|
sql.append(method)
|
||||||
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
|
.append(data.get(i).getTemplateName())
|
||||||
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
|
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
||||||
|
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM).append(StrUtil.COMMA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.append(StrPool.C_SPACE);
|
||||||
|
String temS = data.get(0).getResourceId().replace("r_stat_data", "day").replace("_d","");
|
||||||
|
sql.append(InfluxDbSqlConstant.FROM).append(temS);
|
||||||
|
|
||||||
|
sql.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.get(0).getPhase())) {
|
||||||
|
sql.append(InfluxDbSqlConstant.AND)
|
||||||
|
.append(InfluxDBTableConstant.PHASIC_TYPE)
|
||||||
|
.append(InfluxDbSqlConstant.EQ)
|
||||||
|
.append(InfluxDbSqlConstant.QM)
|
||||||
|
.append(data.get(0).getPhase())
|
||||||
|
.append(InfluxDbSqlConstant.QM);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//data_flicker、data_fluc、data_plt 无 value_type
|
||||||
|
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.get(0).getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.get(0).getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.get(0).getClassId())) {
|
||||||
|
sql.append(InfluxDbSqlConstant.AND)
|
||||||
|
.append(InfluxDBTableConstant.VALUE_TYPE)
|
||||||
|
.append(InfluxDbSqlConstant.EQ)
|
||||||
|
.append(InfluxDbSqlConstant.QM)
|
||||||
|
.append(data.get(0).getStatMethod())
|
||||||
|
.append(InfluxDbSqlConstant.QM);
|
||||||
|
}
|
||||||
|
|
||||||
|
//频率和频率偏差仅统计T相
|
||||||
|
if (data.get(0).getTemplateName().equals("freq_dev") || data.get(0).getTemplateName().equals("freq")) {
|
||||||
|
sql.append(InfluxDbSqlConstant.AND)
|
||||||
|
.append(InfluxDBTableConstant.PHASIC_TYPE)
|
||||||
|
.append(InfluxDbSqlConstant.EQ)
|
||||||
|
.append(InfluxDbSqlConstant.QM)
|
||||||
|
.append(InfluxDBTableConstant.PHASE_TYPE_T)
|
||||||
|
.append(InfluxDbSqlConstant.QM);
|
||||||
|
}
|
||||||
|
//时间范围处理
|
||||||
|
sql.append(InfluxDbSqlConstant.AND)
|
||||||
|
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.GE).append(InfluxDbSqlConstant.QM).append(reportSearchParam.getStartTime()).append(InfluxDbSqlConstant.START_TIME).append(InfluxDbSqlConstant.QM)
|
||||||
|
.append(InfluxDbSqlConstant.AND)
|
||||||
|
.append(InfluxDbSqlConstant.TIME).append(InfluxDbSqlConstant.LT).append(InfluxDbSqlConstant.QM).append(reportSearchParam.getEndTime()).append(InfluxDbSqlConstant.END_TIME).append(InfluxDbSqlConstant.QM);
|
||||||
|
|
||||||
|
sql.append(InfluxDbSqlConstant.TZ);
|
||||||
|
|
||||||
|
long a = System.currentTimeMillis();
|
||||||
|
List<Map<String, Object>> mapList = influxDbUtils.getMapResult(sql.toString());
|
||||||
|
long b = System.currentTimeMillis();
|
||||||
|
System.out.println(sql);
|
||||||
|
System.out.println("当前sql执行了:"+(b-a)+"ms");
|
||||||
|
if (CollUtil.isEmpty(mapList)) {
|
||||||
|
data = data.stream().peek(item -> item.setValue("/")).collect(Collectors.toList());
|
||||||
|
} else {
|
||||||
|
Map<String, Object> map = mapList.get(0);
|
||||||
|
for (ReportTemplateDTO item : data) {
|
||||||
|
if (Objects.nonNull(map) && map.containsKey(item.getItemName())) {
|
||||||
|
double v = Double.parseDouble(map.get(item.getItemName()).toString());
|
||||||
|
item.setValue(String.format("%.3f", v));
|
||||||
|
|
||||||
|
if (overLimitMap.containsKey(item.getLimitName())) {
|
||||||
|
Float tagVal = overLimitMap.get(item.getLimitName());
|
||||||
|
if (v > tagVal) {
|
||||||
|
item.setOverLimitFlag(1);
|
||||||
|
} else {
|
||||||
|
item.setOverLimitFlag(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//判断是否越限
|
||||||
|
if (limitMap.size() != 0) {
|
||||||
|
String key = item.getLimitName() + "#" + item.getStatMethod().toLowerCase() + "#pq_overlimit";
|
||||||
|
if (limitMap.containsKey(key)) {
|
||||||
|
ReportTemplateDTO tem = limitMap.get(key);
|
||||||
|
double limitVal = Double.parseDouble(tem.getValue());
|
||||||
|
if (v > limitVal) {
|
||||||
|
tem.setOverLimitFlag(1);
|
||||||
|
assNoPassMap.put(key, tem);
|
||||||
|
} else if (!assNoPassMap.containsKey(key)) {
|
||||||
|
tem.setOverLimitFlag(0);
|
||||||
|
assNoPassMap.put(key, tem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item.setValue("/");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endList.addAll(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @param data 同类型的cell模板
|
||||||
|
* @param sql 单个cell模板
|
||||||
|
* @param endList 用于返回最终组装好的数据,类似data
|
||||||
|
* @param limitMap 指标是否合格模板
|
||||||
|
* @param assNoPassMap 用于存储不合格的指标
|
||||||
|
* @date 2023/10/20
|
||||||
|
*//*
|
||||||
|
|
||||||
private void assSqlNew(List<ReportTemplateDTO> data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam reportSearchParam, Map<String, ReportTemplateDTO> limitMap, Map<String, Float> overLimitMap, Map<String, ReportTemplateDTO> assNoPassMap) {
|
private void assSqlNew(List<ReportTemplateDTO> data, StringBuilder sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam reportSearchParam, Map<String, ReportTemplateDTO> limitMap, Map<String, Float> overLimitMap, Map<String, ReportTemplateDTO> assNoPassMap) {
|
||||||
//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')
|
||||||
if (InfluxDbSqlConstant.CP95.equals(method)) {
|
if (InfluxDbSqlConstant.CP95.equals(method)) {
|
||||||
@@ -650,6 +807,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
endList.addAll(data);
|
endList.addAll(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理
|
* 处理
|
||||||
@@ -698,32 +856,29 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
long deal = System.currentTimeMillis();
|
long deal = System.currentTimeMillis();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
classMap.forEach((classKey, templateValue) -> {
|
classMap.forEach((classKey, templateValue) -> {
|
||||||
|
|
||||||
Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
|
Map<String, List<ReportTemplateDTO>> valueTypeMap = templateValue.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getStatMethod));
|
||||||
|
futures.add(executorService.submit(() -> {
|
||||||
//avg.max,min,cp95
|
//avg.max,min,cp95
|
||||||
valueTypeMap.forEach((valueTypeKey, valueTypeVal) -> {
|
valueTypeMap.forEach((valueTypeKey, valueTypeVal) -> {
|
||||||
|
|
||||||
//相别分组
|
//相别分组
|
||||||
Map<String, List<ReportTemplateDTO>> phaseMap = valueTypeVal.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase));
|
Map<String, List<ReportTemplateDTO>> phaseMap = valueTypeVal.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getPhase));
|
||||||
phaseMap.forEach((phaseKey, phaseVal) -> {
|
phaseMap.forEach((phaseKey, phaseVal) -> {
|
||||||
futures.add(executorService.submit(() -> {
|
|
||||||
StringBuilder sql = new StringBuilder(InfluxDbSqlConstant.SELECT);
|
StringBuilder sql = new StringBuilder(InfluxDbSqlConstant.SELECT);
|
||||||
if (InfluxDbSqlConstant.MAX.equalsIgnoreCase(valueTypeKey)) {
|
if (InfluxDbSqlConstant.MAX.equalsIgnoreCase(valueTypeKey)) {
|
||||||
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MAX, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MAX, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
||||||
} else if (InfluxDbSqlConstant.MIN.equalsIgnoreCase(valueTypeKey)) {
|
} else if (InfluxDbSqlConstant.MIN.equalsIgnoreCase(valueTypeKey)) {
|
||||||
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MIN, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.MIN, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
||||||
} else if (InfluxDbSqlConstant.AVG_WEB.equalsIgnoreCase(valueTypeKey)) {
|
} else if (InfluxDbSqlConstant.AVG_WEB.equalsIgnoreCase(valueTypeKey)) {
|
||||||
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.AVG_WEB, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.AVG, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
||||||
} else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(valueTypeKey)) {
|
} else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(valueTypeKey)) {
|
||||||
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.CP95, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
assSqlNew(phaseVal, sql, endList, InfluxDbSqlConstant.CP95, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
}));
|
}));
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -846,9 +1001,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2023/10/20
|
* @date 2023/10/20
|
||||||
*/
|
*/
|
||||||
private void parseTemplate (JSONArray
|
private void parseTemplate(JSONArray
|
||||||
jsonArray, List < ReportTemplateDTO > reportTemplateDTOList, List < ReportTemplateDTO > reportLimitList, List < ReportTemplateDTO > terminalList)
|
jsonArray, List<ReportTemplateDTO> reportTemplateDTOList, List<ReportTemplateDTO> reportLimitList, List<ReportTemplateDTO> terminalList) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
//通过文件服务器获取
|
//通过文件服务器获取
|
||||||
|
|
||||||
@@ -927,8 +1081,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2023/10/23
|
* @date 2023/10/23
|
||||||
*/
|
*/
|
||||||
private Map<String, Float> overLimitDeal (List < ReportTemplateDTO > reportLimitList, ReportSearchParam
|
private Map<String, Float> overLimitDeal(List<ReportTemplateDTO> reportLimitList, ReportSearchParam
|
||||||
reportSearchParam){
|
reportSearchParam) {
|
||||||
Map<String, Float> limitMap = new HashMap<>();
|
Map<String, Float> limitMap = new HashMap<>();
|
||||||
if (CollUtil.isNotEmpty(reportLimitList)) {
|
if (CollUtil.isNotEmpty(reportLimitList)) {
|
||||||
StringBuilder sql = new StringBuilder("select ");
|
StringBuilder sql = new StringBuilder("select ");
|
||||||
@@ -957,7 +1111,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
/**
|
/**
|
||||||
* 报告下载
|
* 报告下载
|
||||||
*/
|
*/
|
||||||
private void downReport (JSONArray jsonArray, HttpServletResponse response){
|
private void downReport(JSONArray jsonArray, HttpServletResponse response) {
|
||||||
InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8);
|
InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8);
|
||||||
//String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json"));
|
//String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json"));
|
||||||
|
|
||||||
@@ -980,8 +1134,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void analyzeReportZhejiang (ReportSearchParam reportSearchParam, ExcelRptTemp
|
private void analyzeReportZhejiang(ReportSearchParam reportSearchParam, ExcelRptTemp
|
||||||
excelRptTemp, HttpServletResponse response){
|
excelRptTemp, HttpServletResponse response) {
|
||||||
|
|
||||||
//指标
|
//指标
|
||||||
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
||||||
@@ -1090,10 +1244,9 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void assSqlZhejiang (List < ReportTemplateDTO > data, StringBuilder
|
private void assSqlZhejiang(List<ReportTemplateDTO> data, StringBuilder
|
||||||
sql, List < ReportTemplateDTO > endList, String method, ReportSearchParam
|
sql, List<ReportTemplateDTO> endList, String method, ReportSearchParam
|
||||||
reportSearchParam, Map < String, ReportTemplateDTO > limitMap, Map < String, Float > overLimitMap, Map < String, ReportTemplateDTO > assNoPassMap, List < WlRecord > wlRecordList)
|
reportSearchParam, Map<String, ReportTemplateDTO> limitMap, Map<String, Float> overLimitMap, Map<String, ReportTemplateDTO> assNoPassMap, List<WlRecord> wlRecordList) {
|
||||||
{
|
|
||||||
//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.PERCENTILE.equals(method)) {
|
if (InfluxDbSqlConstant.PERCENTILE.equals(method)) {
|
||||||
@@ -1214,7 +1367,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Map<String, Object> dealResultMap (String method, List < Map < String, Object >> allList){
|
private Map<String, Object> dealResultMap(String method, List<Map<String, Object>> allList) {
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
// 遍历列表中的每个Map
|
// 遍历列表中的每个Map
|
||||||
if (method.equals(InfluxDbSqlConstant.MIN)) {
|
if (method.equals(InfluxDbSqlConstant.MIN)) {
|
||||||
@@ -1279,8 +1432,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void dealExcelResult (JSONArray
|
private void dealExcelResult(JSONArray
|
||||||
jsonArray, Map < String, List < ReportTemplateDTO >> assMap, Map < String, String > unit){
|
jsonArray, Map<String, List<ReportTemplateDTO>> assMap, Map<String, String> unit) {
|
||||||
jsonArray.forEach(item -> {
|
jsonArray.forEach(item -> {
|
||||||
JSONObject jsonObject = (JSONObject) item;
|
JSONObject jsonObject = (JSONObject) item;
|
||||||
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||||
@@ -1349,8 +1502,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
* 处理指标超标结论
|
* 处理指标超标结论
|
||||||
*/
|
*/
|
||||||
private void dealTargetResult
|
private void dealTargetResult
|
||||||
(Map < String, ReportTemplateDTO > assNoPassMap, Map < String, ReportTemplateDTO > limitTargetMapX, List < ReportTemplateDTO > endList)
|
(Map<String, ReportTemplateDTO> assNoPassMap, Map<String, ReportTemplateDTO> limitTargetMapX, List<ReportTemplateDTO> endList) {
|
||||||
{
|
|
||||||
assNoPassMap.forEach((key, val) -> {
|
assNoPassMap.forEach((key, val) -> {
|
||||||
limitTargetMapX.remove(key);
|
limitTargetMapX.remove(key);
|
||||||
if ("Voltage_Dev".equals(val.getTemplateName()) || "Freq_Dev".equals(val.getTemplateName())) {
|
if ("Voltage_Dev".equals(val.getTemplateName()) || "Freq_Dev".equals(val.getTemplateName())) {
|
||||||
@@ -1381,9 +1533,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2023/10/20
|
* @date 2023/10/20
|
||||||
*/
|
*/
|
||||||
private void parseTemplateZhejiang (JSONArray
|
private void parseTemplateZhejiang(JSONArray
|
||||||
jsonArray, List < ReportTemplateDTO > reportTemplateDTOList, List < ReportTemplateDTO > reportLimitList, List < ReportTemplateDTO > terminalList)
|
jsonArray, List<ReportTemplateDTO> reportTemplateDTOList, List<ReportTemplateDTO> reportLimitList, List<ReportTemplateDTO> terminalList) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
//通过文件服务器获取
|
//通过文件服务器获取
|
||||||
|
|
||||||
@@ -1456,7 +1607,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user