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.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.pq.mapper.RStatIntegrityDMapper; import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
@@ -91,64 +90,73 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
DeviceRunEvaluateVO evaluateVO; DeviceRunEvaluateVO evaluateVO;
for (GeneralDeviceDTO deptDeviceInfo : deptDeviceInfos) { for (GeneralDeviceDTO deptDeviceInfo : deptDeviceInfos) {
evaluateVO = new DeviceRunEvaluateVO(); List<String> lineIndexes = deptDeviceInfo.getLineIndexes();
evaluateVO.setName(deptDeviceInfo.getName()); 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()); //监测完整率
if (CollUtil.isNotEmpty(integrityDS)) { List<RStatIntegrityD> integrityDS = onIntegrityList.stream().filter(x -> lineIndexes.contains(x.getLineIndex())).collect(Collectors.toList());
double realTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getRealTime).sum(); if (CollUtil.isNotEmpty(integrityDS)) {
double dueTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getDueTime).sum(); double realTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getRealTime).sum();
evaluateVO.setIntegrityRate(NumberUtil.round(realTime * 100 / dueTime, 2)); double dueTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getDueTime).sum();
} evaluateVO.setIntegrityRate(NumberUtil.round(realTime * 100 / dueTime, 2));
//终端在线率
List<RStatOnlinerateD> onlineRateDS = onlineRateList.stream().filter(x -> deptDeviceInfo.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(onlineRateDS)) {
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));
}
//终端在线率
List<RStatLimitRateDPO> limitRateDPOS = limitRateList.stream().filter(x -> deptDeviceInfo.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(limitRateDPOS)) {
double overTime = limitRateDPOS.stream().mapToDouble(x -> (x.getUaberranceOvertime() +
x.getUharm2Overtime() +
x.getUharm3Overtime() +
x.getUharm4Overtime() +
x.getUharm5Overtime() +
x.getUharm6Overtime() +
x.getUharm7Overtime() +
x.getUharm8Overtime() +
x.getUharm9Overtime() +
x.getUharm10Overtime() +
x.getUharm11Overtime() +
x.getUharm12Overtime() +
x.getUharm13Overtime() +
x.getUharm14Overtime() +
x.getUharm15Overtime() +
x.getUharm16Overtime() +
x.getUharm17Overtime() +
x.getUharm18Overtime() +
x.getUharm19Overtime() +
x.getUharm20Overtime() +
x.getUharm21Overtime() +
x.getUharm22Overtime() +
x.getUharm23Overtime() +
x.getUharm24Overtime() +
x.getUharm25Overtime())).sum();
double allTime = limitRateDPOS.stream().mapToDouble(x -> x.getAllTime() * 25.0).sum();
if (ObjUtil.equals(allTime, 0)) {
evaluateVO.setPassRate(new BigDecimal(0));
} else { } else {
evaluateVO.setPassRate(NumberUtil.round(overTime * 100.0 / allTime, 2)); evaluateVO.setIntegrityRate(new BigDecimal(0));
} }
//终端在线率
List<RStatOnlinerateD> onlineRateDS = onlineRateList.stream().filter(x -> deptDeviceInfo.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(onlineRateDS)) {
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 -> lineIndexes.contains(x.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(limitRateDPOS)) {
double overTime = limitRateDPOS.stream().mapToDouble(x -> (x.getUaberranceOvertime() +
x.getUharm2Overtime() +
x.getUharm3Overtime() +
x.getUharm4Overtime() +
x.getUharm5Overtime() +
x.getUharm6Overtime() +
x.getUharm7Overtime() +
x.getUharm8Overtime() +
x.getUharm9Overtime() +
x.getUharm10Overtime() +
x.getUharm11Overtime() +
x.getUharm12Overtime() +
x.getUharm13Overtime() +
x.getUharm14Overtime() +
x.getUharm15Overtime() +
x.getUharm16Overtime() +
x.getUharm17Overtime() +
x.getUharm18Overtime() +
x.getUharm19Overtime() +
x.getUharm20Overtime() +
x.getUharm21Overtime() +
x.getUharm22Overtime() +
x.getUharm23Overtime() +
x.getUharm24Overtime() +
x.getUharm25Overtime())).sum();
double allTime = limitRateDPOS.stream().mapToDouble(x -> x.getAllTime() * 25.0).sum();
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()))).stripTrailingZeros()
);
info.add(evaluateVO);
} }
evaluateVO.setEvaluate(
ONINTEGRITY.multiply(evaluateVO.getIntegrityRate())
.add(ONLINERATE.multiply(evaluateVO.getOnLineRate())
.add(LIMITRATE.multiply(evaluateVO.getPassRate())))
);
info.add(evaluateVO);
} }
return info; return info;