冀北监测点合格率算法调整

This commit is contained in:
xy
2024-09-20 16:23:01 +08:00
parent f5b7852c6a
commit 5bdd371d7b

View File

@@ -32,6 +32,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.Year; import java.time.Year;
import java.time.YearMonth; import java.time.YearMonth;
@@ -642,75 +643,47 @@ public class GridServiceImpl implements IGridService {
qualifiedDetail.setVDev(PubUtils.doubleRound(2, 100.0 - (item2.getVoltageDevOvertime() * 100.0 / item2.getAllTime()))); qualifiedDetail.setVDev(PubUtils.doubleRound(2, 100.0 - (item2.getVoltageDevOvertime() * 100.0 / item2.getAllTime())));
qualifiedDetail.setVThd(PubUtils.doubleRound(2, 100.0 - (item2.getUaberranceOvertime() * 100.0 / item2.getAllTime()))); qualifiedDetail.setVThd(PubUtils.doubleRound(2, 100.0 - (item2.getUaberranceOvertime() * 100.0 / item2.getAllTime())));
qualifiedDetail.setUbalance(PubUtils.doubleRound(2, 100.0 - (item2.getUbalanceOvertime() * 100.0 / item2.getAllTime()))); qualifiedDetail.setUbalance(PubUtils.doubleRound(2, 100.0 - (item2.getUbalanceOvertime() * 100.0 / item2.getAllTime())));
qualifiedDetail.setUHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getUharm2Overtime() + //谐波电压
item2.getUharm3Overtime() + List<Integer> list1 = getList(2,25,"getUharm",item2);
item2.getUharm4Overtime() + Integer maxValue1 = list1.stream().max(Integer::compareTo).orElse(null);
item2.getUharm5Overtime() + qualifiedDetail.setUHarm(Objects.isNull(maxValue1) ? 0 : PubUtils.doubleRound(2,100.0 - (maxValue1*100.0 / item2.getAllTime())));
item2.getUharm6Overtime() + //谐波电流
item2.getUharm7Overtime() + List<Integer> list2 = getList(2,25,"getIharm",item2);
item2.getUharm8Overtime() + Integer maxValue2 = list2.stream().max(Integer::compareTo).orElse(null);
item2.getUharm9Overtime() + qualifiedDetail.setUHarm(Objects.isNull(maxValue2) ? 0 : PubUtils.doubleRound(2,100.0 - (maxValue2*100.0 / item2.getAllTime())));
item2.getUharm10Overtime() + //间谐波电压
item2.getUharm11Overtime() + List<Integer> list3 = getList(1,16,"getInuharm",item2);
item2.getUharm12Overtime() + Integer maxValue3 = list3.stream().max(Integer::compareTo).orElse(null);
item2.getUharm13Overtime() + qualifiedDetail.setUHarm(Objects.isNull(maxValue3) ? 0 : PubUtils.doubleRound(2,100.0 - (maxValue3*100.0 / item2.getAllTime())));
item2.getUharm14Overtime() +
item2.getUharm15Overtime() +
item2.getUharm16Overtime() +
item2.getUharm17Overtime() +
item2.getUharm18Overtime() +
item2.getUharm19Overtime() +
item2.getUharm20Overtime() +
item2.getUharm21Overtime() +
item2.getUharm22Overtime() +
item2.getUharm23Overtime() +
item2.getUharm24Overtime() +
item2.getUharm25Overtime()) * 100.0 / item2.getAllTime())));
qualifiedDetail.setIHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getIharm2Overtime() +
item2.getIharm4Overtime() +
item2.getIharm5Overtime() +
item2.getIharm6Overtime() +
item2.getIharm7Overtime() +
item2.getIharm8Overtime() +
item2.getIharm9Overtime() +
item2.getIharm10Overtime() +
item2.getIharm11Overtime() +
item2.getIharm12Overtime() +
item2.getIharm13Overtime() +
item2.getIharm14Overtime() +
item2.getIharm15Overtime() +
item2.getIharm16Overtime() +
item2.getIharm17Overtime() +
item2.getIharm18Overtime() +
item2.getIharm19Overtime() +
item2.getIharm20Overtime() +
item2.getIharm21Overtime() +
item2.getIharm22Overtime() +
item2.getIharm23Overtime() +
item2.getIharm24Overtime() +
item2.getIharm25Overtime()) * 100.0 / item2.getAllTime())));
qualifiedDetail.setInuHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getInuharm1Overtime() +
item2.getInuharm2Overtime() +
item2.getInuharm3Overtime() +
item2.getInuharm4Overtime() +
item2.getInuharm5Overtime() +
item2.getInuharm6Overtime() +
item2.getInuharm7Overtime() +
item2.getInuharm8Overtime() +
item2.getInuharm9Overtime() +
item2.getInuharm10Overtime() +
item2.getInuharm11Overtime() +
item2.getInuharm12Overtime() +
item2.getInuharm13Overtime() +
item2.getInuharm14Overtime() +
item2.getInuharm15Overtime() +
item2.getInuharm16Overtime()) * 100.0 / item2.getAllTime())));
qualifiedDetail.setINeg(PubUtils.doubleRound(2, 100.0 - (item2.getINegOvertime() * 100.0 / item2.getAllTime()))); qualifiedDetail.setINeg(PubUtils.doubleRound(2, 100.0 - (item2.getINegOvertime() * 100.0 / item2.getAllTime())));
} }
if (item2.getFlickerAllTime() > 0) { if (item2.getFlickerAllTime() > 0) {
qualifiedDetail.setPlt(PubUtils.doubleRound(2, 100.0 - (item2.getFlickerOvertime() * 100.0 / item2.getFlickerAllTime()))); qualifiedDetail.setPlt(PubUtils.doubleRound(2, 100.0 - (item2.getFlickerOvertime() * 100.0 / item2.getFlickerAllTime())));
} }
} }
/**
* 使用反射添加list的值
*/
public List<Integer> getList(Integer start, Integer end, String targetName, RStatLimitRateDPO item2) {
List<Integer> result = new ArrayList<>();
for (int i = start; i <= end; i++) {
try {
// 构造方法名
String methodName = targetName + i + "Overtime";
Method method = item2.getClass().getMethod(methodName);
// 调用方法并添加到列表中
Integer value = (Integer) method.invoke(item2);
if (value != null) {
result.add(value);
}
} catch (Exception e) {
e.getMessage();
}
}
return result;
}
/** /**
* 获取监测点频率偏差 T相最大值 * 获取监测点频率偏差 T相最大值
*/ */