| | |
| | | //获取原始监测数据 |
| | | val dataList = fetchDataResources(evaluationScene) |
| | | //计算统计结果 |
| | | var tempExceedTimes = TempResult() |
| | | var tempAvg = TempResult() |
| | | var tempMax = TempResult() |
| | | var tempMin = TempResult() |
| | | // var tempExceedTimes = TempResult() |
| | | // var tempAvg = TempResult() |
| | | // var tempMax = TempResult() |
| | | // var tempMin = TempResult() |
| | | dataList.forEach { |
| | | // 监测点有多台设备时,每台设备单独统计,取均值最高的为统计结果 |
| | | val _tempExceedTimes = TempResult() |
| | | val _tempAvg = TempResult() |
| | | val _tempMax = TempResult() |
| | | val _tempMin = TempResult() |
| | | // 监测点有多台设备时,每台设备单独记录 |
| | | val deviceCode = if (it.isNotEmpty()) { |
| | | getDeviceCode(it[0]) |
| | | } else { |
| | | null |
| | | } |
| | | val tempExceedTimes = TempResult() |
| | | val tempAvg = TempResult() |
| | | val tempMax = TempResult() |
| | | val tempMin = TempResult() |
| | | // val _tempExceedTimes = TempResult() |
| | | // val _tempAvg = TempResult() |
| | | // val _tempMax = TempResult() |
| | | // val _tempMin = TempResult() |
| | | it.forEach { t -> |
| | | t?.let { |
| | | exceedTimes(t, _tempExceedTimes) |
| | | avg(t, _tempAvg) |
| | | max(t, _tempMax) |
| | | min(t, _tempMin) |
| | | exceedTimes(t, tempExceedTimes) |
| | | avg(t, tempAvg) |
| | | max(t, tempMax) |
| | | min(t, tempMin) |
| | | } |
| | | } |
| | | // 保留均值最高的一台设备 |
| | | if (_tempAvg.avg > tempAvg.avg) { |
| | | tempExceedTimes = _tempExceedTimes |
| | | tempAvg = _tempAvg |
| | | tempMax = _tempMax |
| | | tempMin = _tempMin |
| | | // if (_tempAvg.avg > tempAvg.avg) { |
| | | // tempExceedTimes = _tempExceedTimes |
| | | // tempAvg = _tempAvg |
| | | // tempMax = _tempMax |
| | | // tempMin = _tempMin |
| | | // } |
| | | 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 |
| | | drMax = tempMax.total |
| | | drMin = tempMin.total |
| | | drOverAvgPer = overAvgRate(drAvg, dAvg) |
| | | drDataNum = count(dataList) |
| | | // 当数据量为0时,超月度区均值百分比变为0 |
| | | if (drDataNum == 0) drOverAvgPer = .0 |
| | | drEffectiveRate = effectiveRate(dataList, evaluationScene) |
| | | } |
| | | //更新入库 |
| | | aopOutput.toDbDataResult(dustDataResult) |
| | | } |
| | | val dustDataResult = DustDataResult().apply { |
| | | drSceneId = evaluationScene.scene.value?.guid |
| | | drSceneName = evaluationScene.scene.value?.name |
| | | drTime = source?.config?.startTime |
| | | drExceedTimes = tempExceedTimes.count |
| | | drAvg = tempAvg.avg |
| | | drMax = tempMax.total |
| | | drMin = tempMin.total |
| | | drOverAvgPer = overAvgRate(drAvg, dAvg) |
| | | drDataNum = count(dataList) |
| | | // 当数据量为0时,超月度区均值百分比变为0 |
| | | if (drDataNum == 0) drOverAvgPer = .0 |
| | | drEffectiveRate = effectiveRate(dataList, evaluationScene) |
| | | } |
| | | //更新入库 |
| | | aopOutput.toDbDataResult(dustDataResult) |
| | | } |
| | | } |
| | | |
| | |
| | | abstract fun districtAvg(source: AopDataSource?): Double? |
| | | |
| | | /** |
| | | * 获取设备编号 |
| | | */ |
| | | abstract fun getDeviceCode(data: T?): String? |
| | | |
| | | /** |
| | | * 获取原始监测数据 |
| | | */ |
| | | abstract fun fetchDataResources(evaluationScene: AopDataSource.EvaluationScene): List<List<T?>> |