| | |
| | | import com.flightfeather.uav.biz.satellite.SatelliteGridManage |
| | | import com.flightfeather.uav.common.exception.BizException |
| | | import com.flightfeather.uav.common.utils.FileExchange |
| | | import com.flightfeather.uav.domain.entity.GridAod |
| | | import com.flightfeather.uav.domain.entity.GridCell |
| | | import com.flightfeather.uav.domain.entity.GridData |
| | | import com.flightfeather.uav.domain.entity.GridDataDetail |
| | | import com.flightfeather.uav.domain.entity.GridGroup |
| | | import com.flightfeather.uav.domain.entity.* |
| | | import com.flightfeather.uav.domain.repository.SatelliteGridRep |
| | | import com.flightfeather.uav.lightshare.bean.AreaVo |
| | | import com.flightfeather.uav.lightshare.bean.DataHead |
| | | import com.flightfeather.uav.lightshare.bean.GridDataImportResult |
| | | import com.flightfeather.uav.lightshare.eunm.SatelliteDataType |
| | | import com.flightfeather.uav.lightshare.service.SatelliteTelemetryService |
| | | import com.github.pagehelper.PageHelper |
| | | import org.springframework.stereotype.Service |
| | |
| | | ) : SatelliteTelemetryService { |
| | | |
| | | private val fileExchange = FileExchange() |
| | | override fun fetchGridGroup(areaVo: AreaVo, page: Int?, perPage: Int?): Pair<DataHead, List<GridGroup?>> { |
| | | override fun fetchGridGroup(areaVo: AreaVo, type: String?, page: Int?, perPage: Int?): Pair<DataHead, |
| | | List<GridGroup?>> { |
| | | val pageInfo = PageHelper.startPage<GridGroup>(page ?: 1, perPage ?: 100) |
| | | val res = satelliteGridRep.fetchGridGroup(areaVo) |
| | | val res = satelliteGridRep.fetchGridGroup(areaVo, type) |
| | | return DataHead(pageInfo.pageNum, pageInfo.pages) to res |
| | | } |
| | | |
| | |
| | | return satelliteGridRep.fetchGridData(groupId, dataTime, type) |
| | | } |
| | | |
| | | override fun fetchGridAod(groupId: Int, dataTime: LocalDateTime?): List<GridAod?> { |
| | | return satelliteGridRep.fetchGridAod(groupId, dataTime) |
| | | } |
| | | |
| | | override fun fetchGridDataDetail(dataId: Int, groupId: Int?, cellId: Int?): List<GridDataDetail?> { |
| | | val res = satelliteGridRep.fetchGridDataDetail(dataId, groupId, cellId) |
| | | res.forEach { |
| | |
| | | } |
| | | } |
| | | return res |
| | | } |
| | | |
| | | @Transactional |
| | | override fun createGridDataAndDataDetail( |
| | | groupId: Int, |
| | | dataTime: LocalDateTime?, |
| | | gridDataDetail: List<GridDataDetail>, |
| | | ): Boolean { |
| | | // 保存拟合的卫星遥测数据 type始终为0 |
| | | val type = SatelliteDataType.Original.value |
| | | |
| | | // 查找是否有历史记录 |
| | | val gridData = satelliteGridRep.fetchGridData(groupId, dataTime, type) |
| | | // 无历史记录则创建数据索引GridData,之后再存入拟合的数据 |
| | | if (gridData.isEmpty()) { |
| | | val gridDataEntity = GridData() |
| | | gridDataEntity.groupId = groupId |
| | | gridDataEntity.dataTime = dataTime?.atZone(ZoneId.systemDefault())?.toInstant()?.toEpochMilli() |
| | | ?.let { Date(it) } |
| | | gridDataEntity.type = type.toByte() |
| | | satelliteGridRep.insertGridDataAndDetail(gridDataEntity, gridDataDetail) |
| | | } |
| | | // 更新历史数据 |
| | | else { |
| | | gridDataDetail.forEach { |
| | | it.dataId = gridData[0]?.id |
| | | it.groupId = gridData[0]?.groupId |
| | | } |
| | | satelliteGridRep.updatePM25Batch(gridDataDetail) |
| | | } |
| | | |
| | | return true |
| | | } |
| | | |
| | | @Transactional |
| | |
| | | |
| | | return cellList |
| | | } |
| | | |
| | | override fun fetchGridAod(groupId: Int, dataTime: LocalDateTime?): List<GridAod?> { |
| | | return satelliteGridRep.fetchGridAod(groupId, dataTime) |
| | | } |
| | | |
| | | override fun fetchGridAODDetail(aodId: Int, groupId: Int?, cellId: Int?): List<GridAodDetail?> { |
| | | return satelliteGridRep.fetchGridAodDetail(aodId, groupId, cellId) |
| | | } |
| | | } |