feiyu02
2024-05-31 da431c25dfe5122e4ed70372da36ede3e4eaec4a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)
        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
    }
}