From c56e1e74426238939f229f0005828d05089715ff Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期四, 03 七月 2025 17:30:58 +0800 Subject: [PATCH] 2025.7.3 1. 新增动态污染溯源新的判定逻辑 --- src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt | 182 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 172 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt b/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt index e14c100..bd019b6 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt @@ -1,23 +1,52 @@ package com.flightfeather.uav.socket.eunm +import com.flightfeather.uav.biz.dataanalysis.BaseExceptionAnalysis + /** * @author riku * Date: 2020/6/10 */ -enum class FactorType(val value: Int, val des: String){ - NO2(1, "NO2"), - CO(2,"CO"), - H2S(3,"H2S"), - SO2(4,"SO2"), - O3(5,"O3"), - PM25(6,"PM25"), - PM10(7, "PM10"), - TEMPERATURE(8,"TEMPERATURE"), - HUMIDITY(9, "HUMIDITY"); +enum class FactorType(val value: Int, val des: String, val byteLength: Int){ + NO2(1, "NO2", 6), + CO(2,"CO", 6), + H2S(3,"H2S",6), + SO2(4,"SO2",6), + O3(5,"O3",6), + PM25(6,"PM25",3), + PM10(7, "PM10",3), + TEMPERATURE(8,"TEMPERATURE",3), + HUMIDITY(9, "HUMIDITY",3), + VOC(10, "VOC",6), + NOI(11, "NOI",6),//璐熸哀绂诲瓙 + LNG(12,"LNG",6),//缁忓害 + LAT(13,"LAT",5),//绾害 + VELOCITY(14, "VELOCITY", 3),//閫熷害 + TIME(15, "TIME", 6),//鏃堕棿 + WIND_SPEED(16, "WIND_SPEED", 3), + WIND_DIRECTION(17, "WIND_DIRECTION", 2), + HEIGHT(18, "HEIGHT", 3), + NO(19, "NO", 6); companion object { + /** + * 閫氳繃绱㈠紩鑾峰彇鏋氫妇绫诲瀷锛岀敤浜庢暟鎹垎鏋� + * @see [BaseExceptionAnalysis] + */ fun getByIndex(index: Int): FactorType? = when (index) { + 0 -> NO2 + 1 -> CO + 2 -> H2S + 3 -> SO2 + 4 -> O3 + 5 -> PM25 + 6 -> PM10 + 7 -> VOC + 19 -> NO + else -> null + } + + fun getByValue(value: Int): FactorType? = when (value) { NO2.value -> NO2 CO.value -> CO H2S.value -> H2S @@ -27,7 +56,140 @@ PM10.value -> PM10 TEMPERATURE.value -> TEMPERATURE HUMIDITY.value -> HUMIDITY + VOC.value -> VOC + NOI.value -> NOI + LNG.value -> LNG + LAT.value -> LAT + VELOCITY.value -> VELOCITY + TIME.value -> TIME + WIND_SPEED.value -> WIND_SPEED + WIND_DIRECTION.value -> WIND_DIRECTION + HEIGHT.value -> HEIGHT + NO.value -> NO else -> null } + + fun getByName(name: String?): FactorType? = when (name) { + NO2.des -> NO2 + CO.des -> CO + H2S.des -> H2S + SO2.des -> SO2 + O3.des -> O3 + PM25.des -> PM25 + PM10.des -> PM10 + TEMPERATURE.des -> TEMPERATURE + HUMIDITY.des -> HUMIDITY + VOC.des -> VOC + NOI.des -> NOI + LNG.des -> LNG + LAT.des -> LAT + VELOCITY.des -> VELOCITY + TIME.des -> TIME + WIND_SPEED.des -> WIND_SPEED + WIND_DIRECTION.des -> WIND_DIRECTION + HEIGHT.des -> HEIGHT + NO.des -> NO + else -> null + } + + fun getRange(name: String?): Pair<Double, Double>? { + getByName(name)?.let { + return getRange(it) + } + return null + } + + /** + * 鑾峰彇鐩戞祴鍥犲瓙鐨勫悎鐞嗚寖鍥� + */ + fun getRange(type: FactorType): Pair<Double, Double>? = when (type) { + NO -> Pair(0.1, 1000.0) + NO2 -> Pair(0.1, 1000.0) + CO -> Pair(1.0, 5000.0) + H2S -> Pair(0.1, 1000.0) + SO2 -> Pair(0.1, 1000.0) + O3 -> Pair(0.1, 2000.0) + PM25 -> Pair(0.1, 5000.0) + PM10 -> Pair(0.1, 10000.0) + TEMPERATURE -> Pair(-20.0, 70.0) + HUMIDITY -> Pair(0.0, 110.0) + VOC -> Pair(1.0, 5000.0) + NOI -> Pair(0.1, 1000.0) + LNG -> Pair(0.0, 180.0) + LAT -> Pair(0.0, 90.0) + VELOCITY -> Pair(0.0, 500.0) + TIME -> null + WIND_SPEED -> Pair(0.0, 100.0) + WIND_DIRECTION -> Pair(0.0, 360.0) + HEIGHT -> Pair(0.0, 1000.0) + else -> null + } + + fun getVMin(name: String?): Double? { + getByName(name)?.let { + return getVMin(it) + } + return null + } + + /** + * 涓嶅鐞嗕綆浜庢鍊肩殑鍊� + */ + fun getVMin(type: FactorType): Double = when (type) { + NO -> 1.0 + NO2 -> 10.0 + CO -> 100.0 + H2S -> 10.0 + SO2 -> 10.0 + O3 -> 10.0 + PM25 -> 10.0 + PM10 -> 10.0 + TEMPERATURE -> 10.0 + HUMIDITY -> 10.0 + VOC -> 10.0 + NOI -> 10.0 + LNG -> 0.0 + LAT -> 0.0 + VELOCITY -> 0.0 + TIME -> 0.0 + WIND_SPEED -> 2.0 + WIND_DIRECTION -> 0.0 + HEIGHT -> 0.0 + } + + /** + * 鍥犲瓙杩炵画鏁版嵁涓婂崌鍚堢悊骞呭害锛堝�嶆暟锛� + */ + fun getMultiplier(name: String?): Double { + getByName(name)?.let { + return getMultiplier(it) + } + return 10.0 + } + + fun getMultiplier(type: FactorType): Double = when (type) { + PM25 -> 20.0 + PM10 -> 20.0 + VOC -> 10.0 + else -> 10.0 + } + + fun outputFactor(factorName: String?): Boolean { + return when (factorName) { + NO2.des, + CO.des, + H2S.des, + SO2.des, + O3.des, + PM25.des, + PM10.des, + TEMPERATURE.des, + HUMIDITY.des, + VOC.des, + WIND_SPEED.des, + WIND_DIRECTION.des -> true + else -> false + } + } } } \ No newline at end of file -- Gitblit v1.9.3