feiyu02
2025-05-28 19c90b219bd80f82bfcf799a7adfd03fd469c0b7
src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt
@@ -2,6 +2,7 @@
import com.flightfeather.uav.biz.FactorFilter
import com.flightfeather.uav.biz.dataanalysis.BaseExceptionAnalysis
import com.flightfeather.uav.biz.sourcetrace.exceptiontype.RealTimeExceptionSlideAverage
import com.flightfeather.uav.biz.sourcetrace.exceptiontype.RealTimeExceptionValueMutation
import com.flightfeather.uav.biz.sourcetrace.model.RealTimeExceptionResult
import com.flightfeather.uav.common.utils.GsonUtils
@@ -42,7 +43,7 @@
                    .withMain(FactorType.VOC)
                    .create()
            )
        initTask(config)
        initTask()
    }
    constructor(sceneInfoRep: SceneInfoRep) : this(sceneInfoRep, null)
@@ -54,11 +55,14 @@
    private val taskList = mutableListOf<BaseExceptionAnalysis<RealTimeAnalysisConfig, RealTimeExceptionResult>>()
    private fun initTask(config: RealTimeAnalysisConfig) {
    fun initTask() {
        taskList.clear()
        taskList.apply {
            add(
                RealTimeExceptionValueMutation(config) { exceptionCallback(it) }.also { it.init() }
            )
            add(
                RealTimeExceptionSlideAverage(config){ exceptionCallback(it)}.also { it.init() }
            )
        }
@@ -135,9 +139,11 @@
        // 更新中间点信息
        ex.midData = avgData.apply {
            dataTime = midData.dataTime
            createTime = midData.createTime
            longitude = midData.longitude
            latitude = midData.latitude
        }
        }.toDataVo()
        // 更新溯源范围内的污染场景信息
        ex.relatedSceneList = result
    }
@@ -160,14 +166,24 @@
        val eDeg = windDir + defaultDegOffset
        val distance = windSpeed * durationMin * 60
        // 左侧(逆时针侧)顶点
        val p1 = MapUtil.getPointByLen(center, distance, sDeg * PI / 180)
        // 风向反向顶点
        val p2 = MapUtil.getPointByLen(center, distance, windDir * PI / 180)
        // 右侧(顺时针侧)顶点
        val p3 = MapUtil.getPointByLen(center, distance, eDeg * PI / 180)
        val result = mutableListOf(center)
        var startDeg = sDeg
        while (startDeg < eDeg) {
            val p = MapUtil.getPointByLen(center, distance, startDeg * PI / 180)
            result.add(p)
            startDeg++
        }
        return listOf(center, p1, p2, p3)
        return result
//        // 左侧(逆时针侧)顶点
//        val p1 = MapUtil.getPointByLen(center, distance, sDeg * PI / 180)
//        // 风向反向顶点
//        val p2 = MapUtil.getPointByLen(center, distance, windDir * PI / 180)
//        // 右侧(顺时针侧)顶点
//        val p3 = MapUtil.getPointByLen(center, distance, eDeg * PI / 180)
//
//        return listOf(center, p1, p2, p3)
    }
}