From 7ecdc67dfb92b63bdc742e5c95d62bf9774cbd7f Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期一, 13 十一月 2023 16:06:24 +0800 Subject: [PATCH] 1. 新增风险值的计算逻辑; --- src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskMonthAnalysis.kt | 74 +++++++++++++++++++++++++++++++++++++ 1 files changed, 74 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskMonthAnalysis.kt b/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskMonthAnalysis.kt new file mode 100644 index 0000000..4ba6551 --- /dev/null +++ b/src/main/java/com/flightfeather/monitor/analysis/dust/risk/DustRiskMonthAnalysis.kt @@ -0,0 +1,74 @@ +package com.flightfeather.monitor.analysis.dust.risk + +import com.flightfeather.monitor.domain.ds1.entity.* + +class DustRiskMonthAnalysis(val config: DustExceptionSetting) { + + //鍒嗘瀽缁撴灉 + val resultList = mutableListOf<RiskValue>() + + /** + * 鍒濆鍖� + */ + fun init() { + resultList.clear() + } + + /** + * 姣忚疆娆$殑鍒濆鍖� + */ + fun roundInit() { + resultList.add(RiskValue()) + } + + /** + * 姣忚疆娆$殑椋庨櫓鍊艰绠� + */ + fun roundCal(list: List<RiskValue?>) { + if (resultList.isEmpty()) throw IllegalStateException("缁撴灉闆唕esultList涓嶈兘涓虹┖锛�") + + val res = resultList.last() + + riskOnlineRate(res, list) + riskValidRate(res, list) + riskExceedRate(res, list) + riskExceptionRepetitionRate(res, list) + riskExceptionType(res, list) + onDone(res) + } + + fun riskOnlineRate(riskValue: RiskValue, list: List<RiskValue?>) { + riskValue.onlineRisk = avg(list) { it.onlineRisk } + } + + fun riskValidRate(riskValue: RiskValue, list: List<RiskValue?>) { + riskValue.validRisk = avg(list) { it.validRisk } + } + + fun riskExceedRate(riskValue: RiskValue, list: List<RiskValue?>) { + riskValue.exceedRisk = avg(list) { it.exceedRisk } + } + + fun riskExceptionRepetitionRate(riskValue: RiskValue, list: List<RiskValue?>) { + riskValue.typicalExceptionRepetitionRate = avg(list) { it.typicalExceptionRepetitionRate } + } + + fun riskExceptionType(riskValue: RiskValue, list: List<RiskValue?>) { + riskValue.exceptionTypeAggregation = avg(list) { it.exceptionTypeAggregation } + } + + fun onDone(riskValue: RiskValue) { + riskValue.type = "month" + } + + private fun avg(list: List<RiskValue?>, onNext: (value: RiskValue) -> Double): Double { + var total = .0 + var count = 0 + list.forEach { + if (it == null) return@forEach + total += onNext(it) + count++ + } + return if (count == 0) .0 else total / count + } +} \ No newline at end of file -- Gitblit v1.9.3