算法优化

This commit is contained in:
xy
2026-01-20 13:32:55 +08:00
parent 718fd012c8
commit fe3c0363fb
8 changed files with 482 additions and 193 deletions

View File

@@ -44,6 +44,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static com.njcn.algorithm.utils.MemorySizeUtil.dealResponse;
/**
@@ -164,6 +165,7 @@ public class ExecutionCenter extends BaseController {
}
} else {
//非补招
calculatedParam.setType(2);
liteflowResponse = flowExecutor.execute2Resp("wl_measurement_point", calculatedParam);
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
}

View File

@@ -92,7 +92,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
List<Overlimit> overLimitList;
//获取所有监测点的限值
if (Objects.equals(lineParam.getType(), 2)) {
List<com.njcn.csdevice.pojo.po.Overlimit> list = csOverLimitClient.getOverLimitByLineIds(lineIds).getData();
List<Overlimit> list = csOverLimitClient.getOverLimitByLineIds(lineIds).getData();
overLimitList = list.stream()
.map(item -> {
Overlimit overlimit = new Overlimit();

View File

@@ -213,6 +213,115 @@ public class DataHarmpowerP {
@Column(name = "p_50")
private Double p50;
//在线监测添加的字段
@Column(name = "totPf")
private Double totPf;
@Column(name = "totDf")
private Double totDf;
@Column(name = "totP")
private Double totP;
@Column(name = "totP1")
private Double totP1;
@Column(name = "totP2")
private Double totP2;
@Column(name = "totP3")
private Double totP3;
@Column(name = "totP4")
private Double totP4;
@Column(name = "totP5")
private Double totP5;
@Column(name = "totP6")
private Double totP6;
@Column(name = "totP7")
private Double totP7;
@Column(name = "totP8")
private Double totP8;
@Column(name = "totP9")
private Double totP9;
@Column(name = "totP10")
private Double totP10;
@Column(name = "totP11")
private Double totP11;
@Column(name = "totP12")
private Double totP12;
@Column(name = "totP13")
private Double totP13;
@Column(name = "totP14")
private Double totP14;
@Column(name = "totP15")
private Double totP15;
@Column(name = "totP16")
private Double totP16;
@Column(name = "totP17")
private Double totP17;
@Column(name = "totP18")
private Double totP18;
@Column(name = "totP19")
private Double totP19;
@Column(name = "totP20")
private Double totP20;
@Column(name = "totP21")
private Double totP21;
@Column(name = "totP22")
private Double totP22;
@Column(name = "totP23")
private Double totP23;
@Column(name = "totP24")
private Double totP24;
@Column(name = "totP25")
private Double totP25;
@Column(name = "totP26")
private Double totP26;
@Column(name = "totP27")
private Double totP27;
@Column(name = "totP28")
private Double totP28;
@Column(name = "totP29")
private Double totP29;
@Column(name = "totP30")
private Double totP30;
@Column(name = "totP31")
private Double totP31;
@Column(name = "totP32")
private Double totP32;
@Column(name = "totP33")
private Double totP33;
@Column(name = "totP34")
private Double totP34;
@Column(name = "totP35")
private Double totP35;
@Column(name = "totP36")
private Double totP36;
@Column(name = "totP37")
private Double totP37;
@Column(name = "totP38")
private Double totP38;
@Column(name = "totP39")
private Double totP39;
@Column(name = "totP40")
private Double totP40;
@Column(name = "totP41")
private Double totP41;
@Column(name = "totP42")
private Double totP42;
@Column(name = "totP43")
private Double totP43;
@Column(name = "totP44")
private Double totP44;
@Column(name = "totP45")
private Double totP45;
@Column(name = "totP46")
private Double totP46;
@Column(name = "totP47")
private Double totP47;
@Column(name = "totP49")
private Double totP48;
@Column(name = "totP49")
private Double totP49;
@Column(name = "totP50")
private Double totP50;
public static List<DataHarmpowerP> relationToInfluxDB(DataHarmpowerPDTO dataHarmpowerP) {
if (dataHarmpowerP == null) {
return null;

View File

@@ -207,6 +207,111 @@ public class DataHarmpowerQ {
@Column(name = "q_50")
private Double q50;
//在线监测添加的字段
@Column(name = "totQ")
private Double totQ;
@Column(name = "totQ1")
private Double totQ1;
@Column(name = "totQ2")
private Double totQ2;
@Column(name = "totQ3")
private Double totQ3;
@Column(name = "totQ4")
private Double totQ4;
@Column(name = "totQ5")
private Double totQ5;
@Column(name = "totQ6")
private Double totQ6;
@Column(name = "totQ7")
private Double totQ7;
@Column(name = "totQ8")
private Double totQ8;
@Column(name = "totQ9")
private Double totQ9;
@Column(name = "totQ10")
private Double totQ10;
@Column(name = "totQ11")
private Double totQ11;
@Column(name = "totQ12")
private Double totQ12;
@Column(name = "totQ13")
private Double totQ13;
@Column(name = "totQ14")
private Double totQ14;
@Column(name = "totQ15")
private Double totQ15;
@Column(name = "totQ16")
private Double totQ16;
@Column(name = "totQ17")
private Double totQ17;
@Column(name = "totQ18")
private Double totQ18;
@Column(name = "totQ19")
private Double totQ19;
@Column(name = "totQ20")
private Double totQ20;
@Column(name = "totQ21")
private Double totQ21;
@Column(name = "totQ22")
private Double totQ22;
@Column(name = "totQ23")
private Double totQ23;
@Column(name = "totQ24")
private Double totQ24;
@Column(name = "totQ25")
private Double totQ25;
@Column(name = "totQ26")
private Double totQ26;
@Column(name = "totQ27")
private Double totQ27;
@Column(name = "totQ28")
private Double totQ28;
@Column(name = "totQ29")
private Double totQ29;
@Column(name = "totQ30")
private Double totQ30;
@Column(name = "totQ31")
private Double totQ31;
@Column(name = "totQ32")
private Double totQ32;
@Column(name = "totQ33")
private Double totQ33;
@Column(name = "totQ34")
private Double totQ34;
@Column(name = "totQ35")
private Double totQ35;
@Column(name = "totQ36")
private Double totQ36;
@Column(name = "totQ37")
private Double totQ37;
@Column(name = "totQ38")
private Double totQ38;
@Column(name = "totQ39")
private Double totQ39;
@Column(name = "totQ40")
private Double totQ40;
@Column(name = "totQ41")
private Double totQ41;
@Column(name = "totQ42")
private Double totQ42;
@Column(name = "totQ43")
private Double totQ43;
@Column(name = "totQ44")
private Double totQ44;
@Column(name = "totQ45")
private Double totQ45;
@Column(name = "totQ46")
private Double totQ46;
@Column(name = "totQ47")
private Double totQ47;
@Column(name = "totQ49")
private Double totQ48;
@Column(name = "totQ49")
private Double totQ49;
@Column(name = "totQ50")
private Double totQ50;
public static List<DataHarmpowerQ> relationToInfluxDB(DataHarmpowerQDTO dataHarmpowerQ) {
if (dataHarmpowerQ == null) {
return null;

View File

@@ -207,6 +207,111 @@ public class DataHarmpowerS {
@Column(name = "s_50")
private Double s50;
//在线监测添加的字段
@Column(name = "totS")
private Double totS;
@Column(name = "totS1")
private Double totS1;
@Column(name = "totS2")
private Double totS2;
@Column(name = "totS3")
private Double totS3;
@Column(name = "totS4")
private Double totS4;
@Column(name = "totS5")
private Double totS5;
@Column(name = "totS6")
private Double totS6;
@Column(name = "totS7")
private Double totS7;
@Column(name = "totS8")
private Double totS8;
@Column(name = "totS9")
private Double totS9;
@Column(name = "totS10")
private Double totS10;
@Column(name = "totS11")
private Double totS11;
@Column(name = "totS12")
private Double totS12;
@Column(name = "totS13")
private Double totS13;
@Column(name = "totS14")
private Double totS14;
@Column(name = "totS15")
private Double totS15;
@Column(name = "totS16")
private Double totS16;
@Column(name = "totS17")
private Double totS17;
@Column(name = "totS18")
private Double totS18;
@Column(name = "totS19")
private Double totS19;
@Column(name = "totS20")
private Double totS20;
@Column(name = "totS21")
private Double totS21;
@Column(name = "totS22")
private Double totS22;
@Column(name = "totS23")
private Double totS23;
@Column(name = "totS24")
private Double totS24;
@Column(name = "totS25")
private Double totS25;
@Column(name = "totS26")
private Double totS26;
@Column(name = "totS27")
private Double totS27;
@Column(name = "totS28")
private Double totS28;
@Column(name = "totS29")
private Double totS29;
@Column(name = "totS30")
private Double totS30;
@Column(name = "totS31")
private Double totS31;
@Column(name = "totS32")
private Double totS32;
@Column(name = "totS33")
private Double totS33;
@Column(name = "totS34")
private Double totS34;
@Column(name = "totS35")
private Double totS35;
@Column(name = "totS36")
private Double totS36;
@Column(name = "totS37")
private Double totS37;
@Column(name = "totS38")
private Double totS38;
@Column(name = "totS39")
private Double totS39;
@Column(name = "totS40")
private Double totS40;
@Column(name = "totS41")
private Double totS41;
@Column(name = "totS42")
private Double totS42;
@Column(name = "totS43")
private Double totS43;
@Column(name = "totS44")
private Double totS44;
@Column(name = "totS45")
private Double totS45;
@Column(name = "totS46")
private Double totS46;
@Column(name = "totS47")
private Double totS47;
@Column(name = "totS49")
private Double totS48;
@Column(name = "totS49")
private Double totS49;
@Column(name = "totS50")
private Double totS50;
public static List<DataHarmpowerS> relationToInfluxDB(DataHarmpowerSDTO dataHarmpowerS) {
if (dataHarmpowerS == null) {
return null;

View File

@@ -27,6 +27,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@@ -126,68 +127,12 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
valueTypeMap.forEach((valueType,valueTypeList)->{
CommonMinuteDto.ValueType value = new CommonMinuteDto.ValueType();
value.setValueType(valueType);
//规定好集合指标参数
List<Double> data1 = valueTypeList.stream().map(DataHarmpowerP::getDf).collect(Collectors.toList());
List<Double> data2 = valueTypeList.stream().map(DataHarmpowerP::getPf).collect(Collectors.toList());
List<Double> data3 = valueTypeList.stream().map(DataHarmpowerP::getP).collect(Collectors.toList());
List<Double> data12 = valueTypeList.stream().map(DataHarmpowerP::getP1).collect(Collectors.toList());
List<Double> data13 = valueTypeList.stream().map(DataHarmpowerP::getP2).collect(Collectors.toList());
List<Double> data14 = valueTypeList.stream().map(DataHarmpowerP::getP3).collect(Collectors.toList());
List<Double> data15 = valueTypeList.stream().map(DataHarmpowerP::getP4).collect(Collectors.toList());
List<Double> data16 = valueTypeList.stream().map(DataHarmpowerP::getP5).collect(Collectors.toList());
List<Double> data17 = valueTypeList.stream().map(DataHarmpowerP::getP6).collect(Collectors.toList());
List<Double> data18 = valueTypeList.stream().map(DataHarmpowerP::getP7).collect(Collectors.toList());
List<Double> data19 = valueTypeList.stream().map(DataHarmpowerP::getP8).collect(Collectors.toList());
List<Double> data20 = valueTypeList.stream().map(DataHarmpowerP::getP9).collect(Collectors.toList());
List<Double> data21 = valueTypeList.stream().map(DataHarmpowerP::getP10).collect(Collectors.toList());
List<Double> data22 = valueTypeList.stream().map(DataHarmpowerP::getP11).collect(Collectors.toList());
List<Double> data23 = valueTypeList.stream().map(DataHarmpowerP::getP12).collect(Collectors.toList());
List<Double> data24 = valueTypeList.stream().map(DataHarmpowerP::getP13).collect(Collectors.toList());
List<Double> data25 = valueTypeList.stream().map(DataHarmpowerP::getP14).collect(Collectors.toList());
List<Double> data26 = valueTypeList.stream().map(DataHarmpowerP::getP15).collect(Collectors.toList());
List<Double> data27 = valueTypeList.stream().map(DataHarmpowerP::getP16).collect(Collectors.toList());
List<Double> data28 = valueTypeList.stream().map(DataHarmpowerP::getP17).collect(Collectors.toList());
List<Double> data29 = valueTypeList.stream().map(DataHarmpowerP::getP18).collect(Collectors.toList());
List<Double> data30 = valueTypeList.stream().map(DataHarmpowerP::getP19).collect(Collectors.toList());
List<Double> data31 = valueTypeList.stream().map(DataHarmpowerP::getP20).collect(Collectors.toList());
List<Double> data32 = valueTypeList.stream().map(DataHarmpowerP::getP21).collect(Collectors.toList());
List<Double> data33 = valueTypeList.stream().map(DataHarmpowerP::getP22).collect(Collectors.toList());
List<Double> data34 = valueTypeList.stream().map(DataHarmpowerP::getP23).collect(Collectors.toList());
List<Double> data35 = valueTypeList.stream().map(DataHarmpowerP::getP24).collect(Collectors.toList());
List<Double> data36 = valueTypeList.stream().map(DataHarmpowerP::getP25).collect(Collectors.toList());
List<Double> data37 = valueTypeList.stream().map(DataHarmpowerP::getP26).collect(Collectors.toList());
List<Double> data38 = valueTypeList.stream().map(DataHarmpowerP::getP27).collect(Collectors.toList());
List<Double> data39 = valueTypeList.stream().map(DataHarmpowerP::getP28).collect(Collectors.toList());
List<Double> data40 = valueTypeList.stream().map(DataHarmpowerP::getP29).collect(Collectors.toList());
List<Double> data41 = valueTypeList.stream().map(DataHarmpowerP::getP30).collect(Collectors.toList());
List<Double> data42 = valueTypeList.stream().map(DataHarmpowerP::getP31).collect(Collectors.toList());
List<Double> data43 = valueTypeList.stream().map(DataHarmpowerP::getP32).collect(Collectors.toList());
List<Double> data44 = valueTypeList.stream().map(DataHarmpowerP::getP33).collect(Collectors.toList());
List<Double> data45 = valueTypeList.stream().map(DataHarmpowerP::getP34).collect(Collectors.toList());
List<Double> data46 = valueTypeList.stream().map(DataHarmpowerP::getP35).collect(Collectors.toList());
List<Double> data47 = valueTypeList.stream().map(DataHarmpowerP::getP36).collect(Collectors.toList());
List<Double> data48 = valueTypeList.stream().map(DataHarmpowerP::getP37).collect(Collectors.toList());
List<Double> data49 = valueTypeList.stream().map(DataHarmpowerP::getP38).collect(Collectors.toList());
List<Double> data50 = valueTypeList.stream().map(DataHarmpowerP::getP39).collect(Collectors.toList());
List<Double> data51 = valueTypeList.stream().map(DataHarmpowerP::getP40).collect(Collectors.toList());
List<Double> data52 = valueTypeList.stream().map(DataHarmpowerP::getP41).collect(Collectors.toList());
List<Double> data53 = valueTypeList.stream().map(DataHarmpowerP::getP42).collect(Collectors.toList());
List<Double> data54 = valueTypeList.stream().map(DataHarmpowerP::getP43).collect(Collectors.toList());
List<Double> data55 = valueTypeList.stream().map(DataHarmpowerP::getP44).collect(Collectors.toList());
List<Double> data56 = valueTypeList.stream().map(DataHarmpowerP::getP45).collect(Collectors.toList());
List<Double> data57 = valueTypeList.stream().map(DataHarmpowerP::getP46).collect(Collectors.toList());
List<Double> data58 = valueTypeList.stream().map(DataHarmpowerP::getP47).collect(Collectors.toList());
List<Double> data59 = valueTypeList.stream().map(DataHarmpowerP::getP48).collect(Collectors.toList());
List<Double> data60 = valueTypeList.stream().map(DataHarmpowerP::getP49).collect(Collectors.toList());
List<Double> data61 = valueTypeList.stream().map(DataHarmpowerP::getP50).collect(Collectors.toList());
List<List<Double>> lists = Arrays.asList(data1,data2,data3,data12,data13,data14
,data15,data16,data17,data18,data19,data20,data21,data22,data23,data24
,data25,data26,data27,data28,data29,data30,data31,data32,data33,data34
,data35,data36,data37,data38,data39,data40,data41,data42,data43,data44
,data45,data46,data47,data48,data49,data50,data51,data52,data53,data54
,data55,data56,data57,data58,data59,data60,data61);
List<List<Double>> lists;
if (Objects.equals(phasicType, "T")) {
lists = extractDataLists(valueTypeList, "Tot");
} else {
lists = extractDataLists(valueTypeList, "");
}
value.setValueList(lists);
valueTypes.add(value);
});
@@ -201,6 +146,43 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
return result;
}
private List<List<Double>> extractDataLists(List<DataHarmpowerP> dataList, String prefix) {
List<List<Double>> result = new ArrayList<>();
// 前三个特殊字段
result.add(extractField(dataList, prefix + "Df"));
result.add(extractField(dataList, prefix + "Pf"));
result.add(extractField(dataList, prefix + "P"));
// P1到P50
for (int i = 1; i <= 50; i++) {
String fieldName = prefix + (i == 1 ? "P1" : "P" + i);
result.add(extractField(dataList, fieldName));
}
return result;
}
private List<Double> extractField(List<DataHarmpowerP> dataList, String fieldName) {
try {
Method method = DataHarmpowerP.class.getMethod("get" + capitalize(fieldName));
return dataList.stream()
.map(data -> {
try {
return (Double) method.invoke(data);
} catch (Exception e) {
throw new RuntimeException("Failed to get field: " + fieldName, e);
}
})
.collect(Collectors.toList());
} catch (NoSuchMethodException e) {
throw new RuntimeException("Field not found: " + fieldName, e);
}
}
private String capitalize(String str) {
if (str == null || str.isEmpty()) return str;
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
@Override
public void addList(List<DataHarmPowerPDto> list) {
@@ -296,20 +278,31 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
String devId = lineMap.get(lineId).getDeviceId();
CsLinePO po = lineMap.get(lineId);
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerP.class);
//A、B、C谐波有功功率有效值
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmP_", "p_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
influxQueryWrapper.eq(DataHarmpowerP::getLineId, lineId)
.eq(DataHarmpowerP::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
//三相总 谐波有功功率有效值
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmTP_", "totP_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
InfluxQueryWrapper eq = influxQueryWrapper.eq(DataHarmpowerP::getLineId, lineId)
.eq(DataHarmpowerP::getProcess, Integer.toString(devsMap.get(devId).getProcess()))
.select(DataHarmpowerP::getLineId)
.select(DataHarmpowerP::getPhasicType)
.select(DataHarmpowerP::getValueType)
//位移功率因数
.select("Pq_DF","df")
.select("Pq_DF", "df")
//视在功率因素
.select("Pq_PF","pf")
//三相功功率
.select("Pq_TotP","p")
.select("Pq_PF", "pf")
//A、B、C三相功功率
.select("Pq_P", "p")
//基波有功功率
.select("Pq_FundP","p_1")
.select("Pq_FundP", "p_1")
//三相总视在功率因数
.select("Pq_TotPF", "totPf")
//三相总位移功率因数
.select("Pq_TotDF", "totDf")
//三相总功率因数
.select("Pq_TotP", "totP")
//三相总基波有功功率
.select("Pq_TotHarmP", "totP1")
.between(DataHarmpowerP::getTime, startTime, endTime)
.eq(DataHarmpowerP::getQualityFlag, "0");
if (Objects.isNull(po.getLineNo())) {

View File

@@ -26,6 +26,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@@ -124,66 +125,13 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
valueTypeMap.forEach((valueType,valueTypeList)->{
CommonMinuteDto.ValueType value = new CommonMinuteDto.ValueType();
value.setValueType(valueType);
//规定好集合指标参数
List<Double> data1 = valueTypeList.stream().map(DataHarmpowerQ::getQ).collect(Collectors.toList());
List<Double> data12 = valueTypeList.stream().map(DataHarmpowerQ::getQ1).collect(Collectors.toList());
List<Double> data13 = valueTypeList.stream().map(DataHarmpowerQ::getQ2).collect(Collectors.toList());
List<Double> data14 = valueTypeList.stream().map(DataHarmpowerQ::getQ3).collect(Collectors.toList());
List<Double> data15 = valueTypeList.stream().map(DataHarmpowerQ::getQ4).collect(Collectors.toList());
List<Double> data16 = valueTypeList.stream().map(DataHarmpowerQ::getQ5).collect(Collectors.toList());
List<Double> data17 = valueTypeList.stream().map(DataHarmpowerQ::getQ6).collect(Collectors.toList());
List<Double> data18 = valueTypeList.stream().map(DataHarmpowerQ::getQ7).collect(Collectors.toList());
List<Double> data19 = valueTypeList.stream().map(DataHarmpowerQ::getQ8).collect(Collectors.toList());
List<Double> data20 = valueTypeList.stream().map(DataHarmpowerQ::getQ9).collect(Collectors.toList());
List<Double> data21 = valueTypeList.stream().map(DataHarmpowerQ::getQ10).collect(Collectors.toList());
List<Double> data22 = valueTypeList.stream().map(DataHarmpowerQ::getQ11).collect(Collectors.toList());
List<Double> data23 = valueTypeList.stream().map(DataHarmpowerQ::getQ12).collect(Collectors.toList());
List<Double> data24 = valueTypeList.stream().map(DataHarmpowerQ::getQ13).collect(Collectors.toList());
List<Double> data25 = valueTypeList.stream().map(DataHarmpowerQ::getQ14).collect(Collectors.toList());
List<Double> data26 = valueTypeList.stream().map(DataHarmpowerQ::getQ15).collect(Collectors.toList());
List<Double> data27 = valueTypeList.stream().map(DataHarmpowerQ::getQ16).collect(Collectors.toList());
List<Double> data28 = valueTypeList.stream().map(DataHarmpowerQ::getQ17).collect(Collectors.toList());
List<Double> data29 = valueTypeList.stream().map(DataHarmpowerQ::getQ18).collect(Collectors.toList());
List<Double> data30 = valueTypeList.stream().map(DataHarmpowerQ::getQ19).collect(Collectors.toList());
List<Double> data31 = valueTypeList.stream().map(DataHarmpowerQ::getQ20).collect(Collectors.toList());
List<Double> data32 = valueTypeList.stream().map(DataHarmpowerQ::getQ21).collect(Collectors.toList());
List<Double> data33 = valueTypeList.stream().map(DataHarmpowerQ::getQ22).collect(Collectors.toList());
List<Double> data34 = valueTypeList.stream().map(DataHarmpowerQ::getQ23).collect(Collectors.toList());
List<Double> data35 = valueTypeList.stream().map(DataHarmpowerQ::getQ24).collect(Collectors.toList());
List<Double> data36 = valueTypeList.stream().map(DataHarmpowerQ::getQ25).collect(Collectors.toList());
List<Double> data37 = valueTypeList.stream().map(DataHarmpowerQ::getQ26).collect(Collectors.toList());
List<Double> data38 = valueTypeList.stream().map(DataHarmpowerQ::getQ27).collect(Collectors.toList());
List<Double> data39 = valueTypeList.stream().map(DataHarmpowerQ::getQ28).collect(Collectors.toList());
List<Double> data40 = valueTypeList.stream().map(DataHarmpowerQ::getQ29).collect(Collectors.toList());
List<Double> data41 = valueTypeList.stream().map(DataHarmpowerQ::getQ30).collect(Collectors.toList());
List<Double> data42 = valueTypeList.stream().map(DataHarmpowerQ::getQ31).collect(Collectors.toList());
List<Double> data43 = valueTypeList.stream().map(DataHarmpowerQ::getQ32).collect(Collectors.toList());
List<Double> data44 = valueTypeList.stream().map(DataHarmpowerQ::getQ33).collect(Collectors.toList());
List<Double> data45 = valueTypeList.stream().map(DataHarmpowerQ::getQ34).collect(Collectors.toList());
List<Double> data46 = valueTypeList.stream().map(DataHarmpowerQ::getQ35).collect(Collectors.toList());
List<Double> data47 = valueTypeList.stream().map(DataHarmpowerQ::getQ36).collect(Collectors.toList());
List<Double> data48 = valueTypeList.stream().map(DataHarmpowerQ::getQ37).collect(Collectors.toList());
List<Double> data49 = valueTypeList.stream().map(DataHarmpowerQ::getQ38).collect(Collectors.toList());
List<Double> data50 = valueTypeList.stream().map(DataHarmpowerQ::getQ39).collect(Collectors.toList());
List<Double> data51 = valueTypeList.stream().map(DataHarmpowerQ::getQ40).collect(Collectors.toList());
List<Double> data52 = valueTypeList.stream().map(DataHarmpowerQ::getQ41).collect(Collectors.toList());
List<Double> data53 = valueTypeList.stream().map(DataHarmpowerQ::getQ42).collect(Collectors.toList());
List<Double> data54 = valueTypeList.stream().map(DataHarmpowerQ::getQ43).collect(Collectors.toList());
List<Double> data55 = valueTypeList.stream().map(DataHarmpowerQ::getQ44).collect(Collectors.toList());
List<Double> data56 = valueTypeList.stream().map(DataHarmpowerQ::getQ45).collect(Collectors.toList());
List<Double> data57 = valueTypeList.stream().map(DataHarmpowerQ::getQ46).collect(Collectors.toList());
List<Double> data58 = valueTypeList.stream().map(DataHarmpowerQ::getQ47).collect(Collectors.toList());
List<Double> data59 = valueTypeList.stream().map(DataHarmpowerQ::getQ48).collect(Collectors.toList());
List<Double> data60 = valueTypeList.stream().map(DataHarmpowerQ::getQ49).collect(Collectors.toList());
List<Double> data61 = valueTypeList.stream().map(DataHarmpowerQ::getQ50).collect(Collectors.toList());
List<List<Double>> lists = Arrays.asList(data1,data12,data13,data14
,data15,data16,data17,data18,data19,data20,data21,data22,data23,data24
,data25,data26,data27,data28,data29,data30,data31,data32,data33,data34
,data35,data36,data37,data38,data39,data40,data41,data42,data43,data44
,data45,data46,data47,data48,data49,data50,data51,data52,data53,data54
,data55,data56,data57,data58,data59,data60,data61);
List<List<Double>> lists;
if (Objects.equals(phasicType, "T")) {
lists = extractDataLists(valueTypeList, "Tot");
} else {
lists = extractDataLists(valueTypeList, "");
}
value.setValueList(lists);
valueTypes.add(value);
});
@@ -197,6 +145,39 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
return result;
}
private List<List<Double>> extractDataLists(List<DataHarmpowerQ> dataList, String prefix) {
List<List<Double>> result = new ArrayList<>();
result.add(extractField(dataList, prefix + "Q"));
// Q1到Q50
for (int i = 1; i <= 50; i++) {
String fieldName = prefix + (i == 1 ? "Q1" : "Q" + i);
result.add(extractField(dataList, fieldName));
}
return result;
}
private List<Double> extractField(List<DataHarmpowerQ> dataList, String fieldName) {
try {
Method method = DataHarmpowerQ.class.getMethod("get" + capitalize(fieldName));
return dataList.stream()
.map(data -> {
try {
return (Double) method.invoke(data);
} catch (Exception e) {
throw new RuntimeException("Failed to get field: " + fieldName, e);
}
})
.collect(Collectors.toList());
} catch (NoSuchMethodException e) {
throw new RuntimeException("Field not found: " + fieldName, e);
}
}
private String capitalize(String str) {
if (str == null || str.isEmpty()) return str;
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
@Override
public void addList(List<DataHarmPowerQDto> list) {
@@ -290,16 +271,23 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
String devId = lineMap.get(lineId).getDeviceId();
CsLinePO po = lineMap.get(lineId);
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerQ.class);
//A、B、C谐波无功功率有效值
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmQ_", "q_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
//三相总 谐波有功功率有效值
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmTQ_", "totQ_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
influxQueryWrapper.eq(DataHarmpowerQ::getLineId, lineId)
.eq(DataHarmpowerQ::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
.select(DataHarmpowerQ::getLineId)
.select(DataHarmpowerQ::getPhasicType)
.select(DataHarmpowerQ::getValueType)
//三相无功功率
.select("Pq_TotQ","q")
//A、B、C三相无功功率
.select("Pq_Q", "q")
//基波无功功率
.select("Pq_FundQ","q_1")
//总无功功率
.select("Pq_TotQ","totQ")
//基波无功功率(T)
.select("Pq_TotHarmQ","totQ1")
.between(DataHarmpowerQ::getTime, startTime, endTime)
.eq(DataHarmpowerQ::getQualityFlag, "0");
if (Objects.isNull(po.getLineNo())) {

View File

@@ -26,6 +26,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@@ -124,66 +125,12 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
valueTypeMap.forEach((valueType,valueTypeList)->{
CommonMinuteDto.ValueType value = new CommonMinuteDto.ValueType();
value.setValueType(valueType);
//规定好集合指标参数
List<Double> data1 = valueTypeList.stream().map(DataHarmpowerS::getS).collect(Collectors.toList());
List<Double> data12 = valueTypeList.stream().map(DataHarmpowerS::getS1).collect(Collectors.toList());
List<Double> data13 = valueTypeList.stream().map(DataHarmpowerS::getS2).collect(Collectors.toList());
List<Double> data14 = valueTypeList.stream().map(DataHarmpowerS::getS3).collect(Collectors.toList());
List<Double> data15 = valueTypeList.stream().map(DataHarmpowerS::getS4).collect(Collectors.toList());
List<Double> data16 = valueTypeList.stream().map(DataHarmpowerS::getS5).collect(Collectors.toList());
List<Double> data17 = valueTypeList.stream().map(DataHarmpowerS::getS6).collect(Collectors.toList());
List<Double> data18 = valueTypeList.stream().map(DataHarmpowerS::getS7).collect(Collectors.toList());
List<Double> data19 = valueTypeList.stream().map(DataHarmpowerS::getS8).collect(Collectors.toList());
List<Double> data20 = valueTypeList.stream().map(DataHarmpowerS::getS9).collect(Collectors.toList());
List<Double> data21 = valueTypeList.stream().map(DataHarmpowerS::getS10).collect(Collectors.toList());
List<Double> data22 = valueTypeList.stream().map(DataHarmpowerS::getS11).collect(Collectors.toList());
List<Double> data23 = valueTypeList.stream().map(DataHarmpowerS::getS12).collect(Collectors.toList());
List<Double> data24 = valueTypeList.stream().map(DataHarmpowerS::getS13).collect(Collectors.toList());
List<Double> data25 = valueTypeList.stream().map(DataHarmpowerS::getS14).collect(Collectors.toList());
List<Double> data26 = valueTypeList.stream().map(DataHarmpowerS::getS15).collect(Collectors.toList());
List<Double> data27 = valueTypeList.stream().map(DataHarmpowerS::getS16).collect(Collectors.toList());
List<Double> data28 = valueTypeList.stream().map(DataHarmpowerS::getS17).collect(Collectors.toList());
List<Double> data29 = valueTypeList.stream().map(DataHarmpowerS::getS18).collect(Collectors.toList());
List<Double> data30 = valueTypeList.stream().map(DataHarmpowerS::getS19).collect(Collectors.toList());
List<Double> data31 = valueTypeList.stream().map(DataHarmpowerS::getS20).collect(Collectors.toList());
List<Double> data32 = valueTypeList.stream().map(DataHarmpowerS::getS21).collect(Collectors.toList());
List<Double> data33 = valueTypeList.stream().map(DataHarmpowerS::getS22).collect(Collectors.toList());
List<Double> data34 = valueTypeList.stream().map(DataHarmpowerS::getS23).collect(Collectors.toList());
List<Double> data35 = valueTypeList.stream().map(DataHarmpowerS::getS24).collect(Collectors.toList());
List<Double> data36 = valueTypeList.stream().map(DataHarmpowerS::getS25).collect(Collectors.toList());
List<Double> data37 = valueTypeList.stream().map(DataHarmpowerS::getS26).collect(Collectors.toList());
List<Double> data38 = valueTypeList.stream().map(DataHarmpowerS::getS27).collect(Collectors.toList());
List<Double> data39 = valueTypeList.stream().map(DataHarmpowerS::getS28).collect(Collectors.toList());
List<Double> data40 = valueTypeList.stream().map(DataHarmpowerS::getS29).collect(Collectors.toList());
List<Double> data41 = valueTypeList.stream().map(DataHarmpowerS::getS30).collect(Collectors.toList());
List<Double> data42 = valueTypeList.stream().map(DataHarmpowerS::getS31).collect(Collectors.toList());
List<Double> data43 = valueTypeList.stream().map(DataHarmpowerS::getS32).collect(Collectors.toList());
List<Double> data44 = valueTypeList.stream().map(DataHarmpowerS::getS33).collect(Collectors.toList());
List<Double> data45 = valueTypeList.stream().map(DataHarmpowerS::getS34).collect(Collectors.toList());
List<Double> data46 = valueTypeList.stream().map(DataHarmpowerS::getS35).collect(Collectors.toList());
List<Double> data47 = valueTypeList.stream().map(DataHarmpowerS::getS36).collect(Collectors.toList());
List<Double> data48 = valueTypeList.stream().map(DataHarmpowerS::getS37).collect(Collectors.toList());
List<Double> data49 = valueTypeList.stream().map(DataHarmpowerS::getS38).collect(Collectors.toList());
List<Double> data50 = valueTypeList.stream().map(DataHarmpowerS::getS39).collect(Collectors.toList());
List<Double> data51 = valueTypeList.stream().map(DataHarmpowerS::getS40).collect(Collectors.toList());
List<Double> data52 = valueTypeList.stream().map(DataHarmpowerS::getS41).collect(Collectors.toList());
List<Double> data53 = valueTypeList.stream().map(DataHarmpowerS::getS42).collect(Collectors.toList());
List<Double> data54 = valueTypeList.stream().map(DataHarmpowerS::getS43).collect(Collectors.toList());
List<Double> data55 = valueTypeList.stream().map(DataHarmpowerS::getS44).collect(Collectors.toList());
List<Double> data56 = valueTypeList.stream().map(DataHarmpowerS::getS45).collect(Collectors.toList());
List<Double> data57 = valueTypeList.stream().map(DataHarmpowerS::getS46).collect(Collectors.toList());
List<Double> data58 = valueTypeList.stream().map(DataHarmpowerS::getS47).collect(Collectors.toList());
List<Double> data59 = valueTypeList.stream().map(DataHarmpowerS::getS48).collect(Collectors.toList());
List<Double> data60 = valueTypeList.stream().map(DataHarmpowerS::getS49).collect(Collectors.toList());
List<Double> data61 = valueTypeList.stream().map(DataHarmpowerS::getS50).collect(Collectors.toList());
List<List<Double>> lists = Arrays.asList(data1,data12,data13,data14
,data15,data16,data17,data18,data19,data20,data21,data22,data23,data24
,data25,data26,data27,data28,data29,data30,data31,data32,data33,data34
,data35,data36,data37,data38,data39,data40,data41,data42,data43,data44
,data45,data46,data47,data48,data49,data50,data51,data52,data53,data54
,data55,data56,data57,data58,data59,data60,data61);
List<List<Double>> lists;
if (Objects.equals(phasicType, "T")) {
lists = extractDataLists(valueTypeList, "Tot");
} else {
lists = extractDataLists(valueTypeList, "");
}
value.setValueList(lists);
valueTypes.add(value);
});
@@ -197,6 +144,39 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
return result;
}
private List<List<Double>> extractDataLists(List<DataHarmpowerS> dataList, String prefix) {
List<List<Double>> result = new ArrayList<>();
result.add(extractField(dataList, prefix + "S"));
// Q1到Q50
for (int i = 1; i <= 50; i++) {
String fieldName = prefix + (i == 1 ? "S1" : "S" + i);
result.add(extractField(dataList, fieldName));
}
return result;
}
private List<Double> extractField(List<DataHarmpowerS> dataList, String fieldName) {
try {
Method method = DataHarmpowerS.class.getMethod("get" + capitalize(fieldName));
return dataList.stream()
.map(data -> {
try {
return (Double) method.invoke(data);
} catch (Exception e) {
throw new RuntimeException("Failed to get field: " + fieldName, e);
}
})
.collect(Collectors.toList());
} catch (NoSuchMethodException e) {
throw new RuntimeException("Field not found: " + fieldName, e);
}
}
private String capitalize(String str) {
if (str == null || str.isEmpty()) return str;
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
@Override
public void addList(List<DataHarmPowerSDto> list) {
@@ -290,16 +270,23 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
String devId = lineMap.get(lineId).getDeviceId();
CsLinePO po = lineMap.get(lineId);
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerS.class);
//A、B、C谐波视在功率有效值
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmS_", "s_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
//三相总 谐波视在功率有效值
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmTS_", "totS_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
influxQueryWrapper.eq(DataHarmpowerS::getLineId, lineId)
.eq(DataHarmpowerS::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
.select(DataHarmpowerS::getLineId)
.select(DataHarmpowerS::getPhasicType)
.select(DataHarmpowerS::getValueType)
//三相总视在功率
.select("Pq_TotS","s")
//A、B、C视在功率
.select("Pq_S","s")
//基波视在功率
.select("Pq_FundS","s_1")
//总视在功率
.select("Pq_TotS","totS")
//基波视在功率T
.select("Pq_TotHarmS","totS1")
.between(DataHarmpowerS::getTime, startTime, endTime)
.eq(DataHarmpowerS::getQualityFlag, "0");
if (Objects.isNull(po.getLineNo())) {