| | |
| | | package com.flightfeather.uav.biz.dataanalysis |
| | | |
| | | import com.flightfeather.uav.biz.dataanalysis.model.ExceptionTag |
| | | import com.flightfeather.uav.domain.entity.BaseRealTimeData |
| | | |
| | | /** |
| | | * 连续类型的异常分析基类,区别于父类的地方在于此种异常只和单个数据本身有关,与相邻数据无关 |
| | | */ |
| | | abstract class BaseExceptionContinuousSingle<V : BaseAnalysisConfig, Y : BaseExceptionResult>(config: V) : |
| | | BaseExceptionContinuous<V, Y>(config) { |
| | | abstract class BaseExceptionContinuousSingle<T : ExceptionTag, V : BaseAnalysisConfig, Y : BaseExceptionResult>(config: V, tagClz: Class<T>) : |
| | | BaseExceptionContinuous<T, V, Y>(config, tagClz) { |
| | | |
| | | override fun onNextData(data: BaseRealTimeData) { |
| | | val isContinue = isContinuous(lastData, data) |
| | |
| | | } |
| | | // 判断相邻数据是否连续并且是否满足异常判断 |
| | | if (!isContinue || needCut(it)) { |
| | | checkResult(s) |
| | | it.refreshAfterCheckResult(data) |
| | | recordException(s, it, data) |
| | | } else { |
| | | if (hasException[f] == true) { |
| | | // 修改了起始数据的位置,变更为出现异常的该值,而不是原来的出现异常数据的前一个值 |
| | | if (!it.existException) { |
| | | if (!it.exceptionExisted) { |
| | | it.sIndex = it.eIndex |
| | | it.startData = data |
| | | } |
| | | it.existException = true |
| | | it.exceptionData.add(data) |
| | | it.addExceptionData(data) |
| | | } else { |
| | | checkResult(s) |
| | | it.refreshAfterCheckResult(data) |
| | | recordException(s, it, data) |
| | | } |
| | | } |
| | | } |