feiyu02
2025-07-03 c56e1e74426238939f229f0005828d05089715ff
src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuousSingle.kt
@@ -1,16 +1,17 @@
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)
        val hasException = judgeException(lastData, data)
        val hasException = judge(lastData, data)
        config.factorFilter.selectedList.forEach { s ->
            val f = s.main
            tagMap[f]?.let {
@@ -19,21 +20,18 @@
                    it.startData = data
                }
                // 判断相邻数据是否连续并且是否满足异常判断
                if (!isContinue || needCut(it)) {
                    checkResult(s)
                    it.refreshAfterCheckResult(data)
                if (!isContinue || needCut(it, hasException[f])) {
                    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)
                    }
                }
            }