1.调整暂态算法
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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}
|
||||
@@ -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();
|
||||
|
||||
@@ -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
45
pom.xml
@@ -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>-->
|
||||
<!-- <!–微服务模块发布地址–>-->
|
||||
<!-- <service.server.url>127.0.0.1</service.server.url>-->
|
||||
<!-- <!–docker仓库地址–>-->
|
||||
<!-- <docker.server.url>127.0.0.1</docker.server.url>-->
|
||||
<!-- <!–nacos的ip:port–>-->
|
||||
<!-- <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>-->
|
||||
<!-- <!–微服务模块发布地址–>-->
|
||||
<!-- <service.server.url>192.168.21.1</service.server.url>-->
|
||||
<!-- <!–docker仓库地址–>-->
|
||||
<!-- <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-->
|
||||
|
||||
Reference in New Issue
Block a user