ÎļþÃû´Ó src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopDataAnalysis.kt ÐÞ¸Ä |
| | |
| | | package cn.flightfeather.supervision.business.autooutput.score |
| | | package cn.flightfeather.supervision.business.autooutput.dataanalysis |
| | | |
| | | import cn.flightfeather.supervision.business.autooutput.AopOutput |
| | | import cn.flightfeather.supervision.business.autooutput.datasource.AopDataConfig |
| | |
| | | ) { |
| | | |
| | | /** |
| | | * ç»è®¡ä¸é´åå¨ç»æ |
| | | * ç»è®¡æ°æ® 临æ¶åå¨ç»æ |
| | | */ |
| | | inner class TempResult( |
| | | var total: Double = .0, |
| | | var count: Int = 0, |
| | | ){ |
| | | fun avg(): Double { |
| | | var avg: Double = -1.0 |
| | | get() { |
| | | if (field == -1.0) { |
| | | field = avg() |
| | | } |
| | | return field |
| | | } |
| | | |
| | | private fun avg(): Double { |
| | | return if (count == 0) { |
| | | .0 |
| | | } else { |
| | |
| | | /** |
| | | * æ§è¡ç»è®¡é»è¾ |
| | | */ |
| | | fun execute() { |
| | | val dAvg = districtAvg(source) |
| | | fun execute(avg: Double? = null) { |
| | | //计ç®åºåå¼ |
| | | val dAvg = avg ?: districtAvg(source) |
| | | println("åå¼ï¼${dAvg}") |
| | | //循ç¯å¤çæ¯ä¸ªåºæ¯ |
| | | source?.loop { _, evaluationScene -> |
| | | //è·ååå§çæµæ°æ® |
| | | val dataList = fetchDataResources(evaluationScene) |
| | | //计ç®ç»è®¡ç»æ |
| | | val tempExceedTimes = TempResult() |
| | | val tempAvg = TempResult() |
| | | val tempMax = TempResult() |
| | | val 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() |
| | | 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 |
| | | } |
| | | } |
| | | val dustDataResult = DustDataResult().apply { |
| | |
| | | drSceneName = evaluationScene.scene.value?.name |
| | | drTime = source?.config?.startTime |
| | | drExceedTimes = tempExceedTimes.count |
| | | drAvg = tempAvg.avg() |
| | | drAvg = tempAvg.avg |
| | | drMax = tempMax.total |
| | | drMin = tempMin.total |
| | | drOverAvgPer = overAvgRate(drAvg, dAvg) |
| | |
| | | /** |
| | | * è¶
æåå¼ç¾åæ¯ |
| | | */ |
| | | abstract fun overAvgRate(avg: Double, dAvg: Double?): Double |
| | | abstract fun overAvgRate(avg: Double, dAvg: Double?): Double? |
| | | |
| | | /** |
| | | * æ°æ®ä¸ªæ° |