达梦兼容调整

This commit is contained in:
2025-04-17 15:15:07 +08:00
parent a4b1211038
commit 8306361df0
2 changed files with 76 additions and 72 deletions

View File

@@ -118,7 +118,13 @@ public class CustomReportServiceImpl implements CustomReportService {
private final WlRecordFeignClient wlRecordFeignClient;
private final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
private final String CELL_DATA = "celldata";
private final String V = "v";
private final String STR_ONE = "#";
private final String STR_TWO = "$";
private final String STR_THREE = "&";
private final String STR_FOUR = "%";
@Override
public void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response) {
@@ -329,10 +335,10 @@ public class CustomReportServiceImpl implements CustomReportService {
if (val.get(0).getHarmStart() == 1) {
count = i + 0.5;
reportTreeItem.setShowName(count + "" + val.get(0).getShowName());
reportTreeItem.setName("%" + one + count + "#" + val.get(0).getFormula() + "#" + val.get(0).getLimitTable() + "%");
reportTreeItem.setName(STR_FOUR + one + count + STR_ONE + val.get(0).getFormula() + STR_ONE + val.get(0).getLimitTable() + STR_FOUR);
} else {
reportTreeItem.setShowName(i + "" + val.get(0).getShowName());
reportTreeItem.setName("%" + one + i + "#" + val.get(0).getFormula() + "#" + val.get(0).getLimitTable() + "%");
reportTreeItem.setName(STR_FOUR + one + i + STR_ONE + val.get(0).getFormula() + STR_ONE + val.get(0).getLimitTable() + STR_FOUR);
}
reportTreeItem.setFlag(1);
@@ -340,7 +346,7 @@ public class CustomReportServiceImpl implements CustomReportService {
}
reportTreeVO.setChildren(temList);
} else {
reportTreeVO.setName("%" + val.get(0).getLimitName() + "#" + val.get(0).getLimitTable() + "%" + val.get(0).getFormula() + "%");
reportTreeVO.setName(STR_FOUR + val.get(0).getLimitName() + STR_ONE + val.get(0).getLimitTable() + STR_FOUR + val.get(0).getFormula() + STR_FOUR);
reportTreeVO.setFlag(1);
}
@@ -359,7 +365,7 @@ public class CustomReportServiceImpl implements CustomReportService {
list.forEach(item -> {
ReportTreeVO reportTreeVO = new ReportTreeVO();
reportTreeVO.setId(item.getId());
reportTreeVO.setName("&" + item.getName() + "&");
reportTreeVO.setName(STR_THREE + item.getName() + STR_THREE);
reportTreeVO.setFlag(1);
reportTreeVO.setShowName(item.getShowName());
result.add(reportTreeVO);
@@ -402,14 +408,14 @@ public class CustomReportServiceImpl implements CustomReportService {
ReportTreeVO reportTreeStat = new ReportTreeVO();
String tem = "";
if (Objects.nonNull(item.getLimitName())) {
tem = "#" + item.getLimitName();
tem = STR_ONE + item.getLimitName();
} else {
tem = "#NO";
}
if (StrUtil.isNotBlank(twoKey)) {
reportTreeStat.setName("$" + oneKey + "#" + twoKey + "#" + statItem + "#" + item.getResourcesId().trim() + tem.trim() + "$");
reportTreeStat.setName(STR_TWO + oneKey + STR_ONE + twoKey + STR_ONE + statItem + STR_ONE + item.getResourcesId().trim() + tem.trim() + STR_TWO);
} else {
reportTreeStat.setName("$" + oneKey + "#" + statItem + "#" + item.getResourcesId().trim() + tem.trim() + "$");
reportTreeStat.setName(STR_TWO + oneKey + STR_ONE + statItem + STR_ONE + item.getResourcesId().trim() + tem.trim() + STR_TWO);
}
reportTreeStat.setShowName(statItem);
@@ -490,11 +496,11 @@ public class CustomReportServiceImpl implements CustomReportService {
}
//三项不平衡度
if (s.equals(DicDataEnum.UNBALANCE.getCode())) {
unit.put(s + "#v", "%");
unit.put(s + "#v", STR_FOUR);
unit.put(s + "#vPos", deviceUnit.getPositiveV());
unit.put(s + "#vNeg", deviceUnit.getNoPositiveV());
unit.put(s + "#vZero", deviceUnit.getNoPositiveV());
unit.put(s + "#i", "%");
unit.put(s + "#i", STR_FOUR);
unit.put(s + "#iPos", "A");
unit.put(s + "#iNeg", "A");
unit.put(s + "#iZero", "A");
@@ -640,7 +646,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//判断是否越限
if (limitMap.size() != 0) {
String key = item.getLimitName() + "#" + item.getStatMethod().toLowerCase() + "#pq_overlimit";
String key = item.getLimitName() + STR_ONE + item.getStatMethod().toLowerCase() + "#pq_overlimit";
if (limitMap.containsKey(key)) {
ReportTemplateDTO tem = limitMap.get(key);
double limitVal = Double.parseDouble(tem.getValue());
@@ -781,7 +787,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//判断是否越限
if (!limitMap.isEmpty()) {
String key = item.getLimitName() + "#" + item.getStatMethod() + "#PQ_OVERLIMIT";
String key = item.getLimitName() + STR_ONE + item.getStatMethod() + "#PQ_OVERLIMIT";
if (limitMap.containsKey(key)) {
ReportTemplateDTO tem = limitMap.get(key);
double limitVal = Double.parseDouble(tem.getValue());
@@ -891,8 +897,6 @@ public class CustomReportServiceImpl implements CustomReportService {
//处理指标最终判定合格还是不合格
dealTargetResult(assNoPassMap, limitTargetMapX, endList);
}
if (CollUtil.isNotEmpty(endList)) {
//数据单位信息
Map<String, String> unit = unitMap(reportSearchParam);
@@ -910,47 +914,47 @@ public class CustomReportServiceImpl implements CustomReportService {
//2、把itemName的value赋给v和m
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
JSONArray itemArr = (JSONArray) jsonObject.get(CELL_DATA);
itemArr.forEach((it) -> {
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
//获取到1列
JSONObject data = (JSONObject) it;
JSONObject son = (JSONObject) data.get("v");
if (son.containsKey("v")) {
String v = son.getStr("v");
JSONObject son = (JSONObject) data.get(V);
if (son.containsKey(V)) {
String v = son.getStr(V);
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
if (v.charAt(0) == '$' && v.contains("#")) {
if (v.charAt(0) == '$' && v.contains(STR_ONE)) {
String str = "";
List<ReportTemplateDTO> rDto = assMap.get(v.replace("$", "").toUpperCase());
List<ReportTemplateDTO> rDto = assMap.get(v.replace(STR_TWO, "").toUpperCase());
if (Objects.nonNull(rDto)) {
str = rDto.get(0).getValue();
//没有值,赋"/"
if (StringUtils.isBlank(str)) {
str = "/";
}
son.set("v", str);
son.set(V, str);
if (Objects.nonNull(rDto.get(0).getOverLimitFlag()) && rDto.get(0).getOverLimitFlag() == 1) {
son.set("fc", "#990000");
}
}
} else if (v.charAt(0) == '%' && v.contains("#")) {
} else if (v.charAt(0) == '%' && v.contains(STR_ONE)) {
//指标合格情况
String str = "";
List<ReportTemplateDTO> rDto = assMap.get(v.replace("%", "").toUpperCase());
List<ReportTemplateDTO> rDto = assMap.get(v.replace(STR_FOUR, "").toUpperCase());
if (Objects.nonNull(rDto)) {
str = rDto.get(0).getValue();
//没有值,赋"/"
if (StringUtils.isBlank(str)) {
str = "/";
}
son.set("v", str);
son.set(V, str);
if ("不合格".equals(str)) {
son.set("fc", "#990000");
}
}
} else if (v.charAt(0) == '&') {
//结论
String tem = v.replace("&", "").toUpperCase();
String tem = v.replace(STR_THREE, "").toUpperCase();
if (Objects.nonNull(finalTerminalMap)) {
if ("STATIS_TIME".equals(tem)) {
//如何时间是大于当前时间则用当前时间
@@ -958,21 +962,21 @@ public class CustomReportServiceImpl implements CustomReportService {
LocalDate localDate = LocalDateTimeUtil.parseDate(reportSearchParam.getEndTime(), DatePattern.NORM_DATE_PATTERN);
LocalDate nowDate = LocalDate.now();
if (nowDate.isAfter(localDate)) {
son.set("v", reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + reportSearchParam.getEndTime() + localTime);
son.set(V, reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + reportSearchParam.getEndTime() + localTime);
} else {
localTime = " " + LocalTime.now().format(DatePattern.NORM_TIME_FORMATTER);
son.set("v", reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + nowDate + localTime);
son.set(V, reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + nowDate + localTime);
}
} else {
//台账信息
son.set("v", finalTerminalMap.getOrDefault(tem, "/"));
son.set(V, finalTerminalMap.getOrDefault(tem, "/"));
}
}
}
//解决数据单位问题 @指标#类型@
if (v.charAt(0) == '@' && v.contains("#")) {
if (v.charAt(0) == '@' && v.contains(STR_ONE)) {
String replace = v.replace("@", "");
son.set("v", unit.getOrDefault(replace, "/"));
son.set(V, unit.getOrDefault(replace, "/"));
}
}
@@ -995,23 +999,23 @@ public class CustomReportServiceImpl implements CustomReportService {
//通过文件服务器获取
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
JSONArray itemArr = (JSONArray) jsonObject.get(CELL_DATA);
itemArr.forEach((it) -> {
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
//获取到1列
JSONObject data = (JSONObject) it;
JSONObject son = (JSONObject) data.get("v");
if (son.containsKey("v")) {
String v = son.getStr("v");
JSONObject son = (JSONObject) data.get(V);
if (son.containsKey(V)) {
String v = son.getStr(V);
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
if (v.charAt(0) == '$' && v.contains("#")) {
if (v.charAt(0) == '$' && v.contains(STR_ONE)) {
//剔除前后$
v = v.replace("$", "");
v = v.replace(STR_TWO, "");
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
reportTemplateDTO.setItemName(v.toUpperCase());
//根据#分割数据
String[] vItem = v.split("#");
String[] vItem = v.split(STR_ONE);
if (vItem.length == 5) {
//$HA[_25]#B#max#classId$
reportTemplateDTO.setTemplateName(vItem[0].toUpperCase());
@@ -1029,13 +1033,13 @@ public class CustomReportServiceImpl implements CustomReportService {
}
reportTemplateDTOList.add(reportTemplateDTO);
} else if (v.charAt(0) == '%' && v.contains("#")) {
} else if (v.charAt(0) == '%' && v.contains(STR_ONE)) {
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
v = v.replace("%", "");
v = v.replace(STR_FOUR, "");
reportTemplateDTO.setItemName(v.toUpperCase());
//根据#分割数据
String[] vItem = v.split("#");
String[] vItem = v.split(STR_ONE);
if (vItem.length == 3) {
//$HA[_25]#B#max#classId$
reportTemplateDTO.setTemplateName(vItem[0].toUpperCase());
@@ -1046,7 +1050,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} else if (v.charAt(0) == '&') {
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
v = v.replace("&", "");
v = v.replace(STR_THREE, "");
reportTemplateDTO.setItemName(v.toUpperCase());
reportTemplateDTO.setTemplateName(v.toUpperCase());
terminalList.add(reportTemplateDTO);
@@ -1334,7 +1338,7 @@ public class CustomReportServiceImpl implements CustomReportService {
if (Objects.nonNull(entry.getValue()) && !entry.getKey().equals("time")) {
String key = entry.getKey();
double val = (double) entry.getValue();
String zi = key.substring(0, key.indexOf("#"));
String zi = key.substring(0, key.indexOf(STR_ONE));
String[] temStrArr = zi.split("_");
boolean flag = isInteger(temStrArr[temStrArr.length-1]);
if(flag){
@@ -1377,7 +1381,7 @@ public class CustomReportServiceImpl implements CustomReportService {
}
//结论判断是否越限
String key = item.getLimitName() + "#" + item.getStatMethod().toLowerCase() + "#pq_overlimit";
String key = item.getLimitName() + STR_ONE + item.getStatMethod().toLowerCase() + "#pq_overlimit";
if (limitMap.containsKey(key)) {
ReportTemplateDTO tem = limitMap.get(key);
double limitVal = Double.parseDouble(tem.getValue());
@@ -1476,59 +1480,59 @@ public class CustomReportServiceImpl implements CustomReportService {
jsonArray, Map<String, List<ReportTemplateDTO>> assMap, Map<String, String> unit,Map<String,String> finalTerminalMap) {
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
JSONArray itemArr = (JSONArray) jsonObject.get(CELL_DATA);
itemArr.forEach((it) -> {
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
//获取到1列
JSONObject data = (JSONObject) it;
JSONObject son = (JSONObject) data.get("v");
if (son.containsKey("v")) {
String v = son.getStr("v");
JSONObject son = (JSONObject) data.get(V);
if (son.containsKey(V)) {
String v = son.getStr(V);
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
if (v.charAt(0) == '$' && v.contains("#")) {
if (v.charAt(0) == '$' && v.contains(STR_ONE)) {
String str = "";
List<ReportTemplateDTO> rDto = assMap.get(v.replace("$", ""));
List<ReportTemplateDTO> rDto = assMap.get(v.replace(STR_TWO, ""));
if (Objects.nonNull(rDto)) {
str = rDto.get(0).getValue();
//没有值,赋"/"
if (StringUtils.isBlank(str)) {
str = "/";
}
son.set("v", str);
son.set(V, str);
if (Objects.nonNull(rDto.get(0).getOverLimitFlag()) && rDto.get(0).getOverLimitFlag() == 1) {
son.set("fc", "#990000");
}
}
} else if (v.charAt(0) == '%' && v.contains("#")) {
} else if (v.charAt(0) == '%' && v.contains(STR_ONE)) {
//指标合格情况
String str = "";
List<ReportTemplateDTO> rDto = assMap.get(v.replace("%", ""));
List<ReportTemplateDTO> rDto = assMap.get(v.replace(STR_FOUR, ""));
if (Objects.nonNull(rDto)) {
str = rDto.get(0).getValue();
//没有值,赋"/"
if (StringUtils.isBlank(str)) {
str = "/";
}
son.set("v", str);
son.set(V, str);
if ("不合格".equals(str)) {
son.set("fc", "#990000");
}
}
} else if (v.charAt(0) == '&') {
//结论
String tem = v.replace("&", "");
String tem = v.replace(STR_THREE, "");
if (Objects.nonNull(finalTerminalMap)) {
if ("statis_time".equals(tem)) {
// son.set("v", reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + reportSearchParam.getEndTime() + InfluxDbSqlConstant.END_TIME);
// son.set(V, reportSearchParam.getStartTime() + InfluxDbSqlConstant.START_TIME + "_" + reportSearchParam.getEndTime() + InfluxDbSqlConstant.END_TIME);
} else {
//台账信息
son.set("v", finalTerminalMap.getOrDefault(tem, "/"));
son.set(V, finalTerminalMap.getOrDefault(tem, "/"));
}
}
} else if (v.charAt(0) == '@' && v.contains("#")) {
} else if (v.charAt(0) == '@' && v.contains(STR_ONE)) {
//解决数据单位问题 @指标#类型@
String replace = v.replace("@", "");
son.set("v", unit.getOrDefault(replace, "/"));
son.set(V, unit.getOrDefault(replace, "/"));
}
}
@@ -1580,23 +1584,23 @@ public class CustomReportServiceImpl implements CustomReportService {
jsonArray.forEach(item -> {
JSONObject jsonObject = (JSONObject) item;
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
JSONArray itemArr = (JSONArray) jsonObject.get(CELL_DATA);
itemArr.forEach((it) -> {
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
//获取到1列
JSONObject data = (JSONObject) it;
JSONObject son = (JSONObject) data.get("v");
if (son.containsKey("v")) {
String v = son.getStr("v");
JSONObject son = (JSONObject) data.get(V);
if (son.containsKey(V)) {
String v = son.getStr(V);
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
if (v.charAt(0) == '$' && v.contains("#")) {
if (v.charAt(0) == '$' && v.contains(STR_ONE)) {
//剔除前后$
v = v.replace("$", "");
v = v.replace(STR_TWO, "");
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
reportTemplateDTO.setItemName(v);
//根据#分割数据
String[] vItem = v.split("#");
String[] vItem = v.split(STR_ONE);
if (vItem.length == 5) {
//$HA[_25]#B#max#classId$
reportTemplateDTO.setTemplateName(vItem[0]);
@@ -1614,14 +1618,14 @@ public class CustomReportServiceImpl implements CustomReportService {
}
reportTemplateDTOList.add(reportTemplateDTO);
} else if (v.charAt(0) == '%' && v.contains("#")) {
} else if (v.charAt(0) == '%' && v.contains(STR_ONE)) {
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
v = v.replace("%", "");
v = v.replace(STR_FOUR, "");
reportTemplateDTO.setItemName(v);
//根据#分割数据
String[] vItem = v.split("#");
String[] vItem = v.split(STR_ONE);
if (vItem.length == 3) {
//$HA[_25]#B#max#classId$
reportTemplateDTO.setTemplateName(vItem[0]);
@@ -1632,7 +1636,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} else if (v.charAt(0) == '&') {
//封装ReportTemplateDTO
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
v = v.replace("&", "");
v = v.replace(STR_THREE, "");
reportTemplateDTO.setItemName(v);
reportTemplateDTO.setTemplateName(v);
terminalList.add(reportTemplateDTO);