完成综合评估算法
This commit is contained in:
@@ -33,6 +33,10 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
private IDataIntegrityService dataIntegrityService;
|
||||
@Resource
|
||||
private IEventDetailService eventDetailService;
|
||||
@Resource
|
||||
private IDataComAssService dataComAssService;
|
||||
@Resource
|
||||
private IPollutionService pollutionService;
|
||||
|
||||
/**
|
||||
* 数据清洗 电压表
|
||||
@@ -389,6 +393,36 @@ public class MeasurementExecutor extends BaseExecutor {
|
||||
dataCrossingService.limitQualifiedDayHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 综合评估
|
||||
* @param bindCmp
|
||||
* @return
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataComAss", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataComAssAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataComAss", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataComAssProcess(NodeComponent bindCmp) {
|
||||
dataComAssService.dataComAssHandler(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 监测点污区图
|
||||
* @param bindCmp
|
||||
* @return
|
||||
*/
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataPollution", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean dataPollutionAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataPollution", nodeType = NodeTypeEnum.COMMON)
|
||||
public void dataPollutionProcess(NodeComponent bindCmp) {
|
||||
pollutionService.handleDay(bindCmp.getRequestData());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 监测点数据完整性
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.algorithm.service.line;
|
||||
|
||||
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/6 10:22
|
||||
*/
|
||||
public interface IDataComAssService {
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 电能质量综合评估-日表
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/18 13:48
|
||||
*/
|
||||
void dataComAssHandler(CalculatedParam calculatedParam);
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,81 @@
|
||||
package com.njcn.algorithm.service.line;
|
||||
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
|
||||
/**
|
||||
* 测点污区数据
|
||||
*/
|
||||
public interface IPollutionService {
|
||||
|
||||
/**
|
||||
* 监测点误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleDay(CalculatedParam<String> calculatedParam);
|
||||
/**
|
||||
* 单位(天)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleOrgDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
/**
|
||||
* 单位(月)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleOrgMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
/**
|
||||
* 单位(季)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleOrgQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
/**
|
||||
* 单位(年)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleOrgYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
/**
|
||||
* 变电站(天)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleSubstationDay(CalculatedParam<String> calculatedParam);
|
||||
|
||||
/**
|
||||
* 变电站(月)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleSubstationMonth(CalculatedParam<String> calculatedParam);
|
||||
|
||||
/**
|
||||
* 变电站(季)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleSubstationQtr(CalculatedParam<String> calculatedParam);
|
||||
|
||||
/**
|
||||
* 变电站(年)误区图计算
|
||||
* @param calculatedParam
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/19 14:03
|
||||
*/
|
||||
void handleSubstationYear(CalculatedParam<String> calculatedParam);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,267 @@
|
||||
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.IDataComAssService;
|
||||
import com.njcn.dataProcess.api.DataComAssFeignClient;
|
||||
import com.njcn.dataProcess.api.DataFlickerFeignClient;
|
||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataComassesDPO;
|
||||
import com.njcn.dataProcess.util.TimeUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: wr
|
||||
* @Date: 2025/3/18 13:47
|
||||
*/
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class DataComAssServiceImpl implements IDataComAssService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
||||
@Value("${line.num}")
|
||||
private Integer NUM = 100;
|
||||
@Resource
|
||||
private DataVFeignClient dataVFeignClient;
|
||||
|
||||
@Resource
|
||||
private DataFlickerFeignClient dataFlickerFeignClient;
|
||||
@Resource
|
||||
private DataComAssFeignClient dataComAssFeignClient;
|
||||
|
||||
@Override
|
||||
public void dataComAssHandler(CalculatedParam calculatedParam) {
|
||||
List<DataComassesDPO> list = new ArrayList<>();
|
||||
logger.info("{},r_stat_comasses_d算法开始=====》", LocalDateTime.now());
|
||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||
List<String> lineIdList = calculatedParam.getIdList();
|
||||
for (String lineId : lineIdList) {
|
||||
DataComassesDPO rStatComassesDpo = new DataComassesDPO();
|
||||
rStatComassesDpo.setTime(calculatedParam.getDataDate());
|
||||
rStatComassesDpo.setLineId(lineId);
|
||||
lineParam.setLineId(Arrays.asList(lineId));
|
||||
Map<String, Object> fields = getGeneralData(lineParam);
|
||||
if (CollUtil.isNotEmpty(fields)) {
|
||||
rStatComassesDpo.setFreqDev1(Objects.isNull(fields.get("freq_dev1")) ? 0.0 : Double.parseDouble(fields.get("freq_dev1").toString()));
|
||||
rStatComassesDpo.setFreqDev2(Objects.isNull(fields.get("freq_dev2")) ? 0.0 : Double.parseDouble(fields.get("freq_dev2").toString()));
|
||||
rStatComassesDpo.setFreqDev3(Objects.isNull(fields.get("freq_dev3")) ? 0.0 : Double.parseDouble(fields.get("freq_dev3").toString()));
|
||||
rStatComassesDpo.setFreqDev4(Objects.isNull(fields.get("freq_dev4")) ? 0.0 : Double.parseDouble(fields.get("freq_dev4").toString()));
|
||||
rStatComassesDpo.setFreqDev5(Objects.isNull(fields.get("freq_dev5")) ? 0.0 : Double.parseDouble(fields.get("freq_dev5").toString()));
|
||||
|
||||
rStatComassesDpo.setVuDev1(Objects.isNull(fields.get("vu_dev1")) ? 0.0 : Double.parseDouble(fields.get("vu_dev1").toString()));
|
||||
rStatComassesDpo.setVuDev2(Objects.isNull(fields.get("vu_dev2")) ? 0.0 : Double.parseDouble(fields.get("vu_dev2").toString()));
|
||||
rStatComassesDpo.setVuDev3(Objects.isNull(fields.get("vu_dev3")) ? 0.0 : Double.parseDouble(fields.get("vu_dev3").toString()));
|
||||
rStatComassesDpo.setVuDev4(Objects.isNull(fields.get("vu_dev4")) ? 0.0 : Double.parseDouble(fields.get("vu_dev4").toString()));
|
||||
rStatComassesDpo.setVuDev5(Objects.isNull(fields.get("vu_dev5")) ? 0.0 : Double.parseDouble(fields.get("vu_dev5").toString()));
|
||||
|
||||
rStatComassesDpo.setDataPst1(Objects.isNull(fields.get("data_pst1")) ? 0.0 : Double.parseDouble(fields.get("data_pst1").toString()));
|
||||
rStatComassesDpo.setDataPst2(Objects.isNull(fields.get("data_pst2")) ? 0.0 : Double.parseDouble(fields.get("data_pst2").toString()));
|
||||
rStatComassesDpo.setDataPst3(Objects.isNull(fields.get("data_pst3")) ? 0.0 : Double.parseDouble(fields.get("data_pst3").toString()));
|
||||
rStatComassesDpo.setDataPst4(Objects.isNull(fields.get("data_pst4")) ? 0.0 : Double.parseDouble(fields.get("data_pst4").toString()));
|
||||
rStatComassesDpo.setDataPst5(Objects.isNull(fields.get("data_pst5")) ? 0.0 : Double.parseDouble(fields.get("data_pst5").toString()));
|
||||
|
||||
rStatComassesDpo.setVUnbalance1(Objects.isNull(fields.get("v_unbalance1")) ? 0.0 : Double.parseDouble(fields.get("v_unbalance1").toString()));
|
||||
rStatComassesDpo.setVUnbalance2(Objects.isNull(fields.get("v_unbalance2")) ? 0.0 : Double.parseDouble(fields.get("v_unbalance2").toString()));
|
||||
rStatComassesDpo.setVUnbalance3(Objects.isNull(fields.get("v_unbalance3")) ? 0.0 : Double.parseDouble(fields.get("v_unbalance3").toString()));
|
||||
rStatComassesDpo.setVUnbalance4(Objects.isNull(fields.get("v_unbalance4")) ? 0.0 : Double.parseDouble(fields.get("v_unbalance4").toString()));
|
||||
rStatComassesDpo.setVUnbalance5(Objects.isNull(fields.get("v_unbalance5")) ? 0.0 : Double.parseDouble(fields.get("v_unbalance5").toString()));
|
||||
|
||||
rStatComassesDpo.setVThd1(Objects.isNull(fields.get("v_thd1")) ? 0.0 : Double.parseDouble(fields.get("v_thd1").toString()));
|
||||
rStatComassesDpo.setVThd2(Objects.isNull(fields.get("v_thd2")) ? 0.0 : Double.parseDouble(fields.get("v_thd2").toString()));
|
||||
rStatComassesDpo.setVThd3(Objects.isNull(fields.get("v_thd3")) ? 0.0 : Double.parseDouble(fields.get("v_thd3").toString()));
|
||||
rStatComassesDpo.setVThd4(Objects.isNull(fields.get("v_thd4")) ? 0.0 : Double.parseDouble(fields.get("v_thd4").toString()));
|
||||
rStatComassesDpo.setVThd5(Objects.isNull(fields.get("v_thd5")) ? 0.0 : Double.parseDouble(fields.get("v_thd5").toString()));
|
||||
|
||||
rStatComassesDpo.setEvent1(Objects.isNull(fields.get("event1")) ? 0.0 : Double.parseDouble(fields.get("event1").toString()));
|
||||
rStatComassesDpo.setEvent2(Objects.isNull(fields.get("event2")) ? 0.0 : Double.parseDouble(fields.get("event2").toString()));
|
||||
rStatComassesDpo.setEvent3(Objects.isNull(fields.get("event3")) ? 0.0 : Double.parseDouble(fields.get("event3").toString()));
|
||||
rStatComassesDpo.setEvent4(Objects.isNull(fields.get("event4")) ? 0.0 : Double.parseDouble(fields.get("event4").toString()));
|
||||
rStatComassesDpo.setEvent5(Objects.isNull(fields.get("event5")) ? 0.0 : Double.parseDouble(fields.get("event5").toString()));
|
||||
list.add(rStatComassesDpo);
|
||||
}
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
dataComAssFeignClient.batchInsertion(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Map<String, Object> getGeneralData(LineCountEvaluateParam lineParam) {
|
||||
Map<String, Object> outMap = new HashMap<>(30);
|
||||
BigDecimal hundred = BigDecimal.valueOf(100);
|
||||
//************************************电压偏差********************************************
|
||||
lineParam.setPhasicType(Arrays.asList("A","B","C"));
|
||||
lineParam.setValueType(Arrays.asList("AVG"));
|
||||
lineParam.setColumnName("vu_dev");
|
||||
lineParam.setGe("10");
|
||||
Integer vuDev1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("7");
|
||||
lineParam.setLt("10");
|
||||
Integer vuDev2 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("4");
|
||||
lineParam.setLt("7");
|
||||
Integer vuDev3 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("2");
|
||||
lineParam.setLt("4");
|
||||
Integer vuDev4 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0");
|
||||
lineParam.setLt("2");
|
||||
Integer vuDev5 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
BigDecimal vuDevAll = BigDecimal.valueOf(vuDev1 + vuDev2 + vuDev3 + vuDev4 + vuDev5);
|
||||
if (vuDevAll.compareTo(BigDecimal.ZERO) != 0) {
|
||||
outMap.put("vu_dev1", BigDecimal.valueOf(vuDev1).multiply(hundred).divide(vuDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("vu_dev2", BigDecimal.valueOf(vuDev2).multiply(hundred).divide(vuDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("vu_dev3", BigDecimal.valueOf(vuDev3).multiply(hundred).divide(vuDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("vu_dev4", BigDecimal.valueOf(vuDev4).multiply(hundred).divide(vuDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("vu_dev5", BigDecimal.valueOf(vuDev5).multiply(hundred).divide(vuDevAll, 3, RoundingMode.HALF_UP));
|
||||
}
|
||||
//************************************频率偏差********************************************
|
||||
lineParam.setColumnName("freq_dev");
|
||||
lineParam.setGe("0.3");
|
||||
Integer freqDev1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.2");
|
||||
lineParam.setLt("0.3");
|
||||
Integer freqDev2 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.1");
|
||||
lineParam.setLt("0.2");
|
||||
Integer freqDev3 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.05");
|
||||
lineParam.setLt("0.1");
|
||||
Integer freqDev4 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0");
|
||||
lineParam.setLt("0.05");
|
||||
Integer freqDev5 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
BigDecimal freqDevAll = BigDecimal.valueOf(freqDev1 + freqDev2 + freqDev3 + freqDev4 + freqDev5);
|
||||
if (freqDevAll.compareTo(BigDecimal.ZERO) != 0) {
|
||||
outMap.put("freq_dev1", BigDecimal.valueOf(freqDev1).multiply(hundred).divide(freqDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("freq_dev2", BigDecimal.valueOf(freqDev2).multiply(hundred).divide(freqDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("freq_dev3", BigDecimal.valueOf(freqDev3).multiply(hundred).divide(freqDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("freq_dev4", BigDecimal.valueOf(freqDev4).multiply(hundred).divide(freqDevAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("freq_dev5", BigDecimal.valueOf(freqDev5).multiply(hundred).divide(freqDevAll, 3, RoundingMode.HALF_UP));
|
||||
}
|
||||
//************************************谐波畸变率********************************************
|
||||
lineParam.setColumnName("v_thd");
|
||||
lineParam.setValueType(Arrays.asList("CP95"));
|
||||
lineParam.setGe("6");
|
||||
Integer vThd1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("4");
|
||||
lineParam.setLt("6");
|
||||
Integer vThd2 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("2");
|
||||
lineParam.setLt("4");
|
||||
Integer vThd3 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("1");
|
||||
lineParam.setLt("2");
|
||||
Integer vThd4 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0");
|
||||
lineParam.setLt("1");
|
||||
Integer vThd5 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
BigDecimal vThdAll = BigDecimal.valueOf(vThd1 + vThd2 + vThd3 + vThd4 + vThd5);
|
||||
if (vThdAll.compareTo(BigDecimal.ZERO) != 0) {
|
||||
outMap.put("v_thd1", BigDecimal.valueOf(vThd1).multiply(hundred).divide(vThdAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_thd2", BigDecimal.valueOf(vThd2).multiply(hundred).divide(vThdAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_thd3", BigDecimal.valueOf(vThd3).multiply(hundred).divide(vThdAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_thd4", BigDecimal.valueOf(vThd4).multiply(hundred).divide(vThdAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_thd5", BigDecimal.valueOf(vThd5).multiply(hundred).divide(vThdAll, 3, RoundingMode.HALF_UP));
|
||||
}
|
||||
|
||||
//************************************三相电压不平衡度********************************************
|
||||
lineParam.setColumnName("v_unbalance");
|
||||
lineParam.setGe("4");
|
||||
Integer vUnbalance1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("2");
|
||||
lineParam.setLt("4");
|
||||
Integer vUnbalance2 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("1");
|
||||
lineParam.setLt("2");
|
||||
Integer vUnbalance3 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.5");
|
||||
lineParam.setLt("1");
|
||||
Integer vUnbalance4 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0");
|
||||
lineParam.setLt("0.5");
|
||||
Integer vUnbalance5 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
BigDecimal vUnbalanceAll = BigDecimal.valueOf(vUnbalance1 + vUnbalance2 + vUnbalance3 + vUnbalance4 + vUnbalance5);
|
||||
if (vUnbalanceAll.compareTo(BigDecimal.ZERO) != 0) {
|
||||
outMap.put("v_unbalance1", BigDecimal.valueOf(vUnbalance1).multiply(hundred).divide(vUnbalanceAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_unbalance2", BigDecimal.valueOf(vUnbalance2).multiply(hundred).divide(vUnbalanceAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_unbalance3", BigDecimal.valueOf(vUnbalance3).multiply(hundred).divide(vUnbalanceAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_unbalance4", BigDecimal.valueOf(vUnbalance4).multiply(hundred).divide(vUnbalanceAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("v_unbalance5", BigDecimal.valueOf(vUnbalance5).multiply(hundred).divide(vUnbalanceAll, 3, RoundingMode.HALF_UP));
|
||||
}
|
||||
//************************************电压波动(短时闪变)********************************************
|
||||
lineParam.setColumnName("pst");
|
||||
lineParam.setValueType(null);
|
||||
lineParam.setGe("0.8");
|
||||
Integer plt1 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.6");
|
||||
lineParam.setLt("0.8");
|
||||
Integer plt2 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.4");
|
||||
lineParam.setLt("0.6");
|
||||
Integer plt3 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0.2");
|
||||
lineParam.setLt("0.4");
|
||||
Integer plt4 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
|
||||
lineParam.setGe("0");
|
||||
lineParam.setLt("0.2");
|
||||
Integer plt5 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||
BigDecimal pltAll = BigDecimal.valueOf(plt1 + plt2 + plt3 + plt4 + plt5);
|
||||
if (pltAll.compareTo(BigDecimal.ZERO) != 0) {
|
||||
outMap.put("data_plt1", BigDecimal.valueOf(plt1).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("data_plt2", BigDecimal.valueOf(plt2).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("data_plt3", BigDecimal.valueOf(plt3).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("data_plt4", BigDecimal.valueOf(plt4).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||
outMap.put("data_plt5", BigDecimal.valueOf(plt5).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||
}
|
||||
|
||||
if (!CollUtil.isEmpty(outMap)) {
|
||||
outMap.put("event1", 100.0);
|
||||
outMap.put("event2", 0.0);
|
||||
outMap.put("event3", 0.0);
|
||||
outMap.put("event4", 0.0);
|
||||
outMap.put("event5", 0.0);
|
||||
}
|
||||
return outMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -34,6 +34,8 @@ import org.springframework.util.CollectionUtils;
|
||||
import javax.annotation.Resource;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
@@ -281,18 +283,18 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||
qualified.setTime(calculatedParam.getDataDate());
|
||||
int all = value.stream().mapToInt(DataLimitRateDto::getAllTime).sum();
|
||||
if (all > 0) {
|
||||
qualified.setFreqDevOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getFreqDevOvertime).sum() * 100.0, all)));
|
||||
qualified.setVoltageDevOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getVoltageDevOvertime).sum() * 100.0, all)));
|
||||
qualified.setUbalanceOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getUbalanceOvertime).sum() * 100.0, all)));
|
||||
qualified.setUaberranceOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getUaberranceOvertime).sum() * 100.0, all)));
|
||||
qualified.setINegOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getINegOvertime).sum() * 100.0, all)));
|
||||
qualified.setFreqDevOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getFreqDevOvertime).sum(), all)));
|
||||
qualified.setVoltageDevOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getVoltageDevOvertime).sum(), all)));
|
||||
qualified.setUbalanceOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getUbalanceOvertime).sum(), all)));
|
||||
qualified.setUaberranceOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getUaberranceOvertime).sum(), all)));
|
||||
qualified.setINegOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getINegOvertime).sum(), all)));
|
||||
setOverTime(2, 25, "uharm", value, qualified, all);
|
||||
setOverTime(2, 25, "iharm", value, qualified, all);
|
||||
setOverTime(1, 16, "inuharm", value, qualified, all);
|
||||
}
|
||||
int flickerAll = value.stream().mapToInt(DataLimitRateDto::getFlickerAllTime).sum();
|
||||
if (flickerAll > 0) {
|
||||
qualified.setFlickerOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getFlickerOvertime).sum() * 100.0, flickerAll)));
|
||||
qualified.setFlickerOvertime(PubUtils.doubleRound(2, 100.0 - getaDouble(value.stream().mapToInt(DataLimitRateDto::getFlickerOvertime).sum(), flickerAll)));
|
||||
}
|
||||
info.add(qualified);
|
||||
|
||||
@@ -344,39 +346,56 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||
DataQualifiedDetail qualified = new DataQualifiedDetail();
|
||||
qualified.setLineId(key);
|
||||
qualified.setTime(lineParam.getStartTime());
|
||||
qualified.setFreqDevOvertime(PubUtils.doubleRound(2, value.stream().mapToDouble(DataQualifiedDetail::getFreqDevOvertime).average().getAsDouble()));
|
||||
qualified.setVoltageDevOvertime(PubUtils.doubleRound(2, value.stream().mapToDouble(DataQualifiedDetail::getVoltageDevOvertime).average().getAsDouble()));
|
||||
qualified.setUbalanceOvertime(PubUtils.doubleRound(2, value.stream().mapToDouble(DataQualifiedDetail::getUbalanceOvertime).average().getAsDouble()));
|
||||
qualified.setUaberranceOvertime(PubUtils.doubleRound(2, value.stream().mapToDouble(DataQualifiedDetail::getUaberranceOvertime).average().getAsDouble()));
|
||||
qualified.setINegOvertime(PubUtils.doubleRound(2, value.stream().mapToDouble(DataQualifiedDetail::getINegOvertime).average().getAsDouble()));
|
||||
qualified.setFreqDevOvertime(getaDouble(value.stream().filter(x -> ObjectUtil.isNotNull(x.getFreqDevOvertime())).map(DataQualifiedDetail::getFreqDevOvertime).collect(Collectors.toList())));
|
||||
qualified.setVoltageDevOvertime(getaDouble(value.stream().filter(x -> ObjectUtil.isNotNull(x.getVoltageDevOvertime())).map(DataQualifiedDetail::getVoltageDevOvertime).collect(Collectors.toList())));
|
||||
qualified.setUbalanceOvertime(getaDouble(value.stream().filter(x -> ObjectUtil.isNotNull(x.getUbalanceOvertime())).map(DataQualifiedDetail::getUbalanceOvertime).collect(Collectors.toList())));
|
||||
qualified.setUaberranceOvertime(getaDouble(value.stream().filter(x -> ObjectUtil.isNotNull(x.getUaberranceOvertime())).map(DataQualifiedDetail::getUaberranceOvertime).collect(Collectors.toList())));
|
||||
qualified.setINegOvertime(getaDouble(value.stream().filter(x -> ObjectUtil.isNotNull(x.getINegOvertime())).map(DataQualifiedDetail::getINegOvertime).collect(Collectors.toList())));
|
||||
qualified.setFlickerOvertime(getaDouble(value.stream().filter(x -> ObjectUtil.isNotNull(x.getFlickerOvertime())).map(DataQualifiedDetail::getFlickerOvertime).collect(Collectors.toList())));
|
||||
setOverTime(2, 25, "uharm", value, qualified);
|
||||
setOverTime(2, 25, "iharm", value, qualified);
|
||||
setOverTime(1, 16, "inuharm", value, qualified);
|
||||
info.add(qualified);
|
||||
}
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
private double getaDouble(double value, int all) {
|
||||
return value * 100.0 / all;
|
||||
private Double getaDouble(List<Double> doubles) {
|
||||
List<Double> numList = doubles.stream().filter(x -> ObjectUtil.isNotNull(x)).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(numList)){
|
||||
double asDouble = numList.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
|
||||
return PubUtils.doubleRound(2, asDouble);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private double getaDouble(double value, int all) {
|
||||
double v = BigDecimal.valueOf(value * 100.0).divide(BigDecimal.valueOf(all), 4, RoundingMode.HALF_UP).doubleValue();
|
||||
return v > 100 ? 100 : v;
|
||||
}
|
||||
|
||||
private void setOverTime(Integer start, Integer end, String targetName, List<DataQualifiedDetail> value, DataQualifiedDetail qualified) {
|
||||
for (int i = start; i <= end; i++) {
|
||||
// 构造方法名
|
||||
String methodName = targetName + i + "Overtime";
|
||||
try {
|
||||
Field finalField = DataLimitRateDto.class.getDeclaredField(methodName);
|
||||
Field finalField = DataQualifiedDetail.class.getDeclaredField(methodName);
|
||||
finalField.setAccessible(true);
|
||||
double v = PubUtils.doubleRound(2, value.stream().mapToDouble(temp -> {
|
||||
Double o;
|
||||
List<Double> collect = value.stream().map(temp -> {
|
||||
Object o;
|
||||
try {
|
||||
o = (Double) finalField.get(temp);
|
||||
o = finalField.get(temp);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.doubleValue();
|
||||
}).average().getAsDouble());
|
||||
if(ObjectUtil.isNotNull(o)){
|
||||
return (Double)o;
|
||||
}
|
||||
return null;
|
||||
}).collect(Collectors.toList());
|
||||
Double v = getaDouble(collect);
|
||||
Field declared = DataQualifiedDetail.class.getDeclaredField(methodName);
|
||||
declared.setAccessible(true);
|
||||
declared.set(qualified, v);
|
||||
@@ -385,6 +404,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setOverTime(Integer start, Integer end, String targetName, List<DataLimitRateDto> value, DataQualifiedDetail qualified, int all) {
|
||||
for (int i = start; i <= end; i++) {
|
||||
// 构造方法名
|
||||
@@ -400,7 +420,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return o.intValue();
|
||||
}).sum() * 100.0, all));
|
||||
}).sum(), all));
|
||||
Field declared = DataQualifiedDetail.class.getDeclaredField(methodName);
|
||||
declared.setAccessible(true);
|
||||
declared.set(qualified, v);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,38 +1,27 @@
|
||||
package com.njcn.algorithm.serviceimpl.line;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.api.R;
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.algorithm.service.line.IPollutionService;
|
||||
import com.njcn.dataProcess.api.DataHarmRateVFeignClient;
|
||||
import com.njcn.dataProcess.api.DataIFeignClient;
|
||||
import com.njcn.dataProcess.api.DataPltFeignClient;
|
||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||
import com.njcn.dataProcess.dto.DataVDTO;
|
||||
import com.njcn.dataProcess.dto.PollutionDTO;
|
||||
import com.njcn.dataProcess.api.*;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.po.relation.RMpPollutionDPO;
|
||||
import com.njcn.dataProcess.pojo.dto.DataHarmDto;
|
||||
import com.njcn.dataProcess.pojo.dto.DataIDto;
|
||||
import com.njcn.dataProcess.pojo.dto.DataPltDto;
|
||||
import com.njcn.dataProcess.pojo.dto.DataVDto;
|
||||
import com.njcn.dataProcess.pojo.po.RStatDataVD;
|
||||
import com.njcn.dataProcess.pojo.dto.*;
|
||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.biz.pojo.po.Overlimit;
|
||||
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.function.BinaryOperator;
|
||||
@@ -51,20 +40,16 @@ import java.util.stream.Stream;
|
||||
public class PollutionServiceImpl implements IPollutionService {
|
||||
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
|
||||
private final DataVFeignClient dataVFeignClient;
|
||||
|
||||
private final DataHarmRateVFeignClient dataHarmRateVFeignClient;
|
||||
|
||||
private final DataPltFeignClient dataPltFeignClient;
|
||||
|
||||
private final DataIFeignClient dataIFeignClient;
|
||||
private final DataPollutionFeignClient dataPollutionFeignClient;
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<String> calculatedParam) {
|
||||
List<RMpPollutionDPO> pollutionList;
|
||||
List<DataPollutionD> pollutionList;
|
||||
|
||||
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POLLUTION_STATIS.getCode()).getData();
|
||||
Map<String, DictData> dictData = dictDataList.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
|
||||
@@ -82,49 +67,99 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
lineCountEvaluateParam.setEndTime(endDay);
|
||||
|
||||
//指标数据获取
|
||||
Map<String, RMpPollutionDPO> harmonicVoltageList = getHarmonicVoltage(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> harmonicCurrentList = getHarmonicCurrent(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> frequencyDeviationList = getFrequencyDeviation(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> voltageDeviationList = getVoltageDeviation(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> threePhaseVoltageList = getThreePhaseVoltageUnbalance(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> negativeSequenceList = getNegativeSequenceCurrent(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> interHarmonicVoltageList = getInterharmonicVoltage(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> voltageFlickerList = getVoltageFlicker(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> harmonicVoltageList = getHarmonicVoltage(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> harmonicCurrentList = getHarmonicCurrent(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> frequencyDeviationList = getFrequencyDeviation(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> voltageDeviationList = getVoltageDeviation(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> threePhaseVoltageList = getThreePhaseVoltageUnbalance(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> negativeSequenceList = getNegativeSequenceCurrent(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> interHarmonicVoltageList = getInterharmonicVoltage(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> voltageFlickerList = getVoltageFlicker(lineCountEvaluateParam, limitMap);
|
||||
|
||||
|
||||
pollutionList = processPollutionList(local,idList,dictData, harmonicVoltageList, harmonicCurrentList, frequencyDeviationList, voltageDeviationList,
|
||||
pollutionList = processPollutionList(local, idList, dictData, harmonicVoltageList, harmonicCurrentList, frequencyDeviationList, voltageDeviationList,
|
||||
threePhaseVoltageList, negativeSequenceList, interHarmonicVoltageList, voltageFlickerList);
|
||||
|
||||
//TODO 插入数据库
|
||||
if (CollUtil.isNotEmpty(pollutionList)) {
|
||||
dataPollutionFeignClient.batchInsertion(pollutionList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleOrgDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
LocalDate local = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate());
|
||||
QueryWrapper<DataPollutionD> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
|
||||
Collection<LineDevGetDTO> union = CollectionUtils.union(Optional.ofNullable(deptGetChildrenMoreDTO.getLineBaseList()).orElse(new ArrayList<>()),
|
||||
Optional.ofNullable(deptGetChildrenMoreDTO.getPwMonitorIds()).orElse(new ArrayList<>()));
|
||||
List<String> lineIds = union.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleOrgMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleOrgQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleOrgYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleSubstationDay(CalculatedParam<String> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleSubstationMonth(CalculatedParam<String> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleSubstationQtr(CalculatedParam<String> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleSubstationYear(CalculatedParam<String> calculatedParam) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void assPollution(String lineId, LocalDate local, DictData dic, Map<String, RMpPollutionDPO> map,List<RMpPollutionDPO> result) {
|
||||
if(map.containsKey(lineId)){
|
||||
RMpPollutionDPO tem = map.get(lineId);
|
||||
private void assPollution(String lineId, LocalDate local, DictData dic, Map<String, DataPollutionD> map, List<DataPollutionD> result) {
|
||||
DataPollutionD tem;
|
||||
if (map.containsKey(lineId)) {
|
||||
tem = map.get(lineId);
|
||||
tem.setPollutionType(dic.getId());
|
||||
tem.setDataDate(local);
|
||||
result.add(tem);
|
||||
}else{
|
||||
RMpPollutionDPO tem = new RMpPollutionDPO();
|
||||
} else {
|
||||
tem = new DataPollutionD();
|
||||
tem.setLineId(lineId);
|
||||
tem.setPollutionType(dic.getId());
|
||||
tem.setDataDate(local);
|
||||
tem.setValue(0.0);
|
||||
result.add(tem);
|
||||
}
|
||||
result.add(tem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数拼装处理
|
||||
*/
|
||||
private List<RMpPollutionDPO> processPollutionList(LocalDate local, List<String> lineIds, Map<String, DictData> dictData,
|
||||
Map<String, RMpPollutionDPO> harmonicVoltageMap, Map<String, RMpPollutionDPO> harmonicCurrentMap,
|
||||
Map<String, RMpPollutionDPO> frequencyDeviationMap, Map<String, RMpPollutionDPO> voltageDeviationMap,
|
||||
Map<String, RMpPollutionDPO> threePhaseVoltageMap, Map<String, RMpPollutionDPO> negativeSequenceMap,
|
||||
Map<String, RMpPollutionDPO> interharmonicVoltageMap, Map<String,RMpPollutionDPO> voltageFlickerMap) {
|
||||
List<RMpPollutionDPO> result = new ArrayList<>();
|
||||
private List<DataPollutionD> processPollutionList(LocalDate local, List<String> lineIds, Map<String, DictData> dictData,
|
||||
Map<String, DataPollutionD> harmonicVoltageMap, Map<String, DataPollutionD> harmonicCurrentMap,
|
||||
Map<String, DataPollutionD> frequencyDeviationMap, Map<String, DataPollutionD> voltageDeviationMap,
|
||||
Map<String, DataPollutionD> threePhaseVoltageMap, Map<String, DataPollutionD> negativeSequenceMap,
|
||||
Map<String, DataPollutionD> interharmonicVoltageMap, Map<String, DataPollutionD> voltageFlickerMap) {
|
||||
List<DataPollutionD> result = new ArrayList<>();
|
||||
DictData dicVHarmonic = dictData.get("V_Harmonic");
|
||||
DictData dicIHarmonic = dictData.get("I_All");
|
||||
DictData I_Neg = dictData.get("I_Neg");
|
||||
@@ -134,14 +169,14 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
DictData Plt = dictData.get("Plt");
|
||||
DictData Freq_Dev = dictData.get("Freq_Dev");
|
||||
for (String lineId : lineIds) {
|
||||
assPollution(lineId,local,dicVHarmonic,harmonicVoltageMap,result);
|
||||
assPollution(lineId,local,dicIHarmonic,harmonicCurrentMap,result);
|
||||
assPollution(lineId,local,I_Neg,negativeSequenceMap,result);
|
||||
assPollution(lineId,local,Plt,voltageFlickerMap,result);
|
||||
assPollution(lineId,local,V_Dev,voltageDeviationMap,result);
|
||||
assPollution(lineId,local,V_Unbalance,threePhaseVoltageMap,result);
|
||||
assPollution(lineId,local,Freq_Dev,frequencyDeviationMap,result);
|
||||
assPollution(lineId,local,V_Inharm,interharmonicVoltageMap,result);
|
||||
assPollution(lineId, local, dicVHarmonic, harmonicVoltageMap, result);
|
||||
assPollution(lineId, local, dicIHarmonic, harmonicCurrentMap, result);
|
||||
assPollution(lineId, local, I_Neg, negativeSequenceMap, result);
|
||||
assPollution(lineId, local, Plt, voltageFlickerMap, result);
|
||||
assPollution(lineId, local, V_Dev, voltageDeviationMap, result);
|
||||
assPollution(lineId, local, V_Unbalance, threePhaseVoltageMap, result);
|
||||
assPollution(lineId, local, Freq_Dev, frequencyDeviationMap, result);
|
||||
assPollution(lineId, local, V_Inharm, interharmonicVoltageMap, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -150,64 +185,64 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 谐波电压:取监测点最新的A、B、C三相数据,再取电压总谐波畸变率、各次谐波电压含有率(2~25次)中的最大值,作为结果
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getHarmonicVoltage(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
List<RMpPollutionDPO> list = new ArrayList<>();
|
||||
private Map<String, DataPollutionD> getHarmonicVoltage(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
List<DataPollutionD> list = new ArrayList<>();
|
||||
lineCountEvaluateParam.setValueType(Stream.of("CP95").collect(Collectors.toList()));
|
||||
lineCountEvaluateParam.setPhasicType(Stream.of("A", "B", "C").collect(Collectors.toList()));
|
||||
Map<String, RMpPollutionDPO> threePhase = getThreePhaseData(lineCountEvaluateParam, limitMap);
|
||||
Map<String, RMpPollutionDPO> distortionRate = getDistortionRateData(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> threePhase = getThreePhaseData(lineCountEvaluateParam, limitMap);
|
||||
Map<String, DataPollutionD> distortionRate = getDistortionRateData(lineCountEvaluateParam, limitMap);
|
||||
for (String key : threePhase.keySet()) {
|
||||
list.add(threePhase.get(key));
|
||||
}
|
||||
for (String key : distortionRate.keySet()) {
|
||||
list.add(distortionRate.get(key));
|
||||
}
|
||||
Comparator<RMpPollutionDPO> comparator = Comparator.comparing(RMpPollutionDPO::getValue);
|
||||
Map<String, Optional<RMpPollutionDPO>> outMap = list.stream().collect(Collectors.groupingBy(RMpPollutionDPO::getLineId, Collectors.reducing(BinaryOperator.maxBy(comparator))));
|
||||
Comparator<DataPollutionD> comparator = Comparator.comparing(DataPollutionD::getValue);
|
||||
Map<String, Optional<DataPollutionD>> outMap = list.stream().collect(Collectors.groupingBy(DataPollutionD::getLineId, Collectors.reducing(BinaryOperator.maxBy(comparator))));
|
||||
return process(outMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 出参处理
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> process(Map<String, Optional<RMpPollutionDPO>> outMap) {
|
||||
Map<String, RMpPollutionDPO> map = new HashMap<>();
|
||||
private Map<String, DataPollutionD> process(Map<String, Optional<DataPollutionD>> outMap) {
|
||||
Map<String, DataPollutionD> map = new HashMap<>();
|
||||
for (String key : outMap.keySet()) {
|
||||
map.put(key, outMap.get(key).get());
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
private Map<String, RMpPollutionDPO> getThreePhaseData(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
private Map<String, DataPollutionD> getThreePhaseData(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
|
||||
List<DataVDto> threePhaseList = dataVFeignClient.getDataV(lineCountEvaluateParam).getData();
|
||||
Map<String, List<DataVDto>> dataVMap = threePhaseList.stream().collect(Collectors.groupingBy(DataVDto::getLineId));
|
||||
|
||||
Map<String, RMpPollutionDPO> map = new HashMap<>();
|
||||
Map<String, DataPollutionD> map = new HashMap<>();
|
||||
dataVMap.forEach((lineId, vList) -> {
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
if (limitMap.containsKey(lineId)) {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
double val = vList.stream().mapToDouble(DataVDto::getVThd).max().getAsDouble();
|
||||
double vUnbalance = val / overlimit.getUaberrance();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(vUnbalance);
|
||||
map.put(lineId, RMpPollutionDPO);
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(vUnbalance);
|
||||
map.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
private Map<String, RMpPollutionDPO> getDistortionRateData(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> mapResult = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getDistortionRateData(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> mapResult = new HashMap<>();
|
||||
List<DataHarmDto> distortionRateList = dataHarmRateVFeignClient.getHarmRateVData(lineCountEvaluateParam).getData();
|
||||
|
||||
Map<String, List<DataHarmDto>> harmDataMap = distortionRateList.stream().collect(Collectors.groupingBy(DataHarmDto::getLineId));
|
||||
harmDataMap.forEach((lineId, vList) -> {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
List<RMpPollutionDPO> temList = new ArrayList<>();
|
||||
List<DataPollutionD> temList = new ArrayList<>();
|
||||
for (DataHarmDto dayHarmrateV : vList) {
|
||||
RMpPollutionDPO tem = new RMpPollutionDPO();
|
||||
DataPollutionD tem = new DataPollutionD();
|
||||
double v2 = dayHarmrateV.getV2() / overlimit.getUharm2();
|
||||
double v3 = dayHarmrateV.getV3() / overlimit.getUharm3();
|
||||
double v4 = dayHarmrateV.getV4() / overlimit.getUharm4();
|
||||
@@ -238,10 +273,10 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
tem.setValue(result);
|
||||
temList.add(tem);
|
||||
}
|
||||
RMpPollutionDPO rMpPollutionDPO = new RMpPollutionDPO();
|
||||
rMpPollutionDPO.setLineId(lineId);
|
||||
rMpPollutionDPO.setValue(temList.stream().mapToDouble(RMpPollutionDPO::getValue).max().getAsDouble());
|
||||
mapResult.put(lineId, rMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(temList.stream().mapToDouble(DataPollutionD::getValue).max().getAsDouble());
|
||||
mapResult.put(lineId, dataPollutionD);
|
||||
});
|
||||
|
||||
return mapResult;
|
||||
@@ -250,8 +285,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 谐波电流:各次谐波电流(2~25次),取各监测点最新的A、B、C三相数据。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getHarmonicCurrent(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> map = new HashMap();
|
||||
private Map<String, DataPollutionD> getHarmonicCurrent(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> map = new HashMap();
|
||||
lineCountEvaluateParam.setValueType(Stream.of("CP95").collect(Collectors.toList()));
|
||||
lineCountEvaluateParam.setPhasicType(Stream.of("A", "B", "C").collect(Collectors.toList()));
|
||||
List<DataIDto> list = dataIFeignClient.getDataI(lineCountEvaluateParam).getData();
|
||||
@@ -259,7 +294,7 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
dataMap.forEach((lineId, valList) -> {
|
||||
if (limitMap.containsKey(lineId)) {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
List<RMpPollutionDPO> temList = new ArrayList<>();
|
||||
List<DataPollutionD> temList = new ArrayList<>();
|
||||
for (DataIDto dayI : valList) {
|
||||
double v2 = dayI.getI2() / overlimit.getIharm2();
|
||||
double v3 = dayI.getI3() / overlimit.getIharm3();
|
||||
@@ -287,16 +322,16 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
double v25 = dayI.getI25() / overlimit.getIharm25();
|
||||
List<Double> data = Stream.of(v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25).collect(Collectors.toList());
|
||||
double result = data.stream().max(Comparator.comparing(Double::doubleValue)).get();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(dayI.getLineId());
|
||||
RMpPollutionDPO.setValue(result);
|
||||
temList.add(RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(dayI.getLineId());
|
||||
dataPollutionD.setValue(result);
|
||||
temList.add(dataPollutionD);
|
||||
}
|
||||
double val = temList.stream().mapToDouble(RMpPollutionDPO::getValue).max().getAsDouble();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(val);
|
||||
map.put(lineId, RMpPollutionDPO);
|
||||
double val = temList.stream().mapToDouble(DataPollutionD::getValue).max().getAsDouble();
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(val);
|
||||
map.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return map;
|
||||
@@ -305,8 +340,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 频率偏差:各监测点最新的T相数据,取频率上下偏差的绝对值中的最大值。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getFrequencyDeviation(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> lineData = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getFrequencyDeviation(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> lineData = new HashMap<>();
|
||||
|
||||
lineCountEvaluateParam.setColumnName("freq_dev,line_id");
|
||||
lineCountEvaluateParam.setValueType(Stream.of("MAX").collect(Collectors.toList()));
|
||||
@@ -319,10 +354,10 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
double dayV = valList.stream().map(it -> Math.abs(it.getFreqDev())).max(Comparator.comparing(Double::doubleValue)).get();
|
||||
double freqDev = dayV / overlimit.getFreqDev();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(freqDev);
|
||||
lineData.put(lineId, RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(freqDev);
|
||||
lineData.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return lineData;
|
||||
@@ -331,8 +366,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 电压偏差:各监测点最新的A、B、C三相数据,取电压上下偏差的绝对值中的最大值。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getVoltageDeviation(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> lineData = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getVoltageDeviation(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> lineData = new HashMap<>();
|
||||
lineCountEvaluateParam.setColumnName("vu_dev,line_id");
|
||||
lineCountEvaluateParam.setValueType(Stream.of("MAX").collect(Collectors.toList()));
|
||||
lineCountEvaluateParam.setPhasicType(Stream.of("A", "B", "C").collect(Collectors.toList()));
|
||||
@@ -344,10 +379,10 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
double dayV = valList.stream().map(it -> Math.abs(it.getVuDev())).max(Comparator.comparing(Double::doubleValue)).get();
|
||||
double vDev = dayV / overlimit.getUvoltageDev();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(vDev);
|
||||
lineData.put(lineId, RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(vDev);
|
||||
lineData.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return lineData;
|
||||
@@ -356,8 +391,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 三相电压不平衡度:各监测点最新的T相数据。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getThreePhaseVoltageUnbalance(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> lineData = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getThreePhaseVoltageUnbalance(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> lineData = new HashMap<>();
|
||||
lineCountEvaluateParam.setColumnName("v_unbalance,line_id");
|
||||
lineCountEvaluateParam.setValueType(Stream.of("CP95").collect(Collectors.toList()));
|
||||
lineCountEvaluateParam.setPhasicType(Stream.of("T").collect(Collectors.toList()));
|
||||
@@ -369,10 +404,10 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
double dayV = valList.stream().mapToDouble(DataVDto::getVUnbalance).max().getAsDouble();
|
||||
double vUb = dayV / overlimit.getUbalance();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(vUb);
|
||||
lineData.put(lineId, RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(vUb);
|
||||
lineData.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return lineData;
|
||||
@@ -381,8 +416,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 负序电流:各监测点最新的T相数据。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getNegativeSequenceCurrent(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> lineData = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getNegativeSequenceCurrent(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> lineData = new HashMap<>();
|
||||
lineCountEvaluateParam.setColumnName("i_neg,line_id");
|
||||
lineCountEvaluateParam.setValueType(Stream.of("CP95").collect(Collectors.toList()));
|
||||
lineCountEvaluateParam.setPhasicType(Stream.of("T").collect(Collectors.toList()));
|
||||
@@ -393,10 +428,10 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
double dayI = valList.stream().mapToDouble(DataIDto::getINeg).max().getAsDouble();
|
||||
double iNeg = dayI / overlimit.getINeg();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(iNeg);
|
||||
lineData.put(lineId, RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(iNeg);
|
||||
lineData.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return lineData;
|
||||
@@ -405,8 +440,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 间谐波电压含有率:各监测点最新的A、B、C三相数据。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getInterharmonicVoltage(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> lineData = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getInterharmonicVoltage(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> lineData = new HashMap<>();
|
||||
lineCountEvaluateParam.setPhasicType(Stream.of("A", "B", "C").collect(Collectors.toList()));
|
||||
lineCountEvaluateParam.setValueType(Stream.of("CP95").collect(Collectors.toList()));
|
||||
List<DataHarmDto> dataHarmDtoList = dataHarmRateVFeignClient.getHarmRateVData(lineCountEvaluateParam).getData();
|
||||
@@ -415,7 +450,7 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
dataMap.forEach((lineId, valList) -> {
|
||||
if (limitMap.containsKey(lineId)) {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
List<RMpPollutionDPO> temList = new ArrayList<>();
|
||||
List<DataPollutionD> temList = new ArrayList<>();
|
||||
for (DataHarmDto dayInharmV : valList) {
|
||||
double v1 = Math.abs(dayInharmV.getV1() / overlimit.getInuharm1());
|
||||
double v2 = Math.abs(dayInharmV.getV2() / overlimit.getInuharm2());
|
||||
@@ -434,17 +469,17 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
double v15 = Math.abs(dayInharmV.getV15() / overlimit.getInuharm15());
|
||||
double v16 = Math.abs(dayInharmV.getV16() / overlimit.getInuharm16());
|
||||
double data = Stream.of(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16).max(Comparator.comparing(Double::doubleValue)).get();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(data);
|
||||
temList.add(RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(data);
|
||||
temList.add(dataPollutionD);
|
||||
}
|
||||
|
||||
double val = temList.stream().map(RMpPollutionDPO::getValue).max(Comparator.comparing(Double::doubleValue)).get();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(val);
|
||||
lineData.put(lineId, RMpPollutionDPO);
|
||||
double val = temList.stream().map(DataPollutionD::getValue).max(Comparator.comparing(Double::doubleValue)).get();
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(val);
|
||||
lineData.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return lineData;
|
||||
@@ -453,8 +488,8 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
/**
|
||||
* 长时电压闪变:各监测点最新的A、B、C三相数据。
|
||||
*/
|
||||
private Map<String, RMpPollutionDPO> getVoltageFlicker(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, RMpPollutionDPO> lineData = new HashMap<>();
|
||||
private Map<String, DataPollutionD> getVoltageFlicker(LineCountEvaluateParam lineCountEvaluateParam, Map<String, Overlimit> limitMap) {
|
||||
Map<String, DataPollutionD> lineData = new HashMap<>();
|
||||
|
||||
lineCountEvaluateParam.setColumnName("plt");
|
||||
lineCountEvaluateParam.setValueType(Stream.of("CP95").collect(Collectors.toList()));
|
||||
@@ -467,10 +502,10 @@ public class PollutionServiceImpl implements IPollutionService {
|
||||
Overlimit overlimit = limitMap.get(lineId);
|
||||
double dayPlt = valList.stream().mapToDouble(DataPltDto::getPlt).max().getAsDouble();
|
||||
double plt = dayPlt / overlimit.getFlicker();
|
||||
RMpPollutionDPO RMpPollutionDPO = new RMpPollutionDPO();
|
||||
RMpPollutionDPO.setLineId(lineId);
|
||||
RMpPollutionDPO.setValue(plt);
|
||||
lineData.put(lineId, RMpPollutionDPO);
|
||||
DataPollutionD dataPollutionD = new DataPollutionD();
|
||||
dataPollutionD.setLineId(lineId);
|
||||
dataPollutionD.setValue(plt);
|
||||
lineData.put(lineId, dataPollutionD);
|
||||
}
|
||||
});
|
||||
return lineData;
|
||||
|
||||
Reference in New Issue
Block a user