feiyu02
2025-02-21 dacef58ee7c44dffdd40cb646435c2993ad7a217
src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImpl.kt
@@ -1,6 +1,7 @@
package com.flightfeather.uav.lightshare.service.impl
import com.flightfeather.uav.biz.satellite.SatelliteDataMix
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
@@ -43,6 +44,10 @@
        return DataHead(pageInfo.pageNum, pageInfo.pages) to res
    }
    override fun deleteGridGroup(groupId: Int) {
        satelliteGridRep.deleteGridGroup(groupId)
    }
    override fun fetchGridCell(groupId: Int): List<GridCell?> {
        return satelliteGridRep.fetchGridCell(groupId)
    }
@@ -71,7 +76,7 @@
        // 1. 根据数据主键id数组,查询该组合下是否已有数据融合记录
        val exist = satelliteGridRep.fetchGridData(GridData().apply {
            type = 1
            mixDataId = dataIdList.joinToString(",")
            mixDataId = dataIdList.sorted().joinToString(",")
        })
        // 2. 若融合数据已存在,直接返回
        return exist.ifEmpty {
@@ -204,4 +209,33 @@
        }
        return true
    }
    override fun calGridVertex(groupId: Int): List<GridCell?> {
        val cellList = satelliteGridRep.fetchGridCell(groupId)
        val vertexList = SatelliteGridManage.calGridVertex(cellList.map {
            if (it?.longitude == null || it.latitude == null) {
                throw BizException("卫星遥测网格计算顶点坐标点失败,存在中心点坐标为空的情况")
            }
            it.longitude?.toDouble()!! to it.latitude?.toDouble()!!
        })
        cellList.forEachIndexed { i, c ->
            val v = vertexList[i]
            c?.point1Lon = v.point1Lon.toBigDecimal()
            c?.point1Lat = v.point1Lat.toBigDecimal()
            c?.point2Lon = v.point2Lon.toBigDecimal()
            c?.point2Lat = v.point2Lat.toBigDecimal()
            c?.point3Lon = v.point3Lon.toBigDecimal()
            c?.point3Lat = v.point3Lat.toBigDecimal()
            c?.point4Lon = v.point4Lon.toBigDecimal()
            c?.point4Lat = v.point4Lat.toBigDecimal()
        }
        satelliteGridRep.updateGridCellBatch(cellList)
        return cellList
    }
}