package com.flightfeather.uav.lightshare.service.impl
|
|
import com.flightfeather.uav.biz.FactorFilter
|
import com.flightfeather.uav.biz.dataanalysis.BaseExceptionResult
|
import com.flightfeather.uav.biz.dataanalysis.ExceptionAnalysisController
|
import com.flightfeather.uav.biz.dataanalysis.model.ExceptionResult
|
import com.flightfeather.uav.biz.sourcetrace.model.BasePollutedMsg
|
import com.flightfeather.uav.common.exception.BizException
|
import com.flightfeather.uav.common.location.LocationRoadNearby
|
import com.flightfeather.uav.common.utils.GsonUtils
|
import com.flightfeather.uav.domain.repository.MissionRep
|
import com.flightfeather.uav.domain.repository.RealTimeDataRep
|
import com.flightfeather.uav.domain.repository.SegmentInfoRep
|
import com.flightfeather.uav.domain.repository.SourceTraceRep
|
import com.flightfeather.uav.lightshare.service.DataAnalysisService
|
import com.flightfeather.uav.socket.eunm.FactorType
|
import org.springframework.stereotype.Service
|
|
/**
|
*
|
* @date 2025/5/8
|
* @author feiyu02
|
*/
|
@Service
|
class DataAnalysisServiceImpl(
|
private val missionRep: MissionRep,
|
private val realTimeDataRep: RealTimeDataRep,
|
private val locationRoadNearby: LocationRoadNearby,
|
private val segmentInfoRep: SegmentInfoRep,
|
private val sourceTraceRep: SourceTraceRep
|
) : DataAnalysisService {
|
|
override fun pollutionTrace(missionCode: String): List<ExceptionResult> {
|
val mission = missionRep.findOne(missionCode) ?: throw BizException("走航任务不存在")
|
|
val exceptionAnalysisController =
|
ExceptionAnalysisController(realTimeDataRep, locationRoadNearby, segmentInfoRep)
|
|
return exceptionAnalysisController.execute(
|
mission, FactorFilter.builder()
|
// .withMain(FactorType.NO2)
|
.withMain(FactorType.CO)
|
// .withMain(FactorType.H2S)
|
// .withMain(FactorType.SO2)
|
// .withMain(FactorType.O3)
|
.withMain(FactorType.PM25)
|
.withMain(FactorType.PM10)
|
.withMain(FactorType.VOC)
|
.create()
|
)
|
}
|
|
override fun fetchHistory(missionCode: String): String {
|
val mission = missionRep.findOne(missionCode) ?: throw BizException("走航任务不存在")
|
|
val res = sourceTraceRep.fetchList(mission.deviceCode, mission.startTime, mission.endTime)
|
return GsonUtils.gson.toJson(res)
|
}
|
}
|