达梦兼容调整
This commit is contained in:
@@ -75,7 +75,7 @@ public class PqIcdPathController extends BaseController {
|
|||||||
|
|
||||||
@ApiOperation("更新icd模型")
|
@ApiOperation("更新icd模型")
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
||||||
@PostMapping("addIcdPath")
|
@PostMapping("updateIcdPath")
|
||||||
public HttpResult<Boolean> updateIcdPath(@RequestBody PqIcdPathParam.PqIcdPathUpdateParam pqIcdPathUpdateParam){
|
public HttpResult<Boolean> updateIcdPath(@RequestBody PqIcdPathParam.PqIcdPathUpdateParam pqIcdPathUpdateParam){
|
||||||
String methodDescribe = getMethodDescribe("updateIcdPath");
|
String methodDescribe = getMethodDescribe("updateIcdPath");
|
||||||
Boolean result = pqIcdPathService.updateIcdPath(pqIcdPathUpdateParam);
|
Boolean result = pqIcdPathService.updateIcdPath(pqIcdPathUpdateParam);
|
||||||
|
|||||||
@@ -1491,8 +1491,8 @@
|
|||||||
SELECT
|
SELECT
|
||||||
line.id AS lineId,
|
line.id AS lineId,
|
||||||
concat(sub.name,'_',vo.name,'_',line.name) as lineName,
|
concat(sub.name,'_',vo.name,'_',line.name) as lineName,
|
||||||
concat(round(detail.pt1,0),concat(':',round(detail.pt2,0))) as pt,
|
CONCAT(NVL(TO_CHAR(detail.pt1, 'FM9999999999'), 'N/A'), ':', NVL(TO_CHAR(detail.pt2, 'FM9999999999'), 'N/A')) AS pt,
|
||||||
concat(round(detail.ct1,0),concat(':',round(detail.ct2,0))) as ct,
|
CONCAT(NVL(TO_CHAR(detail.ct1, 'FM9999999999'), 'N/A'), ':', NVL(TO_CHAR(detail.ct2, 'FM9999999999'), 'N/A')) AS ct,
|
||||||
detail.Dev_Capacity as Dev_Capacity,
|
detail.Dev_Capacity as Dev_Capacity,
|
||||||
detail.Short_Capacity as Short_Capacity,
|
detail.Short_Capacity as Short_Capacity,
|
||||||
detail.Standard_Capacity as Standard_Capacity,
|
detail.Standard_Capacity as Standard_Capacity,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.hutool.core.date.TimeInterval;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.text.StrBuilder;
|
import cn.hutool.core.text.StrBuilder;
|
||||||
import cn.hutool.core.text.StrPool;
|
import cn.hutool.core.text.StrPool;
|
||||||
@@ -121,6 +122,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response) {
|
public void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response) {
|
||||||
|
TimeInterval timeInterval = new TimeInterval();
|
||||||
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId());
|
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId());
|
||||||
if (Objects.isNull(excelRptTemp)) {
|
if (Objects.isNull(excelRptTemp)) {
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
||||||
@@ -132,6 +134,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
//浙江无线报表
|
//浙江无线报表
|
||||||
analyzeReportZhejiang(reportSearchParam, excelRptTemp, response);
|
analyzeReportZhejiang(reportSearchParam, excelRptTemp, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.info("报表执行时间{}秒",timeInterval.intervalSecond());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -660,8 +664,6 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* @param data 同类型的cell模板
|
* @param data 同类型的cell模板
|
||||||
* @param sql 单个cell模板
|
* @param sql 单个cell模板
|
||||||
@@ -669,9 +671,9 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
* @param limitMap 指标是否合格模板
|
* @param limitMap 指标是否合格模板
|
||||||
* @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) {
|
private void assSqlByMysql(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)) {
|
||||||
for (int i = 0; i < data.size(); i++) {
|
for (int i = 0; i < data.size(); i++) {
|
||||||
@@ -680,15 +682,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
.append(InfluxDbSqlConstant.LBK)
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
.append(data.get(i).getTemplateName())
|
.append(data.get(i).getTemplateName())
|
||||||
.append(InfluxDbSqlConstant.RBK)
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
.append(InfluxDbSqlConstant.AS)
|
||||||
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM);
|
.append(data.get(i).getItemName());
|
||||||
} else {
|
} else {
|
||||||
sql.append(InfluxDbSqlConstant.MAX)
|
sql.append(InfluxDbSqlConstant.MAX)
|
||||||
.append(InfluxDbSqlConstant.LBK)
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
.append(data.get(i).getTemplateName())
|
.append(data.get(i).getTemplateName())
|
||||||
.append(InfluxDbSqlConstant.RBK)
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
.append(InfluxDbSqlConstant.AS)
|
||||||
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM).append(StrUtil.COMMA);
|
.append(data.get(i).getItemName()).append(StrUtil.COMMA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -698,15 +700,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
.append(InfluxDbSqlConstant.LBK)
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
.append(data.get(i).getTemplateName())
|
.append(data.get(i).getTemplateName())
|
||||||
.append(InfluxDbSqlConstant.RBK)
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
.append(InfluxDbSqlConstant.AS)
|
||||||
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM);
|
.append(data.get(i).getItemName());
|
||||||
} else {
|
} else {
|
||||||
sql.append(method)
|
sql.append(method)
|
||||||
.append(InfluxDbSqlConstant.LBK)
|
.append(InfluxDbSqlConstant.LBK)
|
||||||
.append(data.get(i).getTemplateName())
|
.append(data.get(i).getTemplateName())
|
||||||
.append(InfluxDbSqlConstant.RBK)
|
.append(InfluxDbSqlConstant.RBK)
|
||||||
.append(InfluxDbSqlConstant.AS).append(InfluxDbSqlConstant.DQM)
|
.append(InfluxDbSqlConstant.AS)
|
||||||
.append(data.get(i).getItemName()).append(InfluxDbSqlConstant.DQM).append(StrUtil.COMMA);
|
.append(data.get(i).getItemName()).append(StrUtil.COMMA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -759,22 +761,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
|
|
||||||
System.out.println(sql);
|
System.out.println(sql);
|
||||||
|
|
||||||
long l = System.currentTimeMillis();
|
List<Map<String, Object>> mapList = SqlRunner.DEFAULT.selectList(sql.toString());
|
||||||
|
if (CollUtil.isEmpty(mapList) || Objects.isNull(mapList.get(0))) {
|
||||||
|
|
||||||
List<Map<String, Object>> mapList = SqlRunner.db().selectList(sql.toString());
|
|
||||||
|
|
||||||
long la = System.currentTimeMillis();
|
|
||||||
System.out.println("当前sql结束花费时长:" + (la - l) + "ms");
|
|
||||||
if (CollUtil.isEmpty(mapList)) {
|
|
||||||
data = data.stream().peek(item -> item.setValue("/")).collect(Collectors.toList());
|
data = data.stream().peek(item -> item.setValue("/")).collect(Collectors.toList());
|
||||||
} else {
|
} else {
|
||||||
Map<String, Object> map = mapList.get(0);
|
Map<String, Object> map = convertKeysToUpperCase(mapList.get(0));
|
||||||
for (ReportTemplateDTO item : data) {
|
for (ReportTemplateDTO item : data) {
|
||||||
if (Objects.nonNull(map) && map.containsKey(item.getItemName())) {
|
if (map.containsKey(item.getItemName())) {
|
||||||
double v = Double.parseDouble(map.get(item.getItemName()).toString());
|
double v = Double.parseDouble(map.get(item.getItemName()).toString());
|
||||||
item.setValue(String.format("%.3f", v));
|
item.setValue(String.format("%.3f", v));
|
||||||
|
|
||||||
if (overLimitMap.containsKey(item.getLimitName())) {
|
if (overLimitMap.containsKey(item.getLimitName())) {
|
||||||
Float tagVal = overLimitMap.get(item.getLimitName());
|
Float tagVal = overLimitMap.get(item.getLimitName());
|
||||||
if (v > tagVal) {
|
if (v > tagVal) {
|
||||||
@@ -785,8 +780,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//判断是否越限
|
//判断是否越限
|
||||||
if (limitMap.size() != 0) {
|
if (!limitMap.isEmpty()) {
|
||||||
String key = item.getLimitName() + "#" + item.getStatMethod().toLowerCase() + "#pq_overlimit";
|
String key = item.getLimitName() + "#" + item.getStatMethod() + "#PQ_OVERLIMIT";
|
||||||
if (limitMap.containsKey(key)) {
|
if (limitMap.containsKey(key)) {
|
||||||
ReportTemplateDTO tem = limitMap.get(key);
|
ReportTemplateDTO tem = limitMap.get(key);
|
||||||
double limitVal = Double.parseDouble(tem.getValue());
|
double limitVal = Double.parseDouble(tem.getValue());
|
||||||
@@ -807,7 +802,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
endList.addAll(data);
|
endList.addAll(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
|
public static <V> Map<String, V> convertKeysToUpperCase(Map<String, V> originalMap) {
|
||||||
|
Map<String, V> newMap = new HashMap<>();
|
||||||
|
for (Map.Entry<String, V> entry : originalMap.entrySet()) {
|
||||||
|
newMap.put(entry.getKey().toUpperCase(), entry.getValue());
|
||||||
|
}
|
||||||
|
return newMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理
|
* 处理
|
||||||
@@ -819,8 +822,6 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
private void analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp, HttpServletResponse response) {
|
private void analyzeReport(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp, HttpServletResponse response) {
|
||||||
//定义一个线程集合
|
//定义一个线程集合
|
||||||
List<Future<?>> futures = new ArrayList<>();
|
List<Future<?>> futures = new ArrayList<>();
|
||||||
|
|
||||||
long begin = System.currentTimeMillis();
|
|
||||||
//指标
|
//指标
|
||||||
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
||||||
//限值
|
//限值
|
||||||
@@ -832,11 +833,12 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
|
jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
|
||||||
parseTemplate(jsonArray, reportTemplateDTOList, reportLimitList, terminalList);
|
parseTemplate(jsonArray, reportTemplateDTOList, reportLimitList, terminalList);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
if(e instanceof BusinessException){
|
||||||
|
throw new BusinessException(e.getMessage());
|
||||||
|
}else {
|
||||||
|
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
long temEnd = System.currentTimeMillis();
|
|
||||||
|
|
||||||
//处理指标是否合格
|
//处理指标是否合格
|
||||||
reportLimitList = new LinkedHashSet<>(reportLimitList).stream().sorted(Comparator.comparing(ReportTemplateDTO::getItemName)).collect(Collectors.toList());
|
reportLimitList = new LinkedHashSet<>(reportLimitList).stream().sorted(Comparator.comparing(ReportTemplateDTO::getItemName)).collect(Collectors.toList());
|
||||||
Map<String, Float> limitMap = overLimitDeal(reportLimitList, reportSearchParam);
|
Map<String, Float> limitMap = overLimitDeal(reportLimitList, reportSearchParam);
|
||||||
@@ -850,9 +852,6 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
Map<String, List<ReportTemplateDTO>> classMap = reportTemplateDTOList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getResourceId));
|
Map<String, List<ReportTemplateDTO>> classMap = reportTemplateDTOList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getResourceId));
|
||||||
//定义存放越限指标的map
|
//定义存放越限指标的map
|
||||||
Map<String, ReportTemplateDTO> assNoPassMap = new HashMap<>();
|
Map<String, ReportTemplateDTO> assNoPassMap = new HashMap<>();
|
||||||
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));
|
||||||
//每张表开启一个独立线程查询
|
//每张表开启一个独立线程查询
|
||||||
@@ -862,16 +861,15 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
//相别分组
|
//相别分组
|
||||||
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) -> {
|
||||||
|
|
||||||
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);
|
assSqlByMysql(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);
|
assSqlByMysql(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, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
assSqlByMysql(phaseVal, sql, endList, InfluxDbSqlConstant.AVG_WEB, 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);
|
assSqlByMysql(phaseVal, sql, endList, InfluxDbSqlConstant.CP95, reportSearchParam, limitTargetMapX, limitMap, assNoPassMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -886,20 +884,16 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
future.get(); // 这会阻塞直到任务完成或抛出异常
|
future.get(); // 这会阻塞直到任务完成或抛出异常
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
log.error("自定义报表多线程查询流程出错!错误信息{}",e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理指标最终判定合格还是不合格
|
//处理指标最终判定合格还是不合格
|
||||||
dealTargetResult(assNoPassMap, limitTargetMapX, endList);
|
dealTargetResult(assNoPassMap, limitTargetMapX, endList);
|
||||||
|
|
||||||
long dealEnd = System.currentTimeMillis();
|
|
||||||
System.out.println("模板解析时间:" + (temEnd - begin) / 1000 + "S");
|
|
||||||
System.out.println("查询数据库花费时间" + (dealEnd - deal) / 1000 + "S");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(endList)) {
|
if (CollUtil.isNotEmpty(endList)) {
|
||||||
long jie = System.currentTimeMillis();
|
|
||||||
//数据单位信息
|
//数据单位信息
|
||||||
Map<String, String> unit = unitMap(reportSearchParam);
|
Map<String, String> unit = unitMap(reportSearchParam);
|
||||||
//进行反向赋值到模板
|
//进行反向赋值到模板
|
||||||
@@ -909,11 +903,10 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
Map<String, String> finalTerminalMap;
|
Map<String, String> finalTerminalMap;
|
||||||
if (CollUtil.isNotEmpty(terminalList)) {
|
if (CollUtil.isNotEmpty(terminalList)) {
|
||||||
finalTerminalMap = commTerminalGeneralClient.getCustomDetailByLineId(reportSearchParam.getLineId()).getData();
|
finalTerminalMap = commTerminalGeneralClient.getCustomDetailByLineId(reportSearchParam.getLineId()).getData();
|
||||||
|
convertKeysToUpperCase(finalTerminalMap);
|
||||||
}else {
|
}else {
|
||||||
finalTerminalMap = new HashMap<>();
|
finalTerminalMap = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//2、把itemName的value赋给v和m
|
//2、把itemName的value赋给v和m
|
||||||
jsonArray.forEach(item -> {
|
jsonArray.forEach(item -> {
|
||||||
JSONObject jsonObject = (JSONObject) item;
|
JSONObject jsonObject = (JSONObject) item;
|
||||||
@@ -928,7 +921,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
|
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
|
||||||
if (v.charAt(0) == '$' && v.contains("#")) {
|
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||||
String str = "";
|
String str = "";
|
||||||
List<ReportTemplateDTO> rDto = assMap.get(v.replace("$", ""));
|
List<ReportTemplateDTO> rDto = assMap.get(v.replace("$", "").toUpperCase());
|
||||||
if (Objects.nonNull(rDto)) {
|
if (Objects.nonNull(rDto)) {
|
||||||
str = rDto.get(0).getValue();
|
str = rDto.get(0).getValue();
|
||||||
//没有值,赋"/"
|
//没有值,赋"/"
|
||||||
@@ -943,7 +936,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
} else if (v.charAt(0) == '%' && v.contains("#")) {
|
} else if (v.charAt(0) == '%' && v.contains("#")) {
|
||||||
//指标合格情况
|
//指标合格情况
|
||||||
String str = "";
|
String str = "";
|
||||||
List<ReportTemplateDTO> rDto = assMap.get(v.replace("%", ""));
|
List<ReportTemplateDTO> rDto = assMap.get(v.replace("%", "").toUpperCase());
|
||||||
if (Objects.nonNull(rDto)) {
|
if (Objects.nonNull(rDto)) {
|
||||||
str = rDto.get(0).getValue();
|
str = rDto.get(0).getValue();
|
||||||
//没有值,赋"/"
|
//没有值,赋"/"
|
||||||
@@ -957,16 +950,10 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
} else if (v.charAt(0) == '&') {
|
} else if (v.charAt(0) == '&') {
|
||||||
//结论
|
//结论
|
||||||
String tem = v.replace("&", "");
|
String tem = v.replace("&", "").toUpperCase();
|
||||||
if (Objects.nonNull(finalTerminalMap)) {
|
if (Objects.nonNull(finalTerminalMap)) {
|
||||||
if ("statis_time".equals(tem)) {
|
if ("STATIS_TIME".equals(tem)) {
|
||||||
//如何时间是大于当前时间则用当前时间
|
//如何时间是大于当前时间则用当前时间
|
||||||
// String localTime = InfluxDbSqlConstant.END_TIME;
|
|
||||||
// LocalDate localDate = LocalDateTimeUtil.parseDate(reportSearchParam.getEndTime(), DatePattern.NORM_DATE_PATTERN);
|
|
||||||
// if(LocalDate.now().isEqual(localDate)){
|
|
||||||
// localTime =" "+ LocalTime.now().format(DatePattern.NORM_TIME_FORMATTER);
|
|
||||||
// }
|
|
||||||
// son.set("v", reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + reportSearchParam.getEndTime() + localTime);
|
|
||||||
String localTime = InfluxDbSqlConstant.END_TIME;
|
String localTime = InfluxDbSqlConstant.END_TIME;
|
||||||
LocalDate localDate = LocalDateTimeUtil.parseDate(reportSearchParam.getEndTime(), DatePattern.NORM_DATE_PATTERN);
|
LocalDate localDate = LocalDateTimeUtil.parseDate(reportSearchParam.getEndTime(), DatePattern.NORM_DATE_PATTERN);
|
||||||
LocalDate nowDate = LocalDate.now();
|
LocalDate nowDate = LocalDate.now();
|
||||||
@@ -992,32 +979,20 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
long jieEnd = System.currentTimeMillis();
|
|
||||||
|
|
||||||
System.out.println("组装信息耗时 " + (jieEnd - jie) / 1000 + "S");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
long daochu = System.currentTimeMillis();
|
|
||||||
//导出自定义报表
|
//导出自定义报表
|
||||||
downReport(jsonArray, response);
|
downReport(jsonArray, response);
|
||||||
long daochuEnd = System.currentTimeMillis();
|
|
||||||
System.out.println("导出耗时 " + (daochuEnd - daochu) / 1000 + "S");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解析模板
|
* 解析模板
|
||||||
*
|
|
||||||
* @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 {
|
||||||
//通过文件服务器获取
|
//通过文件服务器获取
|
||||||
|
|
||||||
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");
|
||||||
@@ -1034,47 +1009,46 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
v = v.replace("$", "");
|
v = v.replace("$", "");
|
||||||
//封装ReportTemplateDTO
|
//封装ReportTemplateDTO
|
||||||
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
||||||
reportTemplateDTO.setItemName(v);
|
reportTemplateDTO.setItemName(v.toUpperCase());
|
||||||
//根据#分割数据
|
//根据#分割数据
|
||||||
String[] vItem = v.split("#");
|
String[] vItem = v.split("#");
|
||||||
if (vItem.length == 5) {
|
if (vItem.length == 5) {
|
||||||
//$HA[_25]#B#max#classId$
|
//$HA[_25]#B#max#classId$
|
||||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
reportTemplateDTO.setTemplateName(vItem[0].toUpperCase());
|
||||||
reportTemplateDTO.setPhase(vItem[1].substring(0, 1));
|
reportTemplateDTO.setPhase(vItem[1].substring(0, 1).toUpperCase());
|
||||||
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
|
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
|
||||||
reportTemplateDTO.setResourceId(vItem[3]);
|
reportTemplateDTO.setResourceId(vItem[3].toUpperCase());
|
||||||
reportTemplateDTO.setLimitName(vItem[4]);
|
reportTemplateDTO.setLimitName(vItem[4].toUpperCase());
|
||||||
} else if (vItem.length == 4) {
|
} else if (vItem.length == 4) {
|
||||||
//$HA[_25]#max#classId$
|
//$HA[_25]#max#classId$
|
||||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
reportTemplateDTO.setTemplateName(vItem[0].toUpperCase());
|
||||||
reportTemplateDTO.setPhase("M");
|
reportTemplateDTO.setPhase("M");
|
||||||
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
||||||
reportTemplateDTO.setResourceId(vItem[2]);
|
reportTemplateDTO.setResourceId(vItem[2].toUpperCase());
|
||||||
reportTemplateDTO.setLimitName(vItem[3]);
|
reportTemplateDTO.setLimitName(vItem[3].toUpperCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
reportTemplateDTOList.add(reportTemplateDTO);
|
reportTemplateDTOList.add(reportTemplateDTO);
|
||||||
} else if (v.charAt(0) == '%' && v.contains("#")) {
|
} else if (v.charAt(0) == '%' && v.contains("#")) {
|
||||||
//封装ReportTemplateDTO
|
//封装ReportTemplateDTO
|
||||||
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
||||||
|
|
||||||
v = v.replace("%", "");
|
v = v.replace("%", "");
|
||||||
reportTemplateDTO.setItemName(v);
|
reportTemplateDTO.setItemName(v.toUpperCase());
|
||||||
//根据#分割数据
|
//根据#分割数据
|
||||||
String[] vItem = v.split("#");
|
String[] vItem = v.split("#");
|
||||||
if (vItem.length == 3) {
|
if (vItem.length == 3) {
|
||||||
//$HA[_25]#B#max#classId$
|
//$HA[_25]#B#max#classId$
|
||||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
reportTemplateDTO.setTemplateName(vItem[0].toUpperCase());
|
||||||
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
||||||
reportTemplateDTO.setResourceId(vItem[2]);
|
reportTemplateDTO.setResourceId(vItem[2].toUpperCase());
|
||||||
}
|
}
|
||||||
reportLimitList.add(reportTemplateDTO);
|
reportLimitList.add(reportTemplateDTO);
|
||||||
} else if (v.charAt(0) == '&') {
|
} else if (v.charAt(0) == '&') {
|
||||||
//封装ReportTemplateDTO
|
//封装ReportTemplateDTO
|
||||||
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
||||||
v = v.replace("&", "");
|
v = v.replace("&", "");
|
||||||
reportTemplateDTO.setItemName(v);
|
reportTemplateDTO.setItemName(v.toUpperCase());
|
||||||
reportTemplateDTO.setTemplateName(v);
|
reportTemplateDTO.setTemplateName(v.toUpperCase());
|
||||||
terminalList.add(reportTemplateDTO);
|
terminalList.add(reportTemplateDTO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1097,18 +1071,18 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
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(InfluxDbSqlConstant.SELECT);
|
||||||
for (int i = 0; i < reportLimitList.size(); i++) {
|
for (int i = 0; i < reportLimitList.size(); i++) {
|
||||||
if (i == reportLimitList.size() - 1) {
|
if (i == reportLimitList.size() - 1) {
|
||||||
sql.append(reportLimitList.get(i).getTemplateName());
|
sql.append(reportLimitList.get(i).getTemplateName()).append(StrUtil.C_SPACE);
|
||||||
} else {
|
} else {
|
||||||
sql.append(reportLimitList.get(i).getTemplateName()).append(",");
|
sql.append(reportLimitList.get(i).getTemplateName()).append(StrUtil.COMMA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sql.append(" from ").append(reportLimitList.get(0).getResourceId()).append(" where id ='").append(reportSearchParam.getLineId()).append("'");
|
sql.append(InfluxDbSqlConstant.FROM).append(reportLimitList.get(0).getResourceId()).append(InfluxDbSqlConstant.WHERE).append("id ='").append(reportSearchParam.getLineId()).append("'");
|
||||||
limitMap = excelRptTempMapper.dynamicSqlMap(sql.toString());
|
limitMap = excelRptTempMapper.dynamicSqlMap(sql.toString());
|
||||||
if (Objects.isNull(limitMap)) {
|
if (Objects.isNull(limitMap)) {
|
||||||
throw new BusinessException("当前测点限值缺失!");
|
throw new BusinessException("当前报表测点限值缺失!");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ReportTemplateDTO item : reportLimitList) {
|
for (ReportTemplateDTO item : reportLimitList) {
|
||||||
@@ -1117,6 +1091,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
limitMap = convertKeysToUpperCase(limitMap);
|
||||||
return limitMap;
|
return limitMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1570,7 +1545,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
(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".toUpperCase().equals(val.getTemplateName()) || "Freq_Dev".toUpperCase().equals(val.getTemplateName())) {
|
||||||
val.setValue("±" + val.getValue());
|
val.setValue("±" + val.getValue());
|
||||||
}
|
}
|
||||||
if (val.getOverLimitFlag() == 1) {
|
if (val.getOverLimitFlag() == 1) {
|
||||||
@@ -1626,14 +1601,14 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
//$HA[_25]#B#max#classId$
|
//$HA[_25]#B#max#classId$
|
||||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||||
reportTemplateDTO.setPhase(vItem[1]);
|
reportTemplateDTO.setPhase(vItem[1]);
|
||||||
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
|
reportTemplateDTO.setStatMethod(vItem[2]);
|
||||||
reportTemplateDTO.setResourceId(vItem[3]);
|
reportTemplateDTO.setResourceId(vItem[3]);
|
||||||
reportTemplateDTO.setLimitName(vItem[4]);
|
reportTemplateDTO.setLimitName(vItem[4]);
|
||||||
} else if (vItem.length == 4) {
|
} else if (vItem.length == 4) {
|
||||||
//$HA[_25]#max#classId$
|
//$HA[_25]#max#classId$
|
||||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||||
reportTemplateDTO.setPhase("M");
|
reportTemplateDTO.setPhase("M");
|
||||||
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
reportTemplateDTO.setStatMethod(vItem[1]);
|
||||||
reportTemplateDTO.setResourceId(vItem[2]);
|
reportTemplateDTO.setResourceId(vItem[2]);
|
||||||
reportTemplateDTO.setLimitName(vItem[3]);
|
reportTemplateDTO.setLimitName(vItem[3]);
|
||||||
}
|
}
|
||||||
@@ -1650,7 +1625,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
|||||||
if (vItem.length == 3) {
|
if (vItem.length == 3) {
|
||||||
//$HA[_25]#B#max#classId$
|
//$HA[_25]#B#max#classId$
|
||||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||||
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
reportTemplateDTO.setStatMethod(vItem[1]);
|
||||||
reportTemplateDTO.setResourceId(vItem[2]);
|
reportTemplateDTO.setResourceId(vItem[2]);
|
||||||
}
|
}
|
||||||
reportLimitList.add(reportTemplateDTO);
|
reportLimitList.add(reportTemplateDTO);
|
||||||
|
|||||||
Reference in New Issue
Block a user