feiyu02
2025-07-16 8fc27dba6719041402e3e3c099e2f3e01d9d52c7
src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/SourceTraceController.kt
@@ -32,7 +32,7 @@
        this.sceneInfoRep = sceneInfoRep
        this.sourceTraceRep = sourceTraceRep
        this.config = if (factorFilter != null) {
            RTExcWindLevelConfig(factorFilter, emptyList())
            RTExcWindLevelConfig(factorFilter)
        } else {
            RTExcWindLevelConfig(
                FactorFilter.builder()
@@ -44,11 +44,13 @@
                    .withMain(FactorType.PM25)
                    .withMain(FactorType.PM10)
                    .withMain(FactorType.VOC)
                    .create(),
                listOf(
                    listOf(FactorType.PM25, FactorType.PM10),
                    listOf(FactorType.VOC, FactorType.CO),
                )
                    .withCombination(
                        listOf(
                            listOf(FactorType.PM25, FactorType.PM10),
                            listOf(FactorType.VOC, FactorType.CO),
                        )
                    )
                    .create()
            )
        }
        pollutedSummary = PollutedSummary(config) { summaryCallback(it) }
@@ -110,32 +112,28 @@
    }
    // 数据突变异常回调
    private fun exceptionCallback(ex: List<PollutedClue>) {
        ex.forEach {
            // 溯源污染源信息
            it.searchScenes(sceneInfoRep)
            it.msgType = MsgType.PolClue.value
        }
    private fun exceptionCallback(ex: PollutedClue) {
        // 溯源污染源信息
        ex.searchScenes(sceneInfoRep)
        ex.msgType = MsgType.PolClue.value
        // 广播污染溯源异常结果
        UnderwayWebSocketSender.broadcast(MsgType.PolClue.value, ex)
        sourceTraceRep.insertList(MsgType.PolClue, ex)
        sourceTraceRep.insert(MsgType.PolClue, ex)
        // 记录污染线索
        pollutedSummary.addClueList(ex)
        pollutedSummary.addClue(ex)
    }
    // 数据变化提醒回调
    private fun dataChangeCallback(ex: List<PollutedClue>) {
        ex.forEach {
            // 溯源污染源信息
            it.searchScenes(sceneInfoRep)
            it.msgType = MsgType.DataChange.value
        }
    private fun dataChangeCallback(ex: PollutedClue) {
        // 溯源污染源信息
        ex.searchScenes(sceneInfoRep)
        ex.msgType = MsgType.DataChange.value
        // 广播数据变化提醒
        UnderwayWebSocketSender.broadcast(MsgType.DataChange.value, ex)
        sourceTraceRep.insertList(MsgType.DataChange, ex)
        sourceTraceRep.insert(MsgType.DataChange, ex)
    }
    private fun summaryCallback(ex: AnalysisResult) {