feiyu02
2025-03-07 db447bb757b51f8d03e62d6ae4f183b4608723ef
src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteDataCalculateServiceImpl.kt
@@ -138,11 +138,18 @@
        val mission = missionRep.findOne(missionCode) ?: throw BizException("任务不存在")
        val data = realTimeDataRep.fetchData(mission)
        val oldGridDataList = satelliteGridRep.fetchGridData(GridData().apply {
            this.groupId = groupId
            mixDataId = missionCode
        })
        if (oldGridDataList.isEmpty()) {
        // 创建融合数据索引对象
        val newGridData = GridData().apply {
            this.groupId = groupId
            dataTime = mission.startTime
            type = SatelliteDataType.Monitor.value.toByte()
                mixDataId = mission.missionCode
        }
        satelliteGridRep.insertGridData(newGridData)
@@ -154,5 +161,23 @@
        satelliteGridRep.insertGridDataDetail(gridDataDetailList)
        return gridDataDetailList
        } else {
            val oldGridData = oldGridDataList.first()
            val oldGridDataDetailList = satelliteGridRep.fetchGridDataDetail(oldGridData?.id, oldGridData?.groupId,
                null)
            // 查询网格单元格信息
            val gridCellList = satelliteGridRep.fetchGridCell(groupId)
            // 将走航数据和卫星网格进行融合计算
            val gridDataDetailList = SatelliteGridManage.dataFusion(data, oldGridData, gridCellList)
            // 将已有的数据id赋值给新的融合结果,两组结果均以根据cellId顺序排列,所以直接循环赋值
            gridDataDetailList.forEachIndexed { index, gridDataDetail ->
                gridDataDetail.id = oldGridDataDetailList[index]?.id
            }
            satelliteGridRep.updateGridDataDetail(gridDataDetailList)
            return gridDataDetailList
        }
    }
}