3 Commits

Author SHA1 Message Date
wr
40b0951756 河北闪变算法调整 2026-03-02 10:11:01 +08:00
d83f0746ac 污区算法bug修改 2025-10-11 15:49:38 +08:00
f8e88b87d0 微调 2025-03-26 08:39:19 +08:00
3 changed files with 58 additions and 22 deletions

View File

@@ -1838,11 +1838,11 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
private String dealVoltageLevel(String voltage) {
float scale = Float.parseFloat(voltage.substring(0, voltage.indexOf("kV")));
if (scale < 500) {
//if (scale < 500) {
return "交流" + voltage;
} else {
return "直流" + voltage;
}
//} else {
// return "直流" + voltage;
//}
}

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
@@ -26,7 +27,10 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Description:
@@ -1851,10 +1855,15 @@ public class DayDataServiceImpl implements DayDataService {
.groupBy(DataPlt::getLineId, DataPlt::getPhaseType, DataPlt::getQualityFlag, DataPlt::getValueType)
.between(DataPlt::getTime, startTime, endTime);
List<DataPlt> result1 = dataPltMapper.getStatisticsByWraper(influxQueryWrapper);
result1.forEach(item -> {
item.setValueType(InfluxDbSqlConstant.MIN);
if(CollUtil.isNotEmpty(result1)){
Map<String, List<DataPlt>> collect = result1.stream().collect(Collectors.groupingBy(DataPlt::getPhaseType));
collect.forEach((key, value) -> {
value.sort(Comparator.comparing(DataPlt::getPlt));
DataPlt dataPlt = value.get(0);
dataPlt.setValueType(InfluxDbSqlConstant.MIN);
result.add(dataPlt);
});
result.addAll(result1);
}
//最大值
InfluxQueryWrapper influxQueryWrapper2 = new InfluxQueryWrapper(DataPlt.class);
influxQueryWrapper2.regular(DataPlt::getLineId, lineIndex)
@@ -1862,10 +1871,15 @@ public class DayDataServiceImpl implements DayDataService {
.groupBy(DataPlt::getLineId, DataPlt::getPhaseType, DataPlt::getQualityFlag, DataPlt::getValueType)
.between(DataPlt::getTime, startTime, endTime);
List<DataPlt> result2 = dataPltMapper.getStatisticsByWraper(influxQueryWrapper2);
result2.forEach(item -> {
item.setValueType(InfluxDbSqlConstant.MAX);
if(CollUtil.isNotEmpty(result2)){
Map<String, List<DataPlt>> collect = result2.stream().collect(Collectors.groupingBy(DataPlt::getPhaseType));
collect.forEach((key, value) -> {
value.sort(Comparator.comparing(DataPlt::getPlt).reversed());
DataPlt dataPlt = value.get(0);
dataPlt.setValueType(InfluxDbSqlConstant.MAX);
result.add(dataPlt);
});
result.addAll(result2);
}
//平均值
InfluxQueryWrapper influxQueryWrapper3 = new InfluxQueryWrapper(DataPlt.class);
influxQueryWrapper3.regular(DataPlt::getLineId, lineIndex)
@@ -1873,10 +1887,16 @@ public class DayDataServiceImpl implements DayDataService {
.groupBy(DataPlt::getLineId, DataPlt::getPhaseType, DataPlt::getQualityFlag, DataPlt::getValueType)
.between(DataPlt::getTime, startTime, endTime);
List<DataPlt> result3 = dataPltMapper.getStatisticsByWraper(influxQueryWrapper3);
result3.forEach(item -> {
item.setValueType(InfluxDbSqlConstant.AVG_WEB);
if(CollUtil.isNotEmpty(result3)){
Map<String, List<DataPlt>> collect = result3.stream().collect(Collectors.groupingBy(DataPlt::getPhaseType));
collect.forEach((key, value) -> {
double asDouble = value.stream().mapToDouble(DataPlt::getPlt).average().getAsDouble();
DataPlt dataPlt = value.get(0);
dataPlt.setValueType(InfluxDbSqlConstant.AVG_WEB);
dataPlt.setPlt(asDouble);
result.add(dataPlt);
});
result.addAll(result3);
}
//CP95(取平均值的CP95值)
InfluxQueryWrapper influxQueryWrapper4 = new InfluxQueryWrapper(DataPlt.class);
influxQueryWrapper4.regular(DataPlt::getLineId, lineIndex)
@@ -1884,10 +1904,15 @@ public class DayDataServiceImpl implements DayDataService {
.groupBy(DataPlt::getLineId, DataPlt::getPhaseType, DataPlt::getQualityFlag, DataPlt::getValueType)
.between(DataPlt::getTime, startTime, endTime);
List<DataPlt> result4 = dataPltMapper.getStatisticsByWraper(influxQueryWrapper4);
result4.forEach(item -> {
item.setValueType(InfluxDbSqlConstant.CP95);
if(CollUtil.isNotEmpty(result4)){
Map<String, List<DataPlt>> collect = result4.stream().collect(Collectors.groupingBy(DataPlt::getPhaseType));
collect.forEach((key, value) -> {
value.sort(Comparator.comparing(DataPlt::getPlt).reversed());
DataPlt dataPlt = value.get(0);
dataPlt.setValueType(InfluxDbSqlConstant.CP95);
result.add(dataPlt);
});
result.addAll(result4);
}
return result;
}

View File

@@ -594,8 +594,19 @@ public class PollutionServiceImpl implements PollutionService {
for (RStatDataVDPO dayV : list) {
for (Overlimit overlimit : overLimitList) {
if (Objects.equals(dayV.getLineId(),overlimit.getId())){
double vlDev = Math.abs(dayV.getVlDev()/overlimit.getUvoltageDev());
double vuDev = Math.abs(dayV.getVuDev()/overlimit.getVoltageDev());
double vlDev;
double vuDev;
if(overlimit.getVoltageDev() == 0){
vlDev = 0;
}else {
vlDev = Math.abs(dayV.getVlDev()/overlimit.getVoltageDev());
}
if(overlimit.getUvoltageDev() == 0){
vuDev = 0;
}else {
vuDev = Math.abs(dayV.getVuDev()/overlimit.getUvoltageDev());
}
data = Stream.of(vuDev,vlDev).collect(Collectors.toList());
double result = data.stream().max(Comparator.comparing(Double::doubleValue)).get();
publicDTO = new PublicDTO();