1.调整配网用户接口超100%问题

2.去除预处理县级数据统计
This commit is contained in:
2024-09-12 09:25:39 +08:00
parent dbd7ef9b01
commit 75cf276ea9
4 changed files with 38 additions and 8 deletions

View File

@@ -466,11 +466,11 @@ public class RStatLimitServiceImpl implements RStatLimitService {
monitorLimitRateVO.setUbalanceOvertime(BigDecimal.valueOf(3.14159));
monitorLimitRateVO.setVoltageDevOvertime(BigDecimal.valueOf(3.14159));
}else {
monitorLimitRateVO.setFlickerOvertime(BigDecimal.valueOf((double) item.getFlickerOvertime()/item.getFlickerAllTime()*100).setScale(2, RoundingMode.HALF_UP));
monitorLimitRateVO.setFreqDevOvertime(BigDecimal.valueOf((double) item.getFreqDevOvertime()/item.getAllTime()*100).setScale(2, RoundingMode.HALF_UP));
monitorLimitRateVO.setUaberranceOvertime(BigDecimal.valueOf((double) item.getUaberranceOvertime()/item.getAllTime()*100).setScale(2, RoundingMode.HALF_UP));
monitorLimitRateVO.setUbalanceOvertime(BigDecimal.valueOf((double) item.getUbalanceOvertime()/item.getAllTime()*100).setScale(2, RoundingMode.HALF_UP));
monitorLimitRateVO.setVoltageDevOvertime(BigDecimal.valueOf((double) item.getVoltageDevOvertime()/item.getAllTime()*100).setScale(2, RoundingMode.HALF_UP));
monitorLimitRateVO.setFlickerOvertime(calculatePercentage(item.getFlickerOvertime(),item.getFlickerAllTime()));
monitorLimitRateVO.setFreqDevOvertime(calculatePercentage(item.getFreqDevOvertime(),item.getAllTime()));
monitorLimitRateVO.setUaberranceOvertime(calculatePercentage(item.getUaberranceOvertime(),item.getAllTime()));
monitorLimitRateVO.setUbalanceOvertime(calculatePercentage(item.getUbalanceOvertime(),item.getAllTime()));
monitorLimitRateVO.setVoltageDevOvertime(calculatePercentage(item.getVoltageDevOvertime(),item.getAllTime()));
}
setUharmOvertimeRatios(item,monitorLimitRateVO);
resultList.add(monitorLimitRateVO);
@@ -480,6 +480,32 @@ public class RStatLimitServiceImpl implements RStatLimitService {
return pageResult;
}
/**
* 计算百分比结果不超过100
*
* @param flickerOvertime 闪烁超时时间
* @param flickerAllTime 总闪烁时间
* @return 计算的百分比如果结果超过100则返回100
*/
public BigDecimal calculatePercentage(Integer flickerOvertime, Integer flickerAllTime) {
// 检查参数是否为null
if (flickerOvertime == null || flickerAllTime == null) {
throw new IllegalArgumentException("方法遇到不合法参数");
}
// 将Integer转换为BigDecimal进行计算
BigDecimal overtime = BigDecimal.valueOf(flickerOvertime);
BigDecimal allTime = BigDecimal.valueOf(flickerAllTime);
// 计算百分比
BigDecimal percentage = overtime.divide(allTime, 10, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100))
.setScale(2, RoundingMode.HALF_UP);
// 如果百分比超过100则调整为100
return percentage.compareTo(BigDecimal.valueOf(100)) > 0 ? BigDecimal.valueOf(100) : percentage;
}
@Override
public List<PwLimitDataVO> pwMonitorLimitDataRange(PwUserMonitorParam pwUserMonitorParam) {
List<PwLimitDataVO> result = new ArrayList<>();
@@ -637,6 +663,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
} else {
BigDecimal ratio = BigDecimal.valueOf((double) uharmOvertime / allTime*100)
.setScale(2, RoundingMode.HALF_UP);
ratio = ratio.compareTo(BigDecimal.valueOf(100)) > 0 ? BigDecimal.valueOf(100) : ratio;
monitorLimitRateVO.getClass().getMethod(setterName, BigDecimal.class)
.invoke(monitorLimitRateVO, ratio);
}