feiyu02
2025-09-30 94fee0b511279679b43e210878d3d36e5a14384b
src/main/kotlin/com/flightfeather/uav/lightshare/service/DataAnalysisService.kt
@@ -1,14 +1,26 @@
package com.flightfeather.uav.lightshare.service
import com.flightfeather.uav.biz.dataanalysis.BaseExceptionResult
import com.flightfeather.uav.biz.dataanalysis.model.ExceptionResult
import com.flightfeather.uav.biz.report.MissionGridFusion
import com.flightfeather.uav.biz.report.MissionInventory
import com.flightfeather.uav.biz.report.MissionInventory.MissionDetail
import com.flightfeather.uav.biz.report.MissionRiskArea
import com.flightfeather.uav.biz.report.MissionSummary
import com.flightfeather.uav.biz.sourcetrace.model.BasePollutedMsg
import com.flightfeather.uav.biz.sourcetrace.model.PollutedClue
import com.flightfeather.uav.domain.entity.BaseRealTimeData
import com.flightfeather.uav.domain.entity.GridCell
import com.flightfeather.uav.domain.entity.Mission
import com.flightfeather.uav.domain.entity.SceneInfo
import com.flightfeather.uav.lightshare.bean.AreaVo
import com.flightfeather.uav.lightshare.bean.GridDataDetailMixVo
import com.flightfeather.uav.lightshare.eunm.PollutionDegree
import com.flightfeather.uav.socket.eunm.FactorType
import java.util.*
/**
 *
 * 数据分析服务接口
 * 提供走航任务数据的统计分析、污染溯源、任务清单生成等核心功能
 * 用于整合和处理无人机监测数据,生成各类分析报告和统计结果
 * @date 2025/5/8
 * @author feiyu02
 */
@@ -16,11 +28,95 @@
    /**
     * 污染溯源分析
     * @param missionCode 走航任务编号
     * 根据走航任务编号分析污染线索,识别异常数据点和潜在污染源
     * @param missionCode 走航任务编号,用于唯一标识特定的走航任务
     * @return 异常结果列表,每个元素包含异常类型、位置和详细信息
     */
    fun pollutionTrace(missionCode: String): List<ExceptionResult>
    /**
     * 获取历史污染溯源结果
     * 根据任务编号查询并返回历史污染溯源结果
     * @param missionCode 走航任务编号
     * @return 历史污染溯源结果的字符串表示(具体格式需参考实现类)
     */
    fun fetchHistory(missionCode: String): String
    fun missionSummary(startTime: Date, endTime: Date, areaVo: AreaVo): MissionSummary.Summary
    /**
     * 生成走航任务汇总统计
     * 按时间范围和区域统计走航任务的关键指标和总体情况
     * @param startTime 开始时间,用于筛选指定时间段内的任务
     * @param endTime 结束时间,用于筛选指定时间段内的任务
     * @param areaVo 区域参数,包含经纬度范围等地理信息
     * @return 汇总统计对象,包含任务总数、异常率、平均数据等指标
     */
    fun generateMissionSummary(startTime: Date, endTime: Date, areaVo: AreaVo): MissionSummary.Summary
    fun generateMissionSummary(missionCode: String): MissionSummary.Summary
    /**
     * 生成走航任务清单(按时间和区域筛选)
     * 根据时间范围和地理区域查询走航任务,并生成包含统计信息的任务列表
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param areaVo 区域参数
     * @return 走航任务信息列表,每个元素包含任务基本信息和统计数据
     */
    fun generateMissionList(startTime: Date, endTime: Date, areaVo: AreaVo): List<MissionInventory.MissionInfo>
    /**
     * 生成走航任务清单(直接处理任务线索)
     * 处理已有的走航任务和污染线索数据,生成任务清单
     * @param missionClues 包含走航任务和对应污染线索的Pair列表
     * @return 走航任务信息列表
     */
    fun generateMissionList(missionClues: List<Pair<Mission, List<PollutedClue?>>>): List<MissionInventory.MissionInfo>
    fun generateMissionInfo(
        keyScenes: List<SceneInfo?>,
        missionCluesData: List<Triple<Mission, List<PollutedClue?>, List<BaseRealTimeData>>>,
    ): List<MissionInventory.MissionInfo>
    /**
     * 获取走航任务详情(按时间和区域筛选)
     * 根据时间范围和区域查询并生成详细的任务报告,包含关键场景和数据统计
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param areaVo 区域参数
     * @return 任务详情列表,每个元素包含任务完整信息、场景数据和统计结果
     */
    fun generateMissionDetail(startTime: Date, endTime: Date, areaVo: AreaVo): List<MissionDetail>
    /**
     * 生成走航任务详情(按任务编号筛选)
     * 根据任务编号查询并生成详细的任务报告,包含任务完整信息、场景数据和统计结果
     * @param missionCode 任务编号,用于唯一标识特定的走航任务
     * @return 任务详情对象,包含任务完整信息、场景数据和统计结果
     */
    fun generateMissionDetail(missionCode: String): MissionDetail
    /**
     * 获取走航任务详情(直接处理任务数据)
     * 处理已有的任务、污染线索和实时数据,生成详细任务报告
     * @param keyScenes 关键场景列表,用于分析走航是否经过该区域
     * @param missionCluesData 包含任务、污染线索和实时数据的Triple列表
     * @return 任务详情列表
     */
    fun generateMissionDetail(keyScenes: List<SceneInfo?>, missionCluesData: List<Triple<Mission, List<PollutedClue?>, List<BaseRealTimeData>>>): List<MissionDetail>
    fun generateClueByRiskArea(startTime: Date, endTime: Date, areaVo: AreaVo): List<MissionRiskArea.ClueByArea>
    fun generateClueByRiskArea(missionCode: String): List<MissionRiskArea.ClueByArea>
    fun generateClueByRiskArea(keyScenes: List<SceneInfo?>, pollutedClues: List<PollutedClue?>): List<MissionRiskArea.ClueByArea>
    fun generateGridFusion(factorTypes: List<FactorType>, startTime: Date, endTime: Date, areaVo: AreaVo):
            List<MissionGridFusion.GridFusionByAQI>
    fun generateGridFusion(
        factorTypes: List<FactorType>,
        gridLen: Int,
        gridCells: List<GridCell>,
        dataList: List<Triple<PollutionDegree, List<MissionInventory.MissionInfo>, List<GridDataDetailMixVo>>>,
    ): List<MissionGridFusion.GridFusionByAQI>
}