From 8cf331411ea79c0d83e00657ed1374b29b09f4d7 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期五, 28 三月 2025 17:46:30 +0800 Subject: [PATCH] 1. 新增走航卫星网格数据之间的融合功能 --- src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteDataCalculateServiceImpl.kt | 66 ++++++++++++++++++++++++++++---- 1 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteDataCalculateServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteDataCalculateServiceImpl.kt index c260d11..ece5805 100644 --- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteDataCalculateServiceImpl.kt +++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteDataCalculateServiceImpl.kt @@ -2,13 +2,13 @@ import com.flightfeather.uav.biz.satellite.GridGroupOption import com.flightfeather.uav.biz.satellite.SatelliteGridManage -import com.flightfeather.uav.biz.satellite.SatelliteGridUtil import com.flightfeather.uav.common.exception.BizException import com.flightfeather.uav.common.utils.TimeUtil import com.flightfeather.uav.domain.entity.* import com.flightfeather.uav.domain.repository.MissionRep import com.flightfeather.uav.domain.repository.RealTimeDataRep import com.flightfeather.uav.domain.repository.SatelliteGridRep +import com.flightfeather.uav.lightshare.bean.GridDataDetailMixVo import com.flightfeather.uav.lightshare.eunm.GridType import com.flightfeather.uav.lightshare.eunm.SatelliteDataType import com.flightfeather.uav.lightshare.service.SatelliteDataCalculateService @@ -108,14 +108,15 @@ } @Transactional - override fun splitData(groupId: Int, dataId:Int): List<GridDataDetail?> { + override fun splitData(groupId: Int, dataId: Int): List<GridDataDetail?> { // 妫�鏌ユ槸鍚︽槸缁嗗垎缃戞牸绫诲瀷 - val gridGroup = satelliteGridRep.fetchGridGroup(groupId) ?: throw BizException("璇ョ綉鏍肩粍涓嶅瓨鍦紝鏃犳硶杩涜缁嗗垎缃戞牸鏁版嵁鏄犲皠") + val gridGroup = + satelliteGridRep.fetchGridGroup(groupId) ?: throw BizException("璇ョ綉鏍肩粍涓嶅瓨鍦紝鏃犳硶杩涜缁嗗垎缃戞牸鏁版嵁鏄犲皠") if (gridGroup.type != GridType.Sub.name.lowercase()) throw BizException("璇ョ綉鏍肩粍涓嶆槸缁嗗垎缃戞牸绫诲瀷瀛樺湪锛屾棤娉曡繘琛岀粏鍒嗙綉鏍兼暟鎹槧灏�") val subGridCellList = satelliteGridRep.fetchGridCell(groupId) val originGridData = satelliteGridRep.fetchGridData(dataId) - val originGridDataDetailList = satelliteGridRep.fetchGridDataDetail(dataId, null, null) + val originGridDataDetailList = satelliteGridRep.fetchGridDataDetail(dataId) val subGridData = GridData().apply { this.groupId = groupId @@ -181,8 +182,7 @@ return gridDataDetailList } else { val oldGridData = oldGridDataList.first() - val oldGridDataDetailList = satelliteGridRep.fetchGridDataDetail(oldGridData?.id, oldGridData?.groupId, - null) + val oldGridDataDetailList = satelliteGridRep.fetchGridDataDetail(oldGridData?.id, oldGridData?.groupId) // 鏌ヨ缃戞牸鍗曞厓鏍间俊鎭� val gridCellList = satelliteGridRep.fetchGridCell(groupId) // 灏嗚蛋鑸暟鎹拰鍗槦缃戞牸杩涜铻嶅悎璁$畻 @@ -199,7 +199,55 @@ } } - override fun buildHeatmap(groupId: Int, gridDataDetailList: List<GridDataDetail>, searchLength:Int): List<GridDataDetail> { + override fun mixGridData(groupId: Int, dataIdList: List<Int>): List<GridDataDetailMixVo> { + // 鑾峰彇鎵�浣跨敤鐨勭綉鏍肩粍缃戞牸淇℃伅 + val gridCellList = satelliteGridRep.fetchGridCell(groupId) + + val gridDataDetailMap = mutableMapOf<Int?, MutableList<GridDataDetail>>() + + // 褰掗泦鎵�鏈夌浉鍚屽崟鍏冪綉鏍肩殑鏁版嵁 + dataIdList.forEach { id -> + satelliteGridRep.fetchGridDataDetail(id, groupId).forEach gdd@{ gdd -> + if (gdd == null) return@gdd + if (!gridDataDetailMap.containsKey(gdd.cellId)) { + gridDataDetailMap[gdd.cellId] = mutableListOf() + } + gridDataDetailMap[gdd.cellId]?.add(gdd) + } + } + + // 灏嗘墍鏈夌粨鏋滄牸寮忓寲锛屽悓鏃堕噸鍙犵綉鏍艰繘琛岀洃娴嬫暟鎹潎鍊艰绠� + val result = mutableListOf<GridDataDetailMixVo>() + gridDataDetailMap.forEach { (_, v) -> + val target = GridDataDetailMixVo() + if (v.size == 1) { + BeanUtils.copyProperties(v[0], target) + } else { + BeanUtils.copyProperties(v.avg(), target) + target.mixData = true + target.originDataList = v + } + target.apply { + this.dataId = v.first().dataId + this.groupId = v.first().groupId + this.cellId = v.first().cellId + } + result.add(target) + } + result.sortBy { it.pm25 } + result.forEachIndexed { index, d -> + d.rank = index + 1 + } + result.sortBy { it.cellId } + + return result + } + + override fun buildHeatmap( + groupId: Int, + gridDataDetailList: List<GridDataDetail>, + searchLength: Int, + ): List<GridDataDetail> { val gridCellList = satelliteGridRep.fetchGridCell(groupId) val originCellIdList = gridDataDetailList.map { it.cellId } // Fixme 2025.3.24: 姝ゅ鏍规嵁鐜版湁鐨勭綉鏍间俊鎭璁℃柟寮忥紝浣跨敤涓存椂鐨勫弬鏁帮紝鍚庣画灏嗙綉鏍奸�氳繃浜岀淮鍧愭爣褰㈠紡琛ㄧず锛屾澶勫弬鏁板幓闄� @@ -208,8 +256,8 @@ val resMap = mutableMapOf<Int, MutableList<GridDataDetail>>() // 寰幆璁$畻姣忎釜缃戞牸鐨勫懆杈规墿鏁g綉鏍肩粨鏋� - gridDataDetailList.forEach {gdd -> - SatelliteGridManage.heatMap(gdd, gridCellList, option, searchLength).forEach {r -> + gridDataDetailList.forEach { gdd -> + SatelliteGridManage.heatMap(gdd, gridCellList, option, searchLength).forEach { r -> if (!originCellIdList.contains(r.cellId)) { if (!resMap.containsKey(r.cellId)) { resMap[r.cellId] = mutableListOf() -- Gitblit v1.9.3