This commit is contained in:
wr
2025-05-09 09:34:20 +08:00
parent f56b0f87d6
commit ce283e739a

View File

@@ -3,7 +3,6 @@ package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
@@ -91,15 +90,18 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
DeviceRunEvaluateVO evaluateVO;
for (GeneralDeviceDTO deptDeviceInfo : deptDeviceInfos) {
List<String> lineIndexes = deptDeviceInfo.getLineIndexes();
if (CollUtil.isNotEmpty(lineIndexes)) {
evaluateVO = new DeviceRunEvaluateVO();
evaluateVO.setName(deptDeviceInfo.getName());
//监测完整率
List<RStatIntegrityD> integrityDS = onIntegrityList.stream().filter(x -> deptDeviceInfo.getLineIndexes().contains(x.getLineIndex())).collect(Collectors.toList());
List<RStatIntegrityD> integrityDS = onIntegrityList.stream().filter(x -> lineIndexes.contains(x.getLineIndex())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(integrityDS)) {
double realTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getRealTime).sum();
double dueTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getDueTime).sum();
evaluateVO.setIntegrityRate(NumberUtil.round(realTime * 100 / dueTime, 2));
} else {
evaluateVO.setIntegrityRate(new BigDecimal(0));
}
//终端在线率
List<RStatOnlinerateD> onlineRateDS = onlineRateList.stream().filter(x -> deptDeviceInfo.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
@@ -107,9 +109,11 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
double onlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOnlineMin).sum();
double offlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOfflineMin).sum();
evaluateVO.setOnLineRate(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2));
} else {
evaluateVO.setOnLineRate(new BigDecimal(0));
}
//终端在线率
List<RStatLimitRateDPO> limitRateDPOS = limitRateList.stream().filter(x -> deptDeviceInfo.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
List<RStatLimitRateDPO> limitRateDPOS = limitRateList.stream().filter(x -> lineIndexes.contains(x.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(limitRateDPOS)) {
double overTime = limitRateDPOS.stream().mapToDouble(x -> (x.getUaberranceOvertime() +
x.getUharm2Overtime() +
@@ -137,20 +141,24 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
x.getUharm24Overtime() +
x.getUharm25Overtime())).sum();
double allTime = limitRateDPOS.stream().mapToDouble(x -> x.getAllTime() * 25.0).sum();
if (ObjUtil.equals(allTime, 0)) {
if (allTime == 0) {
evaluateVO.setPassRate(new BigDecimal(0));
} else {
evaluateVO.setPassRate(NumberUtil.round(overTime * 100.0 / allTime, 2));
}
} else {
evaluateVO.setPassRate(new BigDecimal(0));
}
evaluateVO.setEvaluate(
ONINTEGRITY.multiply(evaluateVO.getIntegrityRate())
.add(ONLINERATE.multiply(evaluateVO.getOnLineRate())
.add(LIMITRATE.multiply(evaluateVO.getPassRate())))
.add(LIMITRATE.multiply(evaluateVO.getPassRate()))).stripTrailingZeros()
);
info.add(evaluateVO);
}
}
return info;
}
}