| | |
| | | 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) |
| | | |
| | |
| | | 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 |
| | | } |
| | | } |
| | | } |