异常数据功能调整

This commit is contained in:
2025-07-08 11:01:20 +08:00
parent 6bb9d19765
commit 4072cc7517
3 changed files with 73 additions and 25 deletions

View File

@@ -16,7 +16,9 @@ public class DetailAbnormalVO {
private String monitorName;
private Long timeSum;
private String timeSum;
private String errCount;
private String targetKey;

View File

@@ -151,7 +151,7 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
long count = lineList.stream().map(DataVerify::getTime).distinct().count();
DetailAbnormalVO detailAbnormalVO = new DetailAbnormalVO();
LineDevGetDTO lineDevGetDTO = lineDetailMap.get(lineId);
detailAbnormalVO.setTimeSum(lineDevGetDTO.getTimeInterval() * count);
detailAbnormalVO.setTimeSum("");
detailAbnormalVO.setDate(dateStr);
detailAbnormalVO.setMonitorName(lineDevGetDTO.getPointName());
detailAbnormalVO.setMonitorId(lineDevGetDTO.getPointId());
@@ -375,7 +375,7 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
detailAbnormalVO.setMonitorId(lineId);
detailAbnormalVO.setDate(date.format(DATE_FORMAT));
detailAbnormalVO.setMonitorName(lineInfoVO.getPointName());
detailAbnormalVO.setTimeSum((long) timeSet.size() * timeInterval);
detailAbnormalVO.setTimeSum("");
detailAbnormalVO.setTargetKey(monitorBaseParam.getTargetKey());
result.add(detailAbnormalVO);
});

View File

@@ -177,7 +177,6 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
@Override
public List<DetailAbnormalVO> monitorAbnormalTable(MonitorBaseParam monitorBaseParam) {
List<DetailAbnormalVO> result = new ArrayList<>();
//参数校验
Map<String, PqReasonableRangeDto> rangeMap= getStandRange();
if(StrUtil.isNotBlank(monitorBaseParam.getTargetKey())) {
@@ -264,56 +263,84 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
lambdaQueryWrapper.eq(PqDataVerifyBak::getPf,1);
break;
default:
log.error("未匹配到异常数据指标");
log.error("方法{}未匹配到异常数据指标","monitorAbnormalTable");
break;
}
}
List<PqDataVerifyBak> dataVerifyList = this.list(lambdaQueryWrapper);
for (PqDataVerifyBak pqDataVerifyBak : dataVerifyList) {
Set<String> set = new HashSet<>();
try (InputStream fileStream = fileStorageUtil.getFileStream(pqDataVerifyBak.getPath())) {
JSONArray jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
String[] errorTimeCount = {"0"};
Long [] errAllCount = {0L};
jsonArray.forEach(it -> {
JSONObject targetJson = (JSONObject) it;
if (StrUtil.isNotBlank(monitorBaseParam.getTargetKey())) {
if (targetJson.containsKey(monitorBaseParam.getTargetKey())) {
JSONArray innerJson = targetJson.getJSONArray(monitorBaseParam.getTargetKey());
for(Object oJson : innerJson){
JSONObject jsonObjectTem = (JSONObject) oJson;
JSONArray list = jsonObjectTem.getJSONArray("list");
list.forEach(listItem -> {
JSONObject object = (JSONObject) listItem;
JSONArray timeArr = object.getJSONArray("time");
timeArr.forEach(timeJson -> set.add((String) timeJson));
});
PqReasonableRangeDto dto = rangeMap.get(monitorBaseParam.getTargetKey());
if(Objects.nonNull(dto.getHarmStart()) && Objects.nonNull(dto.getHarmEnd())){
errorTimeCount[0] = targetJson.get("errorTimes").toString();
for(Object oJson : innerJson){
JSONObject jsonObjectTem = (JSONObject) oJson;
JSONArray list = jsonObjectTem.getJSONArray("list");
list.forEach(listItem -> {
JSONObject object = (JSONObject) listItem;
long errCount = Long.parseLong(object.get("errorCounts").toString());
errAllCount[0] +=errCount;
});
}
}else {
for(Object oJson : innerJson){
JSONObject jsonObjectTem = (JSONObject) oJson;
JSONArray list = jsonObjectTem.getJSONArray("list");
list.forEach(listItem -> {
JSONObject object = (JSONObject) listItem;
long errCount = Long.parseLong(object.get("errorCounts").toString());
errAllCount[0] +=errCount;
});
errorTimeCount[0] = jsonObjectTem.get("errorTimes").toString();
}
}
}
} else {
rangeMap.forEach((rangeKey, val) -> {
if (targetJson.containsKey(rangeKey)) {
JSONArray innerJson = targetJson.getJSONArray(rangeKey);
for(Object oJson : innerJson){
for(Object oJson : innerJson){
JSONObject jsonObjectTem = (JSONObject) oJson;
JSONArray list = jsonObjectTem.getJSONArray("list");
list.forEach(listItem -> {
JSONObject object = (JSONObject) listItem;
JSONArray timeArr = object.getJSONArray("time");
timeArr.forEach(timeJson -> set.add((String) timeJson));
long errCount = Long.parseLong(object.get("errorCounts").toString());
errAllCount[0] +=errCount;
});
}
}
});
if (targetJson.containsKey("lineErrorTimes")) {
errorTimeCount[0] = targetJson.get("lineErrorTimes").toString();
}
}
});
DetailAbnormalVO detailAbnormalVO = new DetailAbnormalVO();
LineDevGetDTO lineDevGetDTO = lineDetailMap.get(pqDataVerifyBak.getLineId());
detailAbnormalVO.setTimeSum((long) lineDevGetDTO.getTimeInterval() * set.size());
detailAbnormalVO.setTimeSum(errorTimeCount[0]);
detailAbnormalVO.setDate(pqDataVerifyBak.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
detailAbnormalVO.setMonitorName(lineDevGetDTO.getPointName());
detailAbnormalVO.setMonitorId(lineDevGetDTO.getPointId());
detailAbnormalVO.setTargetKey("");
detailAbnormalVO.setTargetKey(monitorBaseParam.getTargetKey());
detailAbnormalVO.setErrCount(errAllCount[0].toString());
result.add(detailAbnormalVO);
} catch (BusinessException b){
//文件为空时候的特殊处理
DetailAbnormalVO detailAbnormalVO = new DetailAbnormalVO();
LineDevGetDTO lineDevGetDTO = lineDetailMap.get(pqDataVerifyBak.getLineId());
detailAbnormalVO.setTimeSum("/");
detailAbnormalVO.setDate(pqDataVerifyBak.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
detailAbnormalVO.setMonitorName(lineDevGetDTO.getPointName());
detailAbnormalVO.setMonitorId(lineDevGetDTO.getPointId());
detailAbnormalVO.setTargetKey(monitorBaseParam.getTargetKey());
result.add(detailAbnormalVO);
} catch (Exception e) {
throw new BusinessException("数据异常");
@@ -322,6 +349,7 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
return result;
}
@Override
public List<DetailAbnormalVO.DetailAbnormalInnerVO> monitorAbnormalTableDetail(MonitorBaseParam monitorBaseParam) {
Map<String, PqReasonableRangeDto> dtoMap = getStandRange();
@@ -340,6 +368,9 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
JSONArray jsonArray = new JSONArray(new JSONTokener(fileStream, new JSONConfig()));
for (Object it : jsonArray) {
JSONObject targetJson = (JSONObject) it;
if(targetJson.containsKey("lineErrorTimes")){
continue;
}
if (StrUtil.isNotBlank(monitorBaseParam.getTargetKey())) {
if (targetJson.containsKey(monitorBaseParam.getTargetKey())) {
resultDeal(dtoMap, monitorBaseParam.getTargetKey(), targetJson, result);
@@ -389,6 +420,11 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
return 0;
}
/**
* 处理json对象中list数组
*/
private void resultDeal(Map<String, PqReasonableRangeDto> dtoMap, String targetKey, JSONObject targetJson, List<DetailAbnormalVO.DetailAbnormalInnerVO> result) {
PqReasonableRangeDto pqReasonableRangeDto = dtoMap.get(targetKey);
JSONArray innerJson = targetJson.getJSONArray(targetKey);
@@ -432,7 +468,12 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
vo.setTargetName(timeList.get(0).getTargetName());
vo.setTargetKey(targetKey);
vo.setPhaseType(phaseKey);
vo.setRangeDesc(pqReasonableRangeDto.getMinValue() + unit + " ~ " + pqReasonableRangeDto.getMaxValue() + unit);
if((pqReasonableRangeDto.getInfluxdbTableName()+SEPARATOR+pqReasonableRangeDto.getIndexCode()).equals(targetKey)){
vo.setRangeDesc(pqReasonableRangeDto.getMinValue() + unit + " ~ " + pqReasonableRangeDto.getMaxValue()+"*CT1" + unit);
}else {
vo.setRangeDesc(pqReasonableRangeDto.getMinValue() + unit + " ~ " + pqReasonableRangeDto.getMaxValue() + unit);
}
valueList.forEach(ites -> {
switch (ites.getType()) {
case "AVG":
@@ -549,7 +590,6 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
ids = dataVerifyList.stream().filter(it -> it.getVlDev() > 0).map(PqDataVerifyBak::getLineId).collect(Collectors.toSet());
assembleEntity(ids, dto, result);
break;
case Param.rms_i:
ids = dataVerifyList.stream().filter(it -> it.getIRms() > 0).map(PqDataVerifyBak::getLineId).collect(Collectors.toSet());
assembleEntity(ids, dto, result);
@@ -623,7 +663,8 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
*/
private void assembleEntity(Set<String> ids, PqReasonableRangeDto dto, List<VerifyTargetVO> result) {
VerifyTargetVO verifyTargetVO = new VerifyTargetVO();
verifyTargetVO.setKey(dto.getInfluxdbTableName() + SEPARATOR + dto.getIndexCode());
String temStr = dto.getInfluxdbTableName() + SEPARATOR + dto.getIndexCode();
verifyTargetVO.setKey(temStr);
verifyTargetVO.setTargetName(dto.getIndexName().replace("", ""));
verifyTargetVO.setIds(ids);
verifyTargetVO.setRemark(dto.getRemark());
@@ -632,7 +673,12 @@ public class PqDataVerifyBakServiceImpl extends ServiceImpl<PqDataVerifyBakMappe
if (StrUtil.isNotBlank(dto.getUnit())) {
unit = dto.getUnit();
}
verifyTargetVO.setRangeDesc(dto.getMinValue() + unit + " ~ " + dto.getMaxValue() + unit);
if(temStr.equals(Param.rms_i)){
verifyTargetVO.setRangeDesc(dto.getMinValue() + unit + " ~ " + dto.getMaxValue()+"*CT1" + unit);
}else {
verifyTargetVO.setRangeDesc(dto.getMinValue() + unit + " ~ " + dto.getMaxValue() + unit);
}
result.add(verifyTargetVO);
}