package com.qianwen.smartman.modules.mdc.utils;
|
|
import cn.hutool.core.util.NumberUtil;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
import com.qianwen.smartman.common.constant.MdcConstant;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.mdc.entity.SuperAggregateState;
|
import com.qianwen.smartman.modules.mdc.enums.OpenTypeEnums;
|
import com.qianwen.smartman.modules.mdc.enums.ProductivityTypeEnum;
|
import com.qianwen.smartman.modules.mdc.enums.RpsTypeEnum;
|
|
/**
|
* 效率计算
|
*/
|
public class EifficiencyUtils {
|
public static Double openShiftTypeCalculationResults(List<SuperAggregateState> superAggregateStates, ProductivityTypeEnum productivityType) {
|
Double v;
|
switch (productivityType) {
|
case RUNNING:
|
v = calculationRunning(FilterOffUtils.filterOffDay(superAggregateStates, OpenTypeEnums.RUNNING));
|
break;
|
case ALARM:
|
v = calculationAlarm(FilterOffUtils.filterOffDay(superAggregateStates, OpenTypeEnums.ALARM));
|
break;
|
default:
|
v = calculationOee(FilterOffUtils.filterOffDay(superAggregateStates, OpenTypeEnums.OEE));
|
break;
|
}
|
return v;
|
}
|
|
public static Double calculationResults(List<SuperAggregateState> superAggregateStates, ProductivityTypeEnum productivityType) {
|
Double v;
|
switch (productivityType) {
|
case RUNNING:
|
v = calculationRunning(superAggregateStates);
|
break;
|
case ALARM:
|
v = calculationAlarm(superAggregateStates);
|
break;
|
default:
|
v = calculationOee(superAggregateStates);
|
break;
|
}
|
return v;
|
}
|
|
/**
|
* 计算运行率?
|
* @param originalData
|
* @return
|
*/
|
public static Double calculationRunning(List<SuperAggregateState> originalData) {
|
List<SuperAggregateState> originalData2 = FilterOffUtils.filterOffDay(originalData, OpenTypeEnums.RUNNING);
|
double result = 0.0d;
|
if (Func.isNotEmpty(originalData2)) {
|
long sum = originalData2.stream().mapToLong((v0) -> {
|
return v0.getDurationCollect();
|
}).sum();
|
double running = originalData2.stream().filter(e -> {
|
return e.getRps().equals(Integer.valueOf(RpsTypeEnum.T1.getType()));
|
}).mapToDouble((v0) -> {
|
return v0.getDurationCollect();
|
}).sum();
|
result = !new Long("0").equals(Long.valueOf(sum)) ? Double.parseDouble(NumberUtil.decimalFormat(MdcConstant.RATE_FORMAT, running / sum)) : 0.0d;
|
}
|
return Double.valueOf(result);
|
}
|
|
/**
|
* 计算报警率
|
* @param originalData
|
* @return
|
*/
|
public static Double calculationAlarm(List<SuperAggregateState> originalData) {
|
List<SuperAggregateState> originalData2 = FilterOffUtils.filterOffDay(originalData, OpenTypeEnums.ALARM);
|
double result = 0.0d;
|
if (Func.isNotEmpty(originalData2)) {
|
//总时间
|
double sum = originalData2.stream().mapToDouble((v0) -> {
|
return v0.getDurationCollect();
|
}).sum();
|
double running = originalData2.stream().filter(e -> e.getRps().equals(4)).collect(Collectors.toList()).stream().mapToDouble(SuperAggregateState::getDurationCollect).sum();
|
/*
|
double running = ((List) originalData2.stream().filter(e -> {
|
return e.getRps().equals(4);
|
}).collect(Collectors.toList())).stream().mapToDouble((v0) -> {
|
return v0.getDurationCollect();
|
}).sum();*/
|
result = sum != 0.0d ? Double.parseDouble(NumberUtil.decimalFormat(MdcConstant.RATE_FORMAT, running / sum)) : 0.0d;
|
}
|
return Double.valueOf(result);
|
}
|
|
/**
|
* 计算OEE稼动率
|
* @param originalData
|
* @return
|
*/
|
public static Double calculationOee(List<SuperAggregateState> originalData) {
|
List<SuperAggregateState> originalData2 = FilterOffUtils.filterOffDay(originalData, OpenTypeEnums.OEE);
|
double result = 0.0d;
|
if (Func.isNotEmpty(originalData2)) {
|
long sum = originalData2.stream().mapToLong((v0) -> {
|
return v0.getDurationCollect();
|
}).sum();
|
double running = originalData2.stream().filter(e -> {
|
return MdcConstant.IN_PLAN.equals(e.getIsPlan());
|
}).mapToDouble((v0) -> {
|
return v0.getDurationCollect();
|
}).sum();
|
result = !new Long("0").equals(Long.valueOf(sum)) ? Double.parseDouble(NumberUtil.decimalFormat(MdcConstant.RATE_FORMAT, running / sum)) : 0.0d;
|
}
|
return Double.valueOf(result);
|
}
|
}
|