diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java index 9723d918e..34da163ec 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java @@ -32,6 +32,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.time.LocalDate; import java.time.Year; 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.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.setUHarm(PubUtils.doubleRound(2, 100.0 - ((item2.getUharm2Overtime() + - item2.getUharm3Overtime() + - item2.getUharm4Overtime() + - item2.getUharm5Overtime() + - item2.getUharm6Overtime() + - item2.getUharm7Overtime() + - item2.getUharm8Overtime() + - item2.getUharm9Overtime() + - item2.getUharm10Overtime() + - item2.getUharm11Overtime() + - item2.getUharm12Overtime() + - item2.getUharm13Overtime() + - 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()))); + //谐波电压 + List list1 = getList(2,25,"getUharm",item2); + Integer maxValue1 = list1.stream().max(Integer::compareTo).orElse(null); + qualifiedDetail.setUHarm(Objects.isNull(maxValue1) ? 0 : PubUtils.doubleRound(2,100.0 - (maxValue1*100.0 / item2.getAllTime()))); + //谐波电流 + List list2 = getList(2,25,"getIharm",item2); + Integer maxValue2 = list2.stream().max(Integer::compareTo).orElse(null); + qualifiedDetail.setUHarm(Objects.isNull(maxValue2) ? 0 : PubUtils.doubleRound(2,100.0 - (maxValue2*100.0 / item2.getAllTime()))); + //间谐波电压 + List list3 = getList(1,16,"getInuharm",item2); + Integer maxValue3 = list3.stream().max(Integer::compareTo).orElse(null); + qualifiedDetail.setUHarm(Objects.isNull(maxValue3) ? 0 : PubUtils.doubleRound(2,100.0 - (maxValue3*100.0 / item2.getAllTime()))); qualifiedDetail.setINeg(PubUtils.doubleRound(2, 100.0 - (item2.getINegOvertime() * 100.0 / item2.getAllTime()))); } if (item2.getFlickerAllTime() > 0) { qualifiedDetail.setPlt(PubUtils.doubleRound(2, 100.0 - (item2.getFlickerOvertime() * 100.0 / item2.getFlickerAllTime()))); } } + + /** + * 使用反射添加list的值 + */ + public List getList(Integer start, Integer end, String targetName, RStatLimitRateDPO item2) { + List 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相最大值 */