数据清洗算法
This commit is contained in:
@@ -99,6 +99,11 @@
|
||||
<artifactId>liteflow-rule-nacos</artifactId>
|
||||
<version>2.11.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>pq-device-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -29,7 +29,8 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
private IDataCleanService dataCleanService;
|
||||
|
||||
/**
|
||||
* 数据清洗(dataV)
|
||||
* 数据清洗 电压表
|
||||
* dataV表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
@@ -41,6 +42,120 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
dataCleanService.dataVCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 电流表
|
||||
* dataI表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataIClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataICleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataIClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataICleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataICleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 长闪表
|
||||
* dataPlt表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataPltClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataPltCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataPltClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataPltCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataPltCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 间谐波电压表
|
||||
* DataInHarmV表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataInHarmVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataInHarmVCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataInHarmVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataInHarmVCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataInHarmVCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 谐波电压含有率
|
||||
* DataHarmRateV表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataHarmRateVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataHarmRateVCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataHarmRateVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataHarmRateVCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataHarmRateVCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 有功功率表
|
||||
* DataHarmPowerP表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataHarmPowerPClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataHarmPowerPCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataHarmPowerPClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataHarmPowerPCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataHarmPowerPCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 谐波电压角度表
|
||||
* DataHarmPhasicV表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataHarmPhasicVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataHarmPhasicVCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataHarmPhasicVClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataHarmPhasicVCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataHarmPhasicVCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗 电压波动表
|
||||
* DataFluc表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataFlucClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataFlucCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataFlucClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataFlucCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataFlucCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据清洗
|
||||
* DataFlicker表
|
||||
* @author xy
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataFlickerClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataFlickerCleanAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataFlickerClean", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataFlickerCleanProcess(NodeComponent bindCmp) {
|
||||
dataCleanService.dataFlickerCleanHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 监测点报表_日表(r_stat_data_*_d)
|
||||
* @author xy
|
||||
|
||||
@@ -9,9 +9,73 @@ public interface IDataCleanService {
|
||||
|
||||
/***
|
||||
* dataV数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataVCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataI数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataICleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataPlt数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataPltCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataInHarmV数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataInHarmVCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataHarmRateV数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataHarmRateVCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataHarmPowerP数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataHarmPowerPCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataHarmPhasicV数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataHarmPhasicVCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataFluc数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataFlucCleanHandler(CalculatedParam calculatedParam);
|
||||
|
||||
/***
|
||||
* dataFlicker数据清洗
|
||||
* 不标记原始数据,将异常数据查询出来重新存储至详情表中
|
||||
* @author xy
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void dataFlickerCleanHandler(CalculatedParam calculatedParam);
|
||||
}
|
||||
|
||||
@@ -3,10 +3,16 @@ package com.njcn.algorithm.serviceimpl.line;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.algorithm.service.line.IDataCleanService;
|
||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||
import com.njcn.dataProcess.api.*;
|
||||
import com.njcn.dataProcess.enums.DataCleanEnum;
|
||||
import com.njcn.dataProcess.param.DataCleanParam;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataVDto;
|
||||
import com.njcn.dataProcess.pojo.dto.*;
|
||||
import com.njcn.dataProcess.pojo.po.PqDataVerify;
|
||||
import com.njcn.dataProcess.util.DataCommonUtils;
|
||||
import com.njcn.dataProcess.util.TimeUtils;
|
||||
import com.njcn.device.pq.api.LineFeignClient;
|
||||
import com.njcn.device.pq.pojo.vo.LineDetailVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
@@ -15,8 +21,11 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.lang.reflect.Method;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
@@ -31,26 +40,833 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
||||
|
||||
@Resource
|
||||
private DataVFeignClient dataVFeignClient;
|
||||
@Resource
|
||||
private DataIFeignClient dataIFeignClient;
|
||||
@Resource
|
||||
private DataPltFeignClient dataPltFeignClient;
|
||||
@Resource
|
||||
private DataInharmVFeignClient dataInharmVFeignClient;
|
||||
@Resource
|
||||
private DataHarmRateVFeignClient dataHarmRateVFeignClient;
|
||||
@Resource
|
||||
private DataHarmpowerPFeignClient dataHarmpowerPFeignClient;
|
||||
@Resource
|
||||
private DataHarmphasicVFeignClient dataHarmphasicVFeignClient;
|
||||
@Resource
|
||||
private DataFlucFeignClient dataFlucFeignClient;
|
||||
@Resource
|
||||
private DataFlickerFeignClient dataFlickerFeignClient;
|
||||
@Resource
|
||||
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
||||
@Resource
|
||||
private PqReasonableRangeFeignClient pqReasonableRangeFeignClient;
|
||||
@Resource
|
||||
private LineFeignClient lineFeignClient;
|
||||
|
||||
|
||||
@Override
|
||||
public void dataVCleanHandler(CalculatedParam calculatedParam) {
|
||||
List<DataVDto> result = new ArrayList<>();
|
||||
logger.info("{},dataV表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataV.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
List<LineDetailVO.Detail> lineDetail = lineFeignClient.getLineDetailByIds(lineList).getData();
|
||||
if (CollUtil.isEmpty(lineDetail)) {
|
||||
logger.error("监测点集合为空,无法计算!");
|
||||
return;
|
||||
}
|
||||
Map<String,LineDetailVO.Detail> lineMap = lineDetail.stream().collect(Collectors.toMap(LineDetailVO.Detail::getLineId, Function.identity()));
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(calculatedParam.getIdList(),NUM);
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataVDto> partList = dataVFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
item.setAbnormalFlag(0);
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataV(map, lineMap.get(item.getLineId()),item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
result.addAll(partList);
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
dataVFeignClient.addInfluxDbList(result);
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataICleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataI表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataI.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
List<LineDetailVO.Detail> lineDetail = lineFeignClient.getLineDetailByIds(lineList).getData();
|
||||
if (CollUtil.isEmpty(lineDetail)) {
|
||||
logger.error("监测点集合为空,无法计算!");
|
||||
return;
|
||||
}
|
||||
Map<String,LineDetailVO.Detail> lineMap = lineDetail.stream().collect(Collectors.toMap(LineDetailVO.Detail::getLineId, Function.identity()));
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataIDto> partList = dataIFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataI(map, lineMap.get(item.getLineId()),item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataPltCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataPlt表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataPlt.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataPltDto> partList = dataPltFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataPlt(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataInHarmVCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataInHarmV表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataInHarmV.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataHarmDto> partList = dataInharmVFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataInHarmV(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataHarmRateVCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataHarmRateV表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataHarmRateV.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataHarmDto> partList = dataHarmRateVFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataHarmRateV(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataHarmPowerPCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataHarmPowerP表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataHarmPowerP.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataPowerPDto> partList = dataHarmpowerPFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataHarmPowerP(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataHarmPhasicVCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataHarmPhasicV表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataHarmPhasicV.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataHarmDto> partList = dataHarmphasicVFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataHarmPhasicV(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataFlucCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataFluc表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataFluc.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataFlucDto> partList = dataFlucFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataFluc(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataFlickerCleanHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataFlicker表异常数据算法执行=====》", LocalDateTime.now());
|
||||
List<PqDataVerify> result = new ArrayList<>();
|
||||
//获取标准
|
||||
Map<String, PqReasonableRangeDto> map = getStandardData(DataCleanEnum.DataFlicker.getCode());
|
||||
//获取监测点台账信息
|
||||
List<String> lineList = calculatedParam.getIdList();
|
||||
//数据分片处理
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineList,NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
List<DataFlickerDto> partList = dataFlickerFeignClient.getRawData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
//数据清洗
|
||||
List<PqDataVerify> pqDataVerifies = judgeDataFlicker(map,item);
|
||||
result.addAll(pqDataVerifies);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (CollUtil.isNotEmpty(result)) {
|
||||
pqDataVerifyFeignClient.insertData(result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取标准数据的范围
|
||||
*/
|
||||
public Map<String, PqReasonableRangeDto> getStandardData(String tableName) {
|
||||
Map<String, PqReasonableRangeDto> pqReasonableRangeDtoMap = new HashMap<>();
|
||||
DataCleanParam param = new DataCleanParam();
|
||||
param.setSystemType(DataCleanEnum.Pqs.getCode());
|
||||
param.setDataSource(DataCleanEnum.InfluxDB.getCode());
|
||||
param.setTableName(tableName);
|
||||
List<PqReasonableRangeDto> list = pqReasonableRangeFeignClient.getData(param).getData();
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
pqReasonableRangeDtoMap = list.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity()));
|
||||
}
|
||||
return pqReasonableRangeDtoMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataV(Map<String, PqReasonableRangeDto> map, LineDetailVO.Detail line, DataVDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto;
|
||||
List<String> phaseList;
|
||||
//频率判断
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.Freq.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getFreq() < pqReasonableRangeDto.getMinValue() || dto.getFreq() > pqReasonableRangeDto.getMaxValue()) {
|
||||
//log.info("dataV-频率数据异常,已清洗!数据值:{},数据时间:{}", dto.getFreq(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getFreq()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//频率偏差判断
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.FreqDev.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getFreqDev() < pqReasonableRangeDto.getMinValue() || dto.getFreqDev() > pqReasonableRangeDto.getMaxValue()) {
|
||||
//log.info("dataV-频率偏差数据异常,已清洗!数据值:{},数据时间:{}", dto.getFreqDev(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getFreqDev()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//相电压有效值
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.RmsV.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getRms() < (pqReasonableRangeDto.getMinValue()* DataCommonUtils.getVoltageData(line.getVoltageLevel()))
|
||||
|| dto.getRms() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) {
|
||||
//log.info("dataV-相电压有效值数据异常,已清洗!数据值:{},数据时间:{}", dto.getRms(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getRms()
|
||||
,pqReasonableRangeDto.getMinValue()* DataCommonUtils.getVoltageData(line.getVoltageLevel())
|
||||
,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()));
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//正序电压
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VPos.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVPos() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))
|
||||
|| dto.getVPos() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) {
|
||||
//log.info("dataV-正序电压数据异常,已清洗!数据值:{},数据时间:{}", dto.getVPos(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVPos()
|
||||
,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())
|
||||
,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()));
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//负序电压
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VNeg.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVNeg() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))
|
||||
|| dto.getVNeg() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) {
|
||||
//log.info("dataV-负序电压数据异常,已清洗!数据值:{},数据时间:{}", dto.getVNeg(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVNeg()
|
||||
,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())
|
||||
,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()));
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//零序电压
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VZero.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVZero() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))
|
||||
|| dto.getVZero() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) {
|
||||
//log.info("dataV-零序电压数据异常,已清洗!数据值:{},数据时间:{}", dto.getVZero(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVZero()
|
||||
,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())
|
||||
,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()));
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//电压不平衡度
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VUnbalance.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVUnbalance() < pqReasonableRangeDto.getMinValue() || dto.getVUnbalance() > pqReasonableRangeDto.getMaxValue()) {
|
||||
//log.info("dataV-电压不平衡度数据异常,已清洗!数据值:{},数据时间:{}", dto.getVUnbalance(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVUnbalance()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//线电压有效值
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.RmsLvr.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getRmsLvr() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))
|
||||
|| dto.getRmsLvr() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) {
|
||||
//log.info("dataV-线电压有效值数据异常,已清洗!数据值:{},数据时间:{}", dto.getRmsLvr(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getRmsLvr()
|
||||
,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())
|
||||
,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()));
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//线电压正偏差
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VuDev.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVuDev() < pqReasonableRangeDto.getMinValue() || dto.getVuDev() > pqReasonableRangeDto.getMaxValue()) {
|
||||
//log.info("dataV-线电压正偏差数据异常,已清洗!数据值:{},数据时间:{}", dto.getVuDev(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVuDev()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//线电压负偏差
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VlDev.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVlDev() < pqReasonableRangeDto.getMinValue() || dto.getVlDev() > pqReasonableRangeDto.getMaxValue()) {
|
||||
//log.info("dataV-线电压负偏差数据异常,已清洗!数据值:{},数据时间:{}", dto.getVlDev(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVlDev()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//电压总谐波畸变率
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.VThd.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getVThd() < pqReasonableRangeDto.getMinValue() || dto.getVThd() > pqReasonableRangeDto.getMaxValue()) {
|
||||
//log.info("dataV-电压总谐波畸变率数据异常,已清洗!数据值:{},数据时间:{}", dto.getVThd(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getVThd()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
|
||||
//相(线)电压基波有效值
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.V_Data.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getV1() < (pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))
|
||||
|| dto.getV1() > (pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()))) {
|
||||
//log.info("dataV-基波电压数据异常,已清洗!数据值:{},数据时间:{}", dto.getV1(), dto.getMinTime());
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getV1()
|
||||
,pqReasonableRangeDto.getMinValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel())
|
||||
,pqReasonableRangeDto.getMaxValue()*DataCommonUtils.getVoltageData(line.getVoltageLevel()));
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataI(Map<String, PqReasonableRangeDto> map, LineDetailVO.Detail line, DataIDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto;
|
||||
List<String> phaseList;
|
||||
//线电压有效值
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.RmsI.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getRms() > line.getCT1()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getRms()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,line.getCT1());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataPlt(Map<String, PqReasonableRangeDto> map, DataPltDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto;
|
||||
List<String> phaseList;
|
||||
//线电压有效值
|
||||
pqReasonableRangeDto = map.get(DataCleanEnum.Plt.getCode());
|
||||
phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getPlt() < pqReasonableRangeDto.getMinValue() || dto.getPlt() > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getPlt()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataInHarmV(Map<String, PqReasonableRangeDto> map, DataHarmDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.V_InHarm.getCode());
|
||||
List<String> phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
// 50次谐波
|
||||
for (int i = 1; i <= 50; i++) {
|
||||
// 通过反射获取dto.getV(i)的值
|
||||
double vValue = getVValue(dto, i);
|
||||
if (vValue < pqReasonableRangeDto.getMinValue() || vValue > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(
|
||||
dto.getLineId(),
|
||||
dto.getMinTime(),
|
||||
dto.getValueType(),
|
||||
dto.getPhasicType(),
|
||||
pqReasonableRangeDto.getIndexCode(),
|
||||
(i - 0.5) + pqReasonableRangeDto.getIndexName(),
|
||||
pqReasonableRangeDto.getInfluxdbTableName(),
|
||||
vValue,
|
||||
pqReasonableRangeDto.getMinValue(),
|
||||
pqReasonableRangeDto.getMaxValue()
|
||||
);
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataHarmRateV(Map<String, PqReasonableRangeDto> map, DataHarmDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.V_Rate.getCode());
|
||||
List<String> phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
// 50次谐波
|
||||
for (int i = 2; i <= 50; i++) {
|
||||
// 通过反射获取dto.getV(i)的值
|
||||
double vValue = getVValue(dto, i);
|
||||
if (vValue < pqReasonableRangeDto.getMinValue() || vValue > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(
|
||||
dto.getLineId(),
|
||||
dto.getMinTime(),
|
||||
dto.getValueType(),
|
||||
dto.getPhasicType(),
|
||||
pqReasonableRangeDto.getIndexCode(),
|
||||
i + pqReasonableRangeDto.getIndexName(),
|
||||
pqReasonableRangeDto.getInfluxdbTableName(),
|
||||
vValue,
|
||||
pqReasonableRangeDto.getMinValue(),
|
||||
pqReasonableRangeDto.getMaxValue()
|
||||
);
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataHarmPowerP(Map<String, PqReasonableRangeDto> map, DataPowerPDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.Pf.getCode());
|
||||
List<String> phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getPf() < pqReasonableRangeDto.getMinValue() || dto.getPf() > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getPf()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataHarmPhasicV(Map<String, PqReasonableRangeDto> map, DataHarmDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.V.getCode());
|
||||
List<String> phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
// 50次谐波
|
||||
for (int i = 1; i <= 50; i++) {
|
||||
// 通过反射获取dto.getV(i)的值
|
||||
double vValue = getVValue(dto, i);
|
||||
if (vValue < pqReasonableRangeDto.getMinValue() || vValue > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(
|
||||
dto.getLineId(),
|
||||
dto.getMinTime(),
|
||||
dto.getValueType(),
|
||||
dto.getPhasicType(),
|
||||
pqReasonableRangeDto.getIndexCode(),
|
||||
i + pqReasonableRangeDto.getIndexName(),
|
||||
pqReasonableRangeDto.getInfluxdbTableName(),
|
||||
vValue,
|
||||
pqReasonableRangeDto.getMinValue(),
|
||||
pqReasonableRangeDto.getMaxValue()
|
||||
);
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataFluc(Map<String, PqReasonableRangeDto> map, DataFlucDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.Fluc.getCode());
|
||||
List<String> phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getFluc() < pqReasonableRangeDto.getMinValue() || dto.getFluc() > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getFluc()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据的标准范围,进行数据比对
|
||||
*/
|
||||
public List<PqDataVerify> judgeDataFlicker(Map<String, PqReasonableRangeDto> map, DataFlickerDto dto) {
|
||||
List<PqDataVerify> list = new ArrayList<>();
|
||||
PqReasonableRangeDto pqReasonableRangeDto = map.get(DataCleanEnum.Pst.getCode());
|
||||
List<String> phaseList = Arrays.asList(pqReasonableRangeDto.getPhaseType().split(","));
|
||||
if (phaseList.contains(dto.getPhasicType())) {
|
||||
if (dto.getPst() < pqReasonableRangeDto.getMinValue() || dto.getPst() > pqReasonableRangeDto.getMaxValue()) {
|
||||
PqDataVerify pqDataVerify = getPqDataVerify(dto.getLineId()
|
||||
,dto.getMinTime()
|
||||
,dto.getValueType()
|
||||
,dto.getPhasicType()
|
||||
,pqReasonableRangeDto.getIndexCode()
|
||||
,pqReasonableRangeDto.getIndexName()
|
||||
,pqReasonableRangeDto.getInfluxdbTableName()
|
||||
,dto.getPst()
|
||||
,pqReasonableRangeDto.getMinValue()
|
||||
,pqReasonableRangeDto.getMaxValue());
|
||||
list.add(pqDataVerify);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
public PqDataVerify getPqDataVerify(String lineId,String time,String valueType, String phasicType, String indexCode, String indexName, String indexTable, Double data, Double minValue, Double maxValue) {
|
||||
PqDataVerify pqDataVerify = new PqDataVerify();
|
||||
pqDataVerify.setLineId(lineId);
|
||||
pqDataVerify.setTime(TimeUtils.StringToLocalDateTime(time));
|
||||
pqDataVerify.setValueType(valueType);
|
||||
pqDataVerify.setPhasicType(phasicType);
|
||||
pqDataVerify.setIndexCode(indexCode);
|
||||
pqDataVerify.setIndexName(indexName);
|
||||
pqDataVerify.setIndexTable(indexTable);
|
||||
//这里对数据进行判断,如果值过大,都超出数据库存储范围会报错,无法插入,所以这里设置门槛 上下限都为1千万
|
||||
if (data > 10000000.0) {
|
||||
pqDataVerify.setAbnormalValue(9999999.0);
|
||||
} else if (data < -10000000.0) {
|
||||
pqDataVerify.setAbnormalValue(-9999999.0);
|
||||
} else {
|
||||
pqDataVerify.setAbnormalValue(data);
|
||||
}
|
||||
pqDataVerify.setMinValue(minValue);
|
||||
pqDataVerify.setMaxValue(maxValue);
|
||||
return pqDataVerify;
|
||||
}
|
||||
|
||||
private double getVValue(DataHarmDto dto, int index) {
|
||||
try {
|
||||
Method method = DataHarmDto.class.getMethod("getV" + index);
|
||||
return (double) method.invoke(dto);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to get V value for index: " + index, e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,9 +4,12 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.algorithm.service.line.IDayDataService;
|
||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||
import com.njcn.dataProcess.api.PqDataVerifyFeignClient;
|
||||
import com.njcn.dataProcess.enums.DataCleanEnum;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
|
||||
import com.njcn.dataProcess.pojo.dto.DataVDto;
|
||||
import com.njcn.dataProcess.pojo.po.PqDataVerify;
|
||||
import com.njcn.dataProcess.util.TimeUtils;
|
||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -19,6 +22,7 @@ import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
@@ -32,10 +36,12 @@ public class DayDataServiceImpl implements IDayDataService {
|
||||
private final static Integer NUM = 100;
|
||||
@Resource
|
||||
private DataVFeignClient dataVFeignClient;
|
||||
@Resource
|
||||
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
||||
|
||||
@Override
|
||||
public void dataVHandler(CalculatedParam calculatedParam) {
|
||||
logger.info("{},dataV表转r_stat_data_v_d开始=====》", LocalDateTime.now());
|
||||
logger.info("{},dataV表转r_stat_data_v_d算法开始=====》", LocalDateTime.now());
|
||||
List<DataVDto> result = new ArrayList<>();
|
||||
//远程接口获取分钟数据
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
@@ -45,6 +51,9 @@ public class DayDataServiceImpl implements IDayDataService {
|
||||
List<List<String>> pendingIds = ListUtils.partition(calculatedParam.getIdList(),NUM);
|
||||
pendingIds.forEach(list->{
|
||||
lineParam.setLineId(list);
|
||||
//添加异常数据时间点
|
||||
getAbnormalData(lineParam);
|
||||
//获取原始数据
|
||||
List<CommonMinuteDto> partList = dataVFeignClient.getBaseData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(partList)) {
|
||||
partList.forEach(item->{
|
||||
@@ -61,7 +70,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
||||
dto.setLineId(item.getLineId());
|
||||
dto.setPhasicType(item2.getPhasicType());
|
||||
dto.setValueType(item3.getValueType());
|
||||
dto.setQualityFlag("0");
|
||||
dto.setQualityFlag(item.getQualityFlag());
|
||||
channelDataVHandler(item3,valueTypes,dto,true);
|
||||
result.add(dto);
|
||||
});
|
||||
@@ -75,87 +84,103 @@ public class DayDataServiceImpl implements IDayDataService {
|
||||
}
|
||||
}
|
||||
|
||||
//获取异常数据集合
|
||||
public void getAbnormalData(LineCountEvaluateParam lineParam) {
|
||||
lineParam.setTableName(DataCleanEnum.DataV.getCode());
|
||||
// 获取异常数据,用于排除异常数据
|
||||
List<PqDataVerify> pqDataVerifies = pqDataVerifyFeignClient.queryData(lineParam).getData();
|
||||
if (CollUtil.isNotEmpty(pqDataVerifies)) {
|
||||
Map<String, List<String>> timeMap = pqDataVerifies.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
PqDataVerify::getLineId,
|
||||
Collectors.mapping(item->TimeUtils.LocalDateTimeToString(item.getTime()), Collectors.toList())
|
||||
));
|
||||
lineParam.setAbnormalTime(timeMap);
|
||||
}
|
||||
}
|
||||
|
||||
//指标处理
|
||||
//pojo1 为正常数据集合
|
||||
//pojo2 为平均值数据集合,根据不同情况用来计算cp95
|
||||
public void channelDataVHandler(CommonMinuteDto.ValueType pojo1, CommonMinuteDto.ValueType pojo2, DataVDto dto, boolean scheme) {
|
||||
CommonMinuteDto.ValueType valueType;
|
||||
String type;
|
||||
if (dto.getValueType().equalsIgnoreCase(InfluxDbSqlConstant.CP95) && !scheme) {
|
||||
valueType = pojo2;
|
||||
type = "CP95";
|
||||
} else {
|
||||
valueType = pojo1;
|
||||
type = pojo1.getValueType();
|
||||
}
|
||||
//按照指标集合排列顺序取值
|
||||
dto.setFreq(getData(valueType.getValueType(),valueType.getValueList().get(0),scheme));
|
||||
dto.setFreqDev(getData(valueType.getValueType(),valueType.getValueList().get(1),scheme));
|
||||
dto.setRms(getData(valueType.getValueType(),valueType.getValueList().get(2),scheme));
|
||||
dto.setRmsLvr(getData(valueType.getValueType(),valueType.getValueList().get(3),scheme));
|
||||
dto.setVNeg(getData(valueType.getValueType(),valueType.getValueList().get(4),scheme));
|
||||
dto.setVPos(getData(valueType.getValueType(),valueType.getValueList().get(5),scheme));
|
||||
dto.setVThd(getData(valueType.getValueType(),valueType.getValueList().get(6),scheme));
|
||||
dto.setVUnbalance(getData(valueType.getValueType(),valueType.getValueList().get(7),scheme));
|
||||
dto.setVZero(getData(valueType.getValueType(),valueType.getValueList().get(8),scheme));
|
||||
dto.setVlDev(getData(valueType.getValueType(),valueType.getValueList().get(9),scheme));
|
||||
dto.setVuDev(getData(valueType.getValueType(),valueType.getValueList().get(10),scheme));
|
||||
dto.setFreq(getData(type,valueType.getValueList().get(0),scheme));
|
||||
dto.setFreqDev(getData(type,valueType.getValueList().get(1),scheme));
|
||||
dto.setRms(getData(type,valueType.getValueList().get(2),scheme));
|
||||
dto.setRmsLvr(getData(type,valueType.getValueList().get(3),scheme));
|
||||
dto.setVNeg(getData(type,valueType.getValueList().get(4),scheme));
|
||||
dto.setVPos(getData(type,valueType.getValueList().get(5),scheme));
|
||||
dto.setVThd(getData(type,valueType.getValueList().get(6),scheme));
|
||||
dto.setVUnbalance(getData(type,valueType.getValueList().get(7),scheme));
|
||||
dto.setVZero(getData(type,valueType.getValueList().get(8),scheme));
|
||||
dto.setVlDev(getData(type,valueType.getValueList().get(9),scheme));
|
||||
dto.setVuDev(getData(type,valueType.getValueList().get(10),scheme));
|
||||
|
||||
dto.setV1(getData(valueType.getValueType(),valueType.getValueList().get(11),scheme));
|
||||
dto.setV2(getData(valueType.getValueType(),valueType.getValueList().get(12),scheme));
|
||||
dto.setV3(getData(valueType.getValueType(),valueType.getValueList().get(13),scheme));
|
||||
dto.setV4(getData(valueType.getValueType(),valueType.getValueList().get(14),scheme));
|
||||
dto.setV5(getData(valueType.getValueType(),valueType.getValueList().get(15),scheme));
|
||||
dto.setV6(getData(valueType.getValueType(),valueType.getValueList().get(16),scheme));
|
||||
dto.setV7(getData(valueType.getValueType(),valueType.getValueList().get(17),scheme));
|
||||
dto.setV8(getData(valueType.getValueType(),valueType.getValueList().get(18),scheme));
|
||||
dto.setV9(getData(valueType.getValueType(),valueType.getValueList().get(19),scheme));
|
||||
dto.setV10(getData(valueType.getValueType(),valueType.getValueList().get(20),scheme));
|
||||
dto.setV1(getData(type,valueType.getValueList().get(11),scheme));
|
||||
dto.setV2(getData(type,valueType.getValueList().get(12),scheme));
|
||||
dto.setV3(getData(type,valueType.getValueList().get(13),scheme));
|
||||
dto.setV4(getData(type,valueType.getValueList().get(14),scheme));
|
||||
dto.setV5(getData(type,valueType.getValueList().get(15),scheme));
|
||||
dto.setV6(getData(type,valueType.getValueList().get(16),scheme));
|
||||
dto.setV7(getData(type,valueType.getValueList().get(17),scheme));
|
||||
dto.setV8(getData(type,valueType.getValueList().get(18),scheme));
|
||||
dto.setV9(getData(type,valueType.getValueList().get(19),scheme));
|
||||
dto.setV10(getData(type,valueType.getValueList().get(20),scheme));
|
||||
|
||||
dto.setV11(getData(valueType.getValueType(),valueType.getValueList().get(21),scheme));
|
||||
dto.setV12(getData(valueType.getValueType(),valueType.getValueList().get(22),scheme));
|
||||
dto.setV13(getData(valueType.getValueType(),valueType.getValueList().get(23),scheme));
|
||||
dto.setV14(getData(valueType.getValueType(),valueType.getValueList().get(24),scheme));
|
||||
dto.setV15(getData(valueType.getValueType(),valueType.getValueList().get(25),scheme));
|
||||
dto.setV16(getData(valueType.getValueType(),valueType.getValueList().get(26),scheme));
|
||||
dto.setV17(getData(valueType.getValueType(),valueType.getValueList().get(27),scheme));
|
||||
dto.setV18(getData(valueType.getValueType(),valueType.getValueList().get(28),scheme));
|
||||
dto.setV19(getData(valueType.getValueType(),valueType.getValueList().get(29),scheme));
|
||||
dto.setV20(getData(valueType.getValueType(),valueType.getValueList().get(30),scheme));
|
||||
dto.setV11(getData(type,valueType.getValueList().get(21),scheme));
|
||||
dto.setV12(getData(type,valueType.getValueList().get(22),scheme));
|
||||
dto.setV13(getData(type,valueType.getValueList().get(23),scheme));
|
||||
dto.setV14(getData(type,valueType.getValueList().get(24),scheme));
|
||||
dto.setV15(getData(type,valueType.getValueList().get(25),scheme));
|
||||
dto.setV16(getData(type,valueType.getValueList().get(26),scheme));
|
||||
dto.setV17(getData(type,valueType.getValueList().get(27),scheme));
|
||||
dto.setV18(getData(type,valueType.getValueList().get(28),scheme));
|
||||
dto.setV19(getData(type,valueType.getValueList().get(29),scheme));
|
||||
dto.setV20(getData(type,valueType.getValueList().get(30),scheme));
|
||||
|
||||
dto.setV21(getData(valueType.getValueType(),valueType.getValueList().get(31),scheme));
|
||||
dto.setV22(getData(valueType.getValueType(),valueType.getValueList().get(32),scheme));
|
||||
dto.setV23(getData(valueType.getValueType(),valueType.getValueList().get(33),scheme));
|
||||
dto.setV24(getData(valueType.getValueType(),valueType.getValueList().get(34),scheme));
|
||||
dto.setV25(getData(valueType.getValueType(),valueType.getValueList().get(35),scheme));
|
||||
dto.setV26(getData(valueType.getValueType(),valueType.getValueList().get(36),scheme));
|
||||
dto.setV27(getData(valueType.getValueType(),valueType.getValueList().get(37),scheme));
|
||||
dto.setV28(getData(valueType.getValueType(),valueType.getValueList().get(38),scheme));
|
||||
dto.setV29(getData(valueType.getValueType(),valueType.getValueList().get(39),scheme));
|
||||
dto.setV30(getData(valueType.getValueType(),valueType.getValueList().get(40),scheme));
|
||||
dto.setV21(getData(type,valueType.getValueList().get(31),scheme));
|
||||
dto.setV22(getData(type,valueType.getValueList().get(32),scheme));
|
||||
dto.setV23(getData(type,valueType.getValueList().get(33),scheme));
|
||||
dto.setV24(getData(type,valueType.getValueList().get(34),scheme));
|
||||
dto.setV25(getData(type,valueType.getValueList().get(35),scheme));
|
||||
dto.setV26(getData(type,valueType.getValueList().get(36),scheme));
|
||||
dto.setV27(getData(type,valueType.getValueList().get(37),scheme));
|
||||
dto.setV28(getData(type,valueType.getValueList().get(38),scheme));
|
||||
dto.setV29(getData(type,valueType.getValueList().get(39),scheme));
|
||||
dto.setV30(getData(type,valueType.getValueList().get(40),scheme));
|
||||
|
||||
dto.setV31(getData(valueType.getValueType(),valueType.getValueList().get(41),scheme));
|
||||
dto.setV32(getData(valueType.getValueType(),valueType.getValueList().get(42),scheme));
|
||||
dto.setV33(getData(valueType.getValueType(),valueType.getValueList().get(43),scheme));
|
||||
dto.setV34(getData(valueType.getValueType(),valueType.getValueList().get(44),scheme));
|
||||
dto.setV35(getData(valueType.getValueType(),valueType.getValueList().get(45),scheme));
|
||||
dto.setV36(getData(valueType.getValueType(),valueType.getValueList().get(46),scheme));
|
||||
dto.setV37(getData(valueType.getValueType(),valueType.getValueList().get(47),scheme));
|
||||
dto.setV38(getData(valueType.getValueType(),valueType.getValueList().get(48),scheme));
|
||||
dto.setV39(getData(valueType.getValueType(),valueType.getValueList().get(49),scheme));
|
||||
dto.setV40(getData(valueType.getValueType(),valueType.getValueList().get(50),scheme));
|
||||
dto.setV31(getData(type,valueType.getValueList().get(41),scheme));
|
||||
dto.setV32(getData(type,valueType.getValueList().get(42),scheme));
|
||||
dto.setV33(getData(type,valueType.getValueList().get(43),scheme));
|
||||
dto.setV34(getData(type,valueType.getValueList().get(44),scheme));
|
||||
dto.setV35(getData(type,valueType.getValueList().get(45),scheme));
|
||||
dto.setV36(getData(type,valueType.getValueList().get(46),scheme));
|
||||
dto.setV37(getData(type,valueType.getValueList().get(47),scheme));
|
||||
dto.setV38(getData(type,valueType.getValueList().get(48),scheme));
|
||||
dto.setV39(getData(type,valueType.getValueList().get(49),scheme));
|
||||
dto.setV40(getData(type,valueType.getValueList().get(50),scheme));
|
||||
|
||||
dto.setV41(getData(valueType.getValueType(),valueType.getValueList().get(51),scheme));
|
||||
dto.setV42(getData(valueType.getValueType(),valueType.getValueList().get(52),scheme));
|
||||
dto.setV43(getData(valueType.getValueType(),valueType.getValueList().get(53),scheme));
|
||||
dto.setV44(getData(valueType.getValueType(),valueType.getValueList().get(54),scheme));
|
||||
dto.setV45(getData(valueType.getValueType(),valueType.getValueList().get(55),scheme));
|
||||
dto.setV46(getData(valueType.getValueType(),valueType.getValueList().get(56),scheme));
|
||||
dto.setV47(getData(valueType.getValueType(),valueType.getValueList().get(57),scheme));
|
||||
dto.setV48(getData(valueType.getValueType(),valueType.getValueList().get(58),scheme));
|
||||
dto.setV49(getData(valueType.getValueType(),valueType.getValueList().get(59),scheme));
|
||||
dto.setV50(getData(valueType.getValueType(),valueType.getValueList().get(60),scheme));
|
||||
dto.setV41(getData(type,valueType.getValueList().get(51),scheme));
|
||||
dto.setV42(getData(type,valueType.getValueList().get(52),scheme));
|
||||
dto.setV43(getData(type,valueType.getValueList().get(53),scheme));
|
||||
dto.setV44(getData(type,valueType.getValueList().get(54),scheme));
|
||||
dto.setV45(getData(type,valueType.getValueList().get(55),scheme));
|
||||
dto.setV46(getData(type,valueType.getValueList().get(56),scheme));
|
||||
dto.setV47(getData(type,valueType.getValueList().get(57),scheme));
|
||||
dto.setV48(getData(type,valueType.getValueList().get(58),scheme));
|
||||
dto.setV49(getData(type,valueType.getValueList().get(59),scheme));
|
||||
dto.setV50(getData(type,valueType.getValueList().get(60),scheme));
|
||||
}
|
||||
|
||||
|
||||
//数据类型处理
|
||||
//cp95值的计算有点区别,会用到cp95的集合或者平均值的集合
|
||||
public Double getData(String valueType, List<Double> list, boolean scheme) {
|
||||
|
||||
Reference in New Issue
Block a user