1.调整暂态算法

This commit is contained in:
wr
2025-12-11 14:56:14 +08:00
parent 5afb860467
commit b0972ba896
5 changed files with 549 additions and 502 deletions

View File

@@ -26,6 +26,10 @@ import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.slf4j.Logger;
@@ -104,6 +108,8 @@ public class DataCleanServiceImpl implements IDataCleanService {
private PqDataVerifyCountFeignClient pqDataVerifyCountFeignClient;
@Resource
private FileStorageUtil fileStorageUtil;
@Resource
private DicDataFeignClient dicDataFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -296,6 +302,8 @@ public class DataCleanServiceImpl implements IDataCleanService {
@Override
public void dataCleanHandler(CalculatedParam calculatedParam) {
DictData dip = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_DIP.getCode(), DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
DictData rise = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_RISE.getCode(), DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
MemorySizeUtil.getNowMemory();
logger.info("{},原始表数据清洗=====》", LocalDateTime.now());
//获取标准
@@ -526,7 +534,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
Map<String, PqReasonableRangeDto> pqReasonableRangeDtoMap = list.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity()));
eventList.forEach(data -> {
data.setFeatureAmplitude(data.getFeatureAmplitude() * 100.0);
List<PqDataVerify> pqDataVerifies = judgeDataEvent(pqReasonableRangeDtoMap,data);
List<PqDataVerify> pqDataVerifies = judgeDataEvent(pqReasonableRangeDtoMap, data, dip, rise);
result.addAll(pqDataVerifies);
});
if (CollUtil.isNotEmpty(result)) {
@@ -552,65 +560,65 @@ public class DataCleanServiceImpl implements IDataCleanService {
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataV)) {
verifyCount.setTotal(dataV.size());
dataV.forEach(item1-> item1.setAbnormalFlag(1));
dataVFeignClient.addInfluxDbList(dataV);
}
List<DataIDto> dataI = data2.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataI)) {
dataI.forEach(item1-> item1.setAbnormalFlag(1));
dataIFeignClient.addInfluxDbList(dataI);
}
List<DataPltDto> dataPlt = data3.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataPlt)) {
dataPlt.forEach(item1-> item1.setAbnormalFlag(1));
dataPltFeignClient.addInfluxDbList(dataPlt);
}
List<DataHarmDto> dataInHarmV = data4.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataInHarmV)) {
dataInHarmV.forEach(item1-> item1.setAbnormalFlag(1));
dataInharmVFeignClient.addInfluxDbList(dataInHarmV);
}
List<DataHarmDto> dataHarmRateV = data5.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataHarmRateV)) {
dataHarmRateV.forEach(item1-> item1.setAbnormalFlag(1));
dataHarmRateVFeignClient.addInfluxDbList(dataHarmRateV);
}
List<DataPowerPDto> dataHarmPowerP = data6.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataHarmPowerP)) {
dataHarmPowerP.forEach(item1-> item1.setAbnormalFlag(1));
dataHarmpowerPFeignClient.addInfluxDbList(dataHarmPowerP);
}
List<DataHarmDto> dataHarmPhasicV = data7.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataHarmPhasicV)) {
dataHarmPhasicV.forEach(item1-> item1.setAbnormalFlag(1));
dataHarmphasicVFeignClient.addInfluxDbList(dataHarmPhasicV);
}
List<DataFlucDto> dataFluc = data8.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataFluc)) {
dataFluc.forEach(item1-> item1.setAbnormalFlag(1));
dataFlucFeignClient.addInfluxDbList(dataFluc);
// dataV.forEach(item1-> item1.setAbnormalFlag(1));
// dataVFeignClient.addInfluxDbList(dataV);
}
// List<DataIDto> dataI = data2.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataI)) {
// dataI.forEach(item1-> item1.setAbnormalFlag(1));
// dataIFeignClient.addInfluxDbList(dataI);
// }
// List<DataPltDto> dataPlt = data3.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataPlt)) {
// dataPlt.forEach(item1-> item1.setAbnormalFlag(1));
// dataPltFeignClient.addInfluxDbList(dataPlt);
// }
// List<DataHarmDto> dataInHarmV = data4.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataInHarmV)) {
// dataInHarmV.forEach(item1-> item1.setAbnormalFlag(1));
// dataInharmVFeignClient.addInfluxDbList(dataInHarmV);
// }
// List<DataHarmDto> dataHarmRateV = data5.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataHarmRateV)) {
// dataHarmRateV.forEach(item1-> item1.setAbnormalFlag(1));
// dataHarmRateVFeignClient.addInfluxDbList(dataHarmRateV);
// }
// List<DataPowerPDto> dataHarmPowerP = data6.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataHarmPowerP)) {
// dataHarmPowerP.forEach(item1-> item1.setAbnormalFlag(1));
// dataHarmpowerPFeignClient.addInfluxDbList(dataHarmPowerP);
// }
// List<DataHarmDto> dataHarmPhasicV = data7.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataHarmPhasicV)) {
// dataHarmPhasicV.forEach(item1-> item1.setAbnormalFlag(1));
// dataHarmphasicVFeignClient.addInfluxDbList(dataHarmPhasicV);
// }
// List<DataFlucDto> dataFluc = data8.stream()
// .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
// .collect(Collectors.toList());
// if (CollUtil.isNotEmpty(dataFluc)) {
// dataFluc.forEach(item1-> item1.setAbnormalFlag(1));
// dataFlucFeignClient.addInfluxDbList(dataFluc);
// }
List<DataFlickerDto> dataFlicker = data9.stream()
.filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19)))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataFlicker)) {
verifyCount.setFlicker(dataFlicker.size());
dataFlicker.forEach(item1-> item1.setAbnormalFlag(1));
dataFlickerFeignClient.addInfluxDbList(dataFlicker);
// dataFlicker.forEach(item1-> item1.setAbnormalFlag(1));
// dataFlickerFeignClient.addInfluxDbList(dataFlicker);
}
pqDataVerifyCountFeignClient.insertData(verifyCount);
Map<String, Object> dtoMap = new HashMap<>(1);
@@ -1890,10 +1898,11 @@ public class DataCleanServiceImpl implements IDataCleanService {
/**
* 获取数据的标准范围,进行数据比对
*/
public List<PqDataVerify> judgeDataEvent(Map<String, PqReasonableRangeDto> map, RmpEventDetailDTO dto) {
public List<PqDataVerify> judgeDataEvent(Map<String, PqReasonableRangeDto> map, RmpEventDetailDTO dto, DictData dip, DictData rise) {
List<PqDataVerify> list = new ArrayList<>();
if (ObjectUtil.isNotNull(dip)) {
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.VoltageDip.getCode());
if(ObjectUtil.isNotNull(dto.getFeatureAmplitude())){
if (ObjectUtil.isNotNull(dto.getFeatureAmplitude()) && dip.getId().equals(dto.getEventType())) {
if (dto.getFeatureAmplitude() < pqReasonableRangeDto.getMinValue() || dto.getFeatureAmplitude() > pqReasonableRangeDto.getMaxValue()) {
PqDataVerify pqDataVerify = getPqDataVerify(dto.getMeasurementPointId()
, dto.getStartTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_MS_PATTERN))
@@ -1908,8 +1917,10 @@ public class DataCleanServiceImpl implements IDataCleanService {
list.add(pqDataVerify);
}
}
}
if (ObjectUtil.isNotNull(rise)) {
PqReasonableRangeDto pqReasonableRangeDto2 = map.get(DataCleanEnum.VoltageRise.getCode());
if(ObjectUtil.isNotNull(dto.getFeatureAmplitude())){
if (ObjectUtil.isNotNull(dto.getFeatureAmplitude()) && rise.getId().equals(dto.getEventType())) {
if (dto.getFeatureAmplitude() < pqReasonableRangeDto2.getMinValue() || dto.getFeatureAmplitude() > pqReasonableRangeDto2.getMaxValue()) {
PqDataVerify pqDataVerify = getPqDataVerify(dto.getMeasurementPointId()
, dto.getStartTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_MS_PATTERN))
@@ -1924,6 +1935,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
list.add(pqDataVerify);
}
}
}
return list;
}

View File

@@ -58,7 +58,7 @@ liteflow:
logging:
config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml
level:
root:
root: error
#mybatis配置信息
@@ -66,7 +66,7 @@ mybatis-plus:
#别名扫描
type-aliases-package: com.njcn.harmonic.pojo
line:
num: 20
num: 10
mqtt:
client-id: @artifactId@${random.value}

View File

@@ -82,14 +82,14 @@ public class MigrationInfluxDBController {
long betweenDay = LocalDateTimeUtil.between(startDate, endDate, ChronoUnit.HOURS);
param.setStartTime(startDate.format(dateTimeFormatter));
param.setEndTime(startDate.with(LocalTime.of(startDate.getHour(), 59, 59)).format(dateTimeFormatter));
migrationService.hourseLineEventBacthSysc(param);
migrationService.hourseDevDataBacthSysc(param);
for (int i = 0; i <betweenDay; i++) {
LineCountEvaluateParam countEvaluateParam=new LineCountEvaluateParam();
countEvaluateParam.setIsManual(true);
startDate = LocalDateTimeUtil.offset(startDate, 1, ChronoUnit.HOURS);
countEvaluateParam.setStartTime(startDate.format(dateTimeFormatter));
countEvaluateParam.setEndTime(startDate.with(LocalTime.of(startDate.getHour(), 59, 59)).format(dateTimeFormatter));
migrationService.hourseLineEventBacthSysc(countEvaluateParam);
migrationService.hourseDevDataBacthSysc(countEvaluateParam);
}
} catch (Exception exception) {
exception.printStackTrace();

View File

@@ -98,7 +98,7 @@ public class BaseJunitTest {
lineParam.setStartTime("2025-04-23 00:00:00");
lineParam.setEndTime("2025-04-23 23:59:00");
lineParam.setIsManual(true);
migrationService.hourseLineDataBacthSysc(lineParam);
// migrationService.hourseLineDataBacthSysc(lineParam);
System.out.println("");

45
pom.xml
View File

@@ -33,11 +33,46 @@
<properties>
<!--内网-->
<middle.server.url>192.168.1.22</middle.server.url>
<service.server.url>192.168.1.121</service.server.url>
<docker.server.url>192.168.1.22</docker.server.url>
<nacos.url>${middle.server.url}:18848</nacos.url>
<nacos.namespace>07ec981d-1377-4920-8760-b5a98ff7e668</nacos.namespace>
<!-- <middle.server.url>192.168.1.22</middle.server.url>-->
<!-- <service.server.url>192.168.1.121</service.server.url>-->
<!-- <docker.server.url>192.168.1.22</docker.server.url>-->
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
<!-- <nacos.namespace>07ec981d-1377-4920-8760-b5a98ff7e668</nacos.namespace>-->
<!-- <middle.server.url>192.168.21.129</middle.server.url>-->
<!-- <service.server.url>192.168.21.1</service.server.url>-->
<!-- <docker.server.url>192.168.1.22</docker.server.url>-->
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
<!-- <nacos.namespace>0c19477c-444e-413c-9782-e6ebc2eedac1</nacos.namespace>-->
<!-- <middle.server.url>127.0.0.1</middle.server.url>-->
<!-- &lt;!&ndash;微服务模块发布地址&ndash;&gt;-->
<!-- <service.server.url>127.0.0.1</service.server.url>-->
<!-- &lt;!&ndash;docker仓库地址&ndash;&gt;-->
<!-- <docker.server.url>127.0.0.1</docker.server.url>-->
<!-- &lt;!&ndash;nacos的ip:port&ndash;&gt;-->
<!-- <nacos.url>${middle.server.url}:8848</nacos.url>-->
<!-- <nacos.namespace>37a0e99f-eb96-4d2f-9b47-75bffa765827</nacos.namespace>-->
<!-- <middle.server.url>24.43.102.139</middle.server.url>-->
<!-- <service.server.url>24.43.102.139</service.server.url>-->
<!-- <docker.server.url>24.43.102.139</docker.server.url>-->
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
<!-- <nacos.namespace></nacos.namespace>-->
<middle.server.url>127.0.0.1</middle.server.url>
<service.server.url>127.0.0.1</service.server.url>
<docker.server.url>127.0.0.1</docker.server.url>
<nacos.url>${middle.server.url}:8848</nacos.url>
<nacos.namespace>37a0e99f-eb96-4d2f-9b47-75bffa765827</nacos.namespace>
<!-- <middle.server.url>192.168.21.129</middle.server.url>-->
<!-- &lt;!&ndash;微服务模块发布地址&ndash;&gt;-->
<!-- <service.server.url>192.168.21.1</service.server.url>-->
<!-- &lt;!&ndash;docker仓库地址&ndash;&gt;-->
<!-- <docker.server.url>192.168.1.22</docker.server.url>-->
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
<!-- <nacos.namespace>0c19477c-444e-413c-9782-e6ebc2eedac1</nacos.namespace>-->
<!--sentinel:port-->
<sentinel.url>${middle.server.url}:8080</sentinel.url>
<!--网关地址主要用于配置swagger中认证token-->