This commit is contained in:
wr
2025-12-02 16:05:13 +08:00
parent 8a958fa34c
commit f0894ca0ed
2 changed files with 36 additions and 33 deletions

View File

@@ -18,6 +18,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@@ -53,7 +54,7 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
//获取所有终端信息
List<DevDetail> devInfoByIds = deviceService.getDevInfoByIds(deviceIds);
rate.setBelowNum(CollUtil.isNotEmpty(onlineRateByDev) ? calculateOnLineRate(onlineRateByDev, 90) : deviceIds.size());
rate.setBelowNum(CollUtil.isNotEmpty(onlineRateByDev) ? calculateOnLineRate(onlineRateByDev, 90, deviceIds.size()) : deviceIds.size());
rate.setTotalOnlineRate(calculateOnLineRate(onlineRateByDev, deviceIds));
List<DeviceOnlineRate.CitDetail> citDetailList = new ArrayList<>();
DeviceOnlineRate.CitDetail citDetail;
@@ -66,7 +67,7 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
citDetail = new DeviceOnlineRate.CitDetail();
citDetail.setCitName(dto.getName());
citDetail.setCitTotalNum(dto.getDeviceIndexes().size());
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateOnLineRate(onlineRateByDev, 90) : dto.getDeviceIndexes().size());
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateOnLineRate(citDevOnRate, 90, dto.getDeviceIndexes().size()) : dto.getDeviceIndexes().size());
citDetail.setCitTotalOnlineRate(calculateOnLineRate(onlineRateByDev, dto.getDeviceIndexes()));
List<DeviceOnlineRate.Detail> detailList = new ArrayList<>();
List<DevDetail> details = devInfoByIds.stream().filter(x -> dto.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
@@ -104,13 +105,13 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
BigDecimal onlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatOnlinerateVO::getOnlineMin).sum());
BigDecimal offlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatOnlinerateVO::getOfflineMin).sum());
BigDecimal sumMin = onlineMin.add(offlineMin);
return onlineMin.divide(sumMin, 2).toString();
return onlineMin.multiply(BigDecimal.valueOf(100.0)).divide(sumMin, 2, RoundingMode.HALF_UP).toString();
}
return "0";
}
private Integer calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev, Integer limit) {
return onlineRateByDev.stream().filter(x -> x.getOnlineRate() < limit).collect(Collectors.toList()).size();
private Integer calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev, Integer limit, Integer count) {
return count - onlineRateByDev.stream().filter(x -> x.getOnlineRate() >= limit).collect(Collectors.toList()).size();
}