微调
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user