| | |
| | | var tempAvg = TempResult() |
| | | var tempMax = TempResult() |
| | | var tempMin = TempResult() |
| | | var deviceCode: String? = null |
| | | dataList.forEach { |
| | | // 监测点有多台设备时,每台设备单独统计,取均值最高的为统计结果 |
| | | // 监测点有多台设备时,每台设备单独记录 |
| | | deviceCode = if (it.isNotEmpty()) { |
| | | getDeviceCode(it[0]) |
| | | } else { |
| | | null |
| | | } |
| | | val _tempExceedTimes = TempResult() |
| | | val _tempAvg = TempResult() |
| | | val _tempMax = TempResult() |
| | |
| | | val dustDataResult = DustDataResult().apply { |
| | | drSceneId = evaluationScene.scene.value?.guid |
| | | drSceneName = evaluationScene.scene.value?.name |
| | | drDeviceCode = deviceCode |
| | | drTime = source?.config?.startTime |
| | | drExceedTimes = tempExceedTimes.count |
| | | drAvg = tempAvg.avg |
| | |
| | | drMin = tempMin.total |
| | | drOverAvgPer = overAvgRate(drAvg, dAvg) |
| | | drDataNum = count(dataList) |
| | | // 当数据量为0时,超月度区均值百分比变为0 |
| | | if (drDataNum == 0) drOverAvgPer = .0 |
| | | drEffectiveRate = effectiveRate(dataList, evaluationScene) |
| | | } |
| | | //更新入库 |
| | |
| | | * 当前为范围内全部监测点的均值 |
| | | */ |
| | | abstract fun districtAvg(source: AopDataSource?): Double? |
| | | |
| | | /** |
| | | * 获取设备编号 |
| | | */ |
| | | abstract fun getDeviceCode(data: T?): String? |
| | | |
| | | /** |
| | | * 获取原始监测数据 |
| | |
| | | /** |
| | | * 超月均值百分比 |
| | | */ |
| | | abstract fun overAvgRate(avg: Double, dAvg: Double?): Double? |
| | | open fun overAvgRate(avg: Double, dAvg: Double?): Double? { |
| | | return if (dAvg != null && dAvg != .0) { |
| | | round(((avg - dAvg) / dAvg) * 1000) / 1000 |
| | | } else { |
| | | .0 |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 数据个数 |