package com.flightfeather.uav.biz.dataanalysis
|
|
import com.flightfeather.uav.biz.dataanalysis.model.DataAnalysisConfig
|
import com.flightfeather.uav.domain.entity.BaseRealTimeData
|
|
/**
|
* 连续类型的异常分析基类,区别于父类的地方在于此种异常只和单个数据本身有关,与相邻数据无关
|
*/
|
abstract class BaseExceptionContinuousSingle(config: DataAnalysisConfig) : BaseExceptionContinuous(config) {
|
|
override fun onNextData(data: BaseRealTimeData) {
|
val isContinue = isContinuous(lastData, data)
|
val hasException = judgeException(lastData, data)
|
config.factorFilter.selectedList.forEach {s->
|
val f = s.main
|
tagMap[f]?.let {
|
it.eIndex++
|
if (lastData == null) {
|
it.startData = data
|
}
|
// 判断相邻数据是否连续并且是否满足异常判断
|
if (!isContinue) {
|
checkResult(s)
|
it.sIndex = it.eIndex
|
it.startData = data
|
} else {
|
if (hasException[f] == true) {
|
// 修改了起始数据的位置,变更为出现异常的该值,而不是原来的出现异常的数据的前一个值
|
if (!it.existException) {
|
it.sIndex = it.eIndex
|
it.startData = data
|
}
|
it.existException = true
|
} else {
|
checkResult(s)
|
}
|
}
|
}
|
}
|
// repeat(config.factorCount) { i ->
|
// eIndex[i]++
|
// if (lastData == null) {
|
// startData[i] = data
|
// }
|
// // 判断相邻数据是否连续并且是否满足异常判断
|
// if (!isContinue) {
|
// checkResult()
|
// sIndex[i] = eIndex[i]
|
// startData[i] = data
|
// } else {
|
// if (hasException[i]) {
|
// // 修改了起始数据的位置,变更为出现异常的该值,而不是原来的出现异常的数据的前一个值
|
// if (!existException[i]) {
|
// sIndex[i] = eIndex[i]
|
// startData[i] = data
|
// }
|
// existException[i] = true
|
// } else {
|
// checkResult()
|
// }
|
// }
|
// }
|
lastData = data
|
}
|
}
|