feiyu02
2024-06-27 e8f935a01d75c89ac591a80b9318eac2480e2dcd
src/main/kotlin/com/flightfeather/uav/biz/report/MissionReport.kt
@@ -1,5 +1,6 @@
package com.flightfeather.uav.biz.report
import com.flightfeather.uav.biz.FactorFilter
import com.flightfeather.uav.biz.dataanalysis.ExceptionAnalysisController
import com.flightfeather.uav.biz.dataanalysis.model.ExceptionResult
import com.flightfeather.uav.biz.dataprocess.PreData
@@ -54,7 +55,7 @@
         */
        fun addExceptions(exceptions: List<ExceptionResult>) {
            this.exceptions = exceptions.map {
                val byteArray = DataToChartUtil.lineToByteArray(FactorType.getByValue(it.factorId!!), it.dataList)
                val byteArray = DataToChartUtil.lineToByteArray(it.selectedFactor, it.dataList)
                val base64Str = ImageUtil.compressImage2(byteArray, 400, needPrefix = false)
                val c = ExceptionChart()
                BeanUtils.copyProperties(it, c)
@@ -91,13 +92,16 @@
    private val dateFormatter = DateTimeFormatter.ofPattern("HH:mm")
    // 获取异常分析结果
    fun exceptionAnalysis(mission: Mission): List<ExceptionResult> {
        return exceptionAnalysisController.run(mission)
    fun exceptionAnalysis(mission: Mission, factorFilter: FactorFilter): List<ExceptionResult> {
        return exceptionAnalysisController.run(mission, factorFilter)
    }
    // 计算均值和数据范围
    fun dataSummary(mission: Mission): List<Summary> {
        val preData = PreData(DateUtil.instance.dateToString(mission.startTime, DateUtil.DateStyle.YYYY_MM_DD))
    fun dataSummary(mission: Mission, factorFilter: FactorFilter): List<Summary> {
        val preData = PreData(
            DateUtil.instance.dateToString(mission.startTime, DateUtil.DateStyle.YYYY_MM_DD),
            factorFilter.mainList()
        )
        val realTimeData = realTimeDataRep.fetchData(mission)
        realTimeData.forEach {
            preData.add(it.toDataVo())
@@ -123,13 +127,13 @@
    // 生成参数
    // 根据报告模板生成对应报告
    fun execute(missionCode: String): String {
    fun execute(missionCode: String, factorFilter: FactorFilter): String {
        // 1. 任务合法性检查
        val mission = missionRep.findOne(missionCode) ?: throw  BizException("该任务编号不存在")
        // 2. 获取数据异常统计结果
        val exceptions = exceptionAnalysis(mission)
        // 2. 获取数据异常统计结果,根据
        val exceptions = exceptionAnalysis(mission, factorFilter)
        // 3. 获取均值、范围等统计数据
        val summaries = dataSummary(mission)
        val summaries = dataSummary(mission, factorFilter)
        // 4. 生成报告
        val fileName = "report/" + "${mission.districtName}走航监测报告-${
            DateUtil.instance.dateToString(mission.startTime, DateUtil.DateStyle.YYYY_MM_DD)