1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.flightfeather.uav.lightshare.service
 
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.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
 */
interface DataAnalysisService {
 
    /**
     * 污染溯源分析
     * 根据走航任务编号分析污染线索,识别异常数据点和潜在污染源
     * @param missionCode 走航任务编号,用于唯一标识特定的走航任务
     * @return 异常结果列表,每个元素包含异常类型、位置和详细信息
     */
    fun pollutionTrace(missionCode: String): List<ExceptionResult>
 
    /**
     * 获取历史污染溯源结果
     * 根据任务编号查询并返回历史污染溯源结果
     * @param missionCode 走航任务编号
     * @return 历史污染溯源结果的字符串表示(具体格式需参考实现类)
     */
    fun fetchHistory(missionCode: String): String
 
    /**
     * 生成走航任务汇总统计
     * 按时间范围和区域统计走航任务的关键指标和总体情况
     * @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,granularity: String?): List<MissionDetail>
 
    /**
     * 生成走航任务详情(按任务编号筛选)
     * 根据任务编号查询并生成详细的任务报告,包含任务完整信息、场景数据和统计结果
     * @param missionCode 任务编号,用于唯一标识特定的走航任务
     * @param granularity 数据颗粒度,可选值为SECOND, MINUTE, HOUR, 默认MINUTE
     * @return 任务详情对象,包含任务完整信息、场景数据和统计结果
     */
    fun generateMissionDetail(missionCode: String, granularity: String?): MissionDetail
 
    /**
     * 获取走航任务详情(直接处理任务数据)
     * 处理已有的任务、污染线索和实时数据,生成详细任务报告
     * @param keyScenes 关键场景列表,用于分析走航是否经过该区域
     * @param missionCluesData 包含任务、污染线索和实时数据的Triple列表
     * @param granularity 数据颗粒度,可选值为SECOND, MINUTE, HOUR, 默认MINUTE
     * @return 任务详情列表
     */
    fun generateMissionDetail(
        keyScenes: List<SceneInfo?>,
        missionCluesData: List<Triple<Mission, List<PollutedClue?>, List<BaseRealTimeData>>>,
        granularity: String,
    ): 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>
}