feiyu02
2025-07-21 38d72198bfcced01ed9513b978163e5cd1d84625
src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
@@ -29,9 +29,13 @@
        this.callback = callback
    }
    override var excludedFactor: List<FactorType> = listOf(FactorType.NO2)
    private var callback: NewPolluteClueCallback? = null
    abstract var windLevelCondition: RTExcWindLevelConfig.WindLevelCondition
    override var judgeMethod: JudgeMethod = JudgeMethod.M1
    override fun getExceptionType(): ExceptionType {
        return ExceptionType.TYPE4
@@ -83,12 +87,12 @@
        return tag.exceptionData.size >= windLevelCondition.countLimit
    }
    override fun needCut(tag: ExceptionTag, hasException: Boolean?): Boolean {
    override fun needCut(tag: ExceptionTag, hasException: Boolean?, data: BaseRealTimeData): Boolean {
        // 按照时长和距离限制将异常截取
        if (tag.exceptionData.isEmpty()) return false
        val se = tag.exceptionData.first()
        val ee = tag.exceptionData.last()
        val ee = data
        val sTime = LocalDateTime.ofInstant(se.dataTime?.toInstant(), ZoneId.systemDefault())
        val eTime = LocalDateTime.ofInstant(ee.dataTime?.toInstant(), ZoneId.systemDefault())
@@ -116,10 +120,17 @@
    }
    override fun newResult(tag: ExceptionTag, factor: FactorFilter.SelectedFactor): PollutedClue {
        return PollutedClue(tag, factor, getExceptionType(), config, windLevelCondition)
        return PollutedClue()
    }
//    override fun newResult(
    override fun newResult(exceptions: List<Pair<FactorFilter.SelectedFactor, ExceptionTag>>): PollutedClue {
        return if (exceptions.isEmpty())
            PollutedClue()
        else
            PollutedClue(exceptions, getExceptionType(), config, windLevelCondition)
    }
    //    override fun newResult(
//        start: BaseRealTimeData,
//        end: BaseRealTimeData?,
//        factor: FactorFilter.SelectedFactor,
@@ -134,9 +145,24 @@
        exceptionStatus: ExceptionStatusType,
    ) {
        super.onNewException(tag, factor, exceptionStatus)
//        callback?.let { func ->
//            val exc = tag.exceptionResult.last()
//            func.invoke(exc as PollutedClue)
//        }
    }
    override fun mergeExceptionResult() {
        super.mergeExceptionResult()
        callback?.let { func ->
            val exc = tag.exceptionResult.last()
            func.invoke(exc as PollutedClue)
            result.forEach {
                func.invoke(it)
            }
//            latestExceptions.forEach {
//                func.invoke(listOf(it as PollutedClue))
//            }
//            latestCombinedExc.forEach {
//                func.invoke(it as List<PollutedClue>)
//            }
        }
    }
}