diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java index 2f0994ccf..5c970d491 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java @@ -354,7 +354,7 @@ public class DataVerifyServiceImpl extends ServiceImpl jsonBaseVOList = jsonArray.toList(JsonBaseVO.class); jsonBaseVOList.forEach(it -> { @@ -363,13 +363,13 @@ public class DataVerifyServiceImpl extends ServiceImpl0){ + if (timeSet.size() > 0) { DetailAbnormalVO detailAbnormalVO = new DetailAbnormalVO(); detailAbnormalVO.setMonitorId(lineId); detailAbnormalVO.setDate(date.format(DATE_FORMAT)); detailAbnormalVO.setMonitorName(lineInfoVO.getLineName()); detailAbnormalVO.setBdName(lineInfoVO.getBdName()); - detailAbnormalVO.setTimeSum(String.valueOf(timeInterval*timeSet.size())); + detailAbnormalVO.setTimeSum(String.valueOf(timeInterval * timeSet.size())); detailAbnormalVO.setTargetKey(monitorBaseParam.getTargetKey()); result.add(detailAbnormalVO); } @@ -429,9 +429,9 @@ public class DataVerifyServiceImpl extends ServiceImpl> map = new HashMap<>(); + DataCleanParam param = new DataCleanParam(); + param.setSystemType(DataCleanEnum.Pqs.getCode()); + List list = pqReasonableRangeFeignClient.getData(param).getData(); + if (CollUtil.isNotEmpty(list)) { + map = list.stream().collect(Collectors.groupingBy(PqReasonableRangeDto::getInfluxdbTableName)); + } - - //谐波电压 - //谐波电流 - //简谐波电压 - - - + List dataV = map.get(DataCleanEnum.DataV.getCode()); + Map dataVCode = dataV.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity())); //频率偏差 if (CollUtil.isNotEmpty(freq)) { - List collect = freq.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setFreqData(NumberUtil.round(val.getVal(),2).doubleValue()); + PqReasonableRangeDto dto = dataVCode.get(DataCleanEnum.FreqDev.getCode()); + DetailAbnormalVO.DetailLimitInnerVO val = reasonAble(freq, dto); + assess.setFreqData(NumberUtil.round(val.getVal(), 2).doubleValue()); } + //电压偏差 if (CollUtil.isNotEmpty(voltage)) { - List collect = voltage.stream().filter(x->Double.valueOf(x.getVal()) > 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(collect)){ - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setVDevData(NumberUtil.round(val.getVal(),2).doubleValue()); + //上偏差 + PqReasonableRangeDto dto1 = dataVCode.get(DataCleanEnum.VuDev.getCode()); + List collect = voltage.stream() + .filter(x -> Double.valueOf(x.getVal()) > 0) + .filter(x -> Double.valueOf(x.getVal()) < dto1.getMaxValue()) + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + DetailAbnormalVO.DetailLimitInnerVO val; + if (CollUtil.isNotEmpty(collect)) { + val = collect.get(0); + } else { + List collect2 = voltage.stream() + .filter(x -> Double.valueOf(x.getVal()) > 0) + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()) + .collect(Collectors.toList()); + val = collect2.get(0); + val.setVal(dto1.getMaxValue().toString()); + } + assess.setVDevData(NumberUtil.round(val.getVal(), 2).doubleValue()); } - List collect2 = voltage.stream().filter(x->Double.valueOf(x.getVal()) < 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal)).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(collect2)){ - DetailAbnormalVO.DetailLimitInnerVO val2 = collect2.get(0); - assess.setUDevData(NumberUtil.round(val2.getVal(),2).doubleValue()); + //下偏差 + PqReasonableRangeDto dto2 = dataVCode.get(DataCleanEnum.VlDev.getCode()); + List collect2 = voltage.stream() + .filter(x -> Double.valueOf(x.getVal()) < 0) + .filter(x -> dto2.getMinValue() < Double.valueOf(x.getVal())) + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal)).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect2)) { + DetailAbnormalVO.DetailLimitInnerVO val2; + if (CollUtil.isNotEmpty(collect)) { + val2 = collect.get(0); + } else { + List collect3 = voltage.stream() + .filter(x -> Double.valueOf(x.getVal()) < 0) + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()) + .collect(Collectors.toList()); + val2 = collect3.get(0); + val2.setVal(dto2.getMaxValue().toString()); + } + assess.setUDevData(NumberUtil.round(val2.getVal(), 2).doubleValue()); } } //负序电流 if (CollUtil.isNotEmpty(iNeg)) { - List collect = iNeg.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); + List collect = iNeg.stream() + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()) + .collect(Collectors.toList()); DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setINegData(NumberUtil.round(val.getVal(),2).doubleValue()); + assess.setINegData(NumberUtil.round(val.getVal(), 2).doubleValue()); } //电压总谐波 if (CollUtil.isNotEmpty(uaberrance)) { - List collect = uaberrance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setUaberranceData(NumberUtil.round(val.getVal(),2).doubleValue()); + PqReasonableRangeDto dto = dataVCode.get(DataCleanEnum.VThd.getCode()); + DetailAbnormalVO.DetailLimitInnerVO val = reasonAble(uaberrance, dto); + assess.setUaberranceData(NumberUtil.round(val.getVal(), 2).doubleValue()); } //三相不平衡度 if (CollUtil.isNotEmpty(ubalance)) { - List collect = ubalance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setUnbalanceData(NumberUtil.round(val.getVal(),2).doubleValue()); + PqReasonableRangeDto dto = dataVCode.get(DataCleanEnum.VUnbalance.getCode()); + DetailAbnormalVO.DetailLimitInnerVO val = reasonAble(ubalance, dto); + assess.setUnbalanceData(NumberUtil.round(val.getVal(), 2).doubleValue()); } //闪变 + List dataPlt = map.get(DataCleanEnum.DataPlt.getCode()); + Map dataPltCode = dataPlt.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity())); if (CollUtil.isNotEmpty(flicker)) { - List collect = flicker.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setFlickerData(NumberUtil.round(val.getVal(),2).doubleValue()); + PqReasonableRangeDto dto = dataPltCode.get(DataCleanEnum.Plt.getCode()); + DetailAbnormalVO.DetailLimitInnerVO val = reasonAble(flicker, dto); + assess.setFlickerData(NumberUtil.round(val.getVal(), 2).doubleValue()); } //谐波电压 + List dataHarmRate = map.get(DataCleanEnum.DataHarmRateV.getCode()); + Map dataHarmRateCode = dataHarmRate.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity())); if (CollUtil.isNotEmpty(uharm)) { - List collect = uharm.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setUharmData(NumberUtil.round(val.getVal(),2).doubleValue()); + PqReasonableRangeDto dto = dataHarmRateCode.get(DataCleanEnum.V_Rate.getCode()); + DetailAbnormalVO.DetailLimitInnerVO val = reasonAble(uharm, dto); + assess.setUharmData(NumberUtil.round(val.getVal(), 2).doubleValue()); String[] split = val.getTargetName().split("次"); try { Class clazz = overLimitDataById.getClass(); @@ -510,9 +549,11 @@ public class DataVerifyServiceImpl extends ServiceImpl collect = iharm.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); + List collect = iharm.stream() + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()) + .collect(Collectors.toList()); DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setIharmData(NumberUtil.round(val.getVal(),2).doubleValue()); + assess.setIharmData(NumberUtil.round(val.getVal(), 2).doubleValue()); String[] split = val.getTargetName().split("次"); try { Class clazz = overLimitDataById.getClass(); @@ -521,15 +562,17 @@ public class DataVerifyServiceImpl extends ServiceImpl dataInHarm = map.get(DataCleanEnum.DataInHarmV.getCode()); + Map dataInHarmCode = dataInHarm.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity())); if (CollUtil.isNotEmpty(inuharm)) { - List collect = inuharm.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); - DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0); - assess.setInuharmData(NumberUtil.round(val.getVal(),2).doubleValue()); + PqReasonableRangeDto dto = dataInHarmCode.get(DataCleanEnum.V_InHarm.getCode()); + DetailAbnormalVO.DetailLimitInnerVO val = reasonAble(inuharm, dto); + assess.setInuharmData(NumberUtil.round(val.getVal(), 2).doubleValue()); String[] split = val.getTargetName().split("次"); try { Class clazz = overLimitDataById.getClass(); @@ -544,6 +587,23 @@ public class DataVerifyServiceImpl extends ServiceImpl limit, PqReasonableRangeDto dto) { + List collect = limit.stream() + .filter(x -> dto.getMinValue() < Double.valueOf(x.getVal()) && Double.valueOf(x.getVal()) < dto.getMaxValue()) + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList()); + DetailAbnormalVO.DetailLimitInnerVO val; + if (CollUtil.isNotEmpty(collect)) { + val = collect.get(0); + } else { + List collect2 = limit.stream() + .sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()) + .collect(Collectors.toList()); + val = collect2.get(0); + val.setVal(dto.getMaxValue().toString()); + } + return val; + } + private Map getTargetMap() { List dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData(); return dictDataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity())); @@ -632,7 +692,7 @@ public class DataVerifyServiceImpl extends ServiceImpl result) { + List result) { List tempList = new ArrayList<>(); collectHarmonicData(dto, prefix, start, end, tempList); processSpecialTargets(tempList, result, targetCode);