feiyu02
2025-12-25 d649f734c44541641158aec2d6b10d630f5a0827
src/main/kotlin/com/flightfeather/uav/domain/repository/SourceTraceRep.kt
@@ -99,18 +99,26 @@
        return if (res.isEmpty()) null else res[0]
    }
    val stMsgCache = mutableMapOf<String, List<BaseExceptionResult?>>()
    fun fetchList(
        deviceCode: String,
        startTime: Date,
        endTime: Date,
        msgType: MsgType? = null,
        minPer: Double? = 0.5,
    ): List<BaseExceptionResult?> {
        var stMsgList = listOf<BaseExceptionResult?>()
        val key = "${deviceCode}_${startTime.time}_${endTime.time}_${msgType?.value}"
        if (stMsgCache.containsKey(key)) {
            stMsgList = stMsgCache[key]!!
        }
        if (stMsgList.isEmpty()) {
        var res = sourceTraceMsgBlobMapper.selectWithBlob(deviceCode, startTime, endTime)
        if (msgType !== null) {
            res = res.filter { it?.msgType == msgType.value }
        }
        return res.map { stm ->
            stMsgList = res.map { stm ->
            when (stm?.msgType) {
                MsgType.PolClue.value,
                MsgType.DataChange.value,
@@ -125,6 +133,20 @@
                else -> null
            }
        }
            stMsgCache[key] = stMsgList
        }
        // 筛选出异常数据PollutedClue中异常百分比大于minPer的
        return stMsgList.filter {
            if (it is PollutedClue) {
                var valid = false
                (it as PollutedClue?)?.pollutedData?.statisticMap?.entries?.forEach {sta->
                    if (!valid) valid = (sta.value.avgPer?:.0) > minPer!!
                }
                valid
            } else {
                true
            }
        }
    }
    @Transactional