package com.flightfeather.uav.domain.repository
|
|
import com.flightfeather.uav.domain.entity.*
|
import com.flightfeather.uav.domain.mapper.GridAodDetailMapper
|
import com.flightfeather.uav.domain.mapper.GridAodMapper
|
import com.flightfeather.uav.domain.mapper.GridCellMapper
|
import com.flightfeather.uav.domain.mapper.GridDataDetailMapper
|
import com.flightfeather.uav.domain.mapper.GridDataMapper
|
import com.flightfeather.uav.domain.mapper.GridGroupMapper
|
import com.flightfeather.uav.lightshare.bean.AreaVo
|
import org.springframework.stereotype.Repository
|
import org.springframework.transaction.annotation.Transactional
|
import tk.mybatis.mapper.entity.Example
|
import java.time.LocalDateTime
|
|
/**
|
* 卫星网格遥测数据库相关操作
|
* @date 2024/12/11
|
* @author feiyu02
|
*/
|
@Repository
|
class SatelliteGridRep(
|
private val gridGroupMapper: GridGroupMapper,
|
private val gridCellMapper: GridCellMapper,
|
private val gridDataMapper: GridDataMapper,
|
private val gridDataDetailMapper: GridDataDetailMapper,
|
private val gridAodMapper: GridAodMapper,
|
private val gridAodDetailMapper: GridAodDetailMapper,
|
) {
|
|
fun fetchGridGroup(areaVo: AreaVo, type: String?): List<GridGroup?> {
|
return gridGroupMapper.selectByExample(Example(GridGroup::class.java).apply {
|
createCriteria()
|
.andEqualTo("provinceCode", areaVo.provinceCode).andEqualTo("provinceName", areaVo.provinceName)
|
.andEqualTo("cityCode", areaVo.cityCode).andEqualTo("cityName", areaVo.cityName)
|
.andEqualTo("districtCode", areaVo.districtCode).andEqualTo("districtName", areaVo.districtName)
|
.andEqualTo("townCode", areaVo.townCode).andEqualTo("townName", areaVo.townName)
|
.andEqualTo("type", type)
|
})
|
}
|
|
fun fetchGridGroup(id: Int): GridGroup? {
|
return gridGroupMapper.selectByPrimaryKey(id)
|
}
|
|
fun fetchGridGroup(gridGroup: GridGroup): List<GridGroup?> {
|
return gridGroupMapper.select(gridGroup)
|
}
|
|
fun insertGridGroup(gridGroup: GridGroup): Int {
|
return gridGroupMapper.insert(gridGroup)
|
}
|
|
@Transactional
|
fun deleteGridGroup(groupId: Int) {
|
gridCellMapper.delete(GridCell().apply { this.groupId = groupId })
|
gridCellMapper.selectByExample(
|
Example(GridCell::class.java).apply { orderBy("id").desc() }
|
).takeIf { it.isNotEmpty() }?.get(0)?.id?.let { id ->
|
gridCellMapper.resetAutoIncrement(id + 1)
|
}
|
gridGroupMapper.deleteByPrimaryKey(groupId)
|
gridGroupMapper.selectByExample(
|
Example(GridGroup::class.java).apply { orderBy("id").desc() }
|
).takeIf { it.isNotEmpty() }?.get(0)?.id?.let { id ->
|
gridGroupMapper.resetAutoIncrement(id + 1)
|
}
|
}
|
|
/*****************************************************************/
|
|
fun fetchGridCell(groupId: Int): List<GridCell?> {
|
return gridCellMapper.selectByExample(Example(GridCell::class.java).apply {
|
createCriteria().andEqualTo("groupId", groupId)
|
orderBy("id")
|
})
|
}
|
|
fun insertGridCell(gridCellList: List<GridCell?>): Int {
|
return gridCellMapper.insertList(gridCellList)
|
}
|
|
/*****************************************************************/
|
|
fun fetchGridData(groupId: Int, dataTime: LocalDateTime?, type: Int?): List<GridData?> {
|
return gridDataMapper.selectByExample(Example(GridData::class.java).apply {
|
createCriteria().andEqualTo("groupId", groupId)
|
.andEqualTo("dataTime", dataTime)
|
.andEqualTo("type", type)
|
})
|
}
|
|
fun fetchGridData(gridData: GridData): List<GridData?> {
|
return gridDataMapper.select(gridData)
|
}
|
|
fun fetchGridData(id: Int): GridData? {
|
return gridDataMapper.selectByPrimaryKey(id)
|
}
|
|
fun insertGridData(gridData: GridData): Int {
|
return gridDataMapper.insert(gridData)
|
}
|
|
fun insertGridDataDetail(gridDataDetails: List<GridDataDetail?>): Int {
|
return gridDataDetailMapper.insertList(gridDataDetails)
|
}
|
|
fun updateGridDataDetail(gridDataDetails: List<GridDataDetail?>): Int {
|
var res = 0
|
gridDataDetails.forEach {
|
res += gridDataDetailMapper.updateByPrimaryKey(it)
|
}
|
return res
|
}
|
|
fun fetchGridDataDetail(dataId: Int?, groupId: Int?, cellId: Int?): List<GridDataDetail?> {
|
return gridDataDetailMapper.selectByExample(Example(GridDataDetail::class.java).apply {
|
createCriteria().andEqualTo("dataId", dataId)
|
.andEqualTo("groupId", groupId)
|
.andEqualTo("cellId", cellId)
|
orderBy("cellId")
|
})
|
}
|
|
fun insertGridDataAndDetail(data: GridData, gridDataDetails: List<GridDataDetail>) {
|
gridDataMapper.insert(data)
|
gridDataDetails.forEach {
|
it.dataId = data.id
|
it.groupId = data.groupId
|
}
|
gridDataDetailMapper.insertList(gridDataDetails)
|
}
|
|
fun updatePM25Batch(gridDataDetails: List<GridDataDetail>) {
|
gridDataDetailMapper.updatePM25Batch(gridDataDetails)
|
}
|
|
/*****************************************************************/
|
|
// aod 相关操作
|
fun fetchGridAod(groupId: Int, dataTime: LocalDateTime?): List<GridAod?> {
|
return gridAodMapper.selectByExample(Example(GridAod::class.java).apply {
|
createCriteria().andEqualTo("groupId", groupId)
|
.andEqualTo("dataTime", dataTime)
|
})
|
}
|
|
fun fetchGridAodDetail(aodId: Int, groupId: Int?, cellId: Int?): List<GridAodDetail?> {
|
return gridAodDetailMapper.selectByExample(Example(GridAodDetail::class.java).apply {
|
createCriteria().andEqualTo("aodId", aodId)
|
.andEqualTo("groupId", groupId)
|
.andEqualTo("cellId", cellId)
|
orderBy("cellId")
|
})
|
}
|
|
fun insertGridAodAndDetail(aod: GridAod, gridAodDetails: List<GridAodDetail>) {
|
gridAodMapper.insert(aod)
|
gridAodDetails.forEach {
|
it.aodId = aod.id
|
it.groupId = aod.groupId
|
}
|
gridAodDetailMapper.insertList(gridAodDetails)
|
}
|
|
fun updateGridAodBatch(gridDataDetails: List<GridAodDetail>) {
|
gridDataDetails.forEach {
|
gridAodDetailMapper.updateByExample(it, Example(GridAodDetail::class.java).apply {
|
createCriteria().andEqualTo("aodId", it.aodId)
|
.andEqualTo("groupId", it.groupId)
|
.andEqualTo("cellId", it.cellId)
|
})
|
}
|
}
|
|
@Transactional
|
fun updateGridCellBatch(gridCellList: List<GridCell?>) {
|
gridCellList.forEach { gridCellMapper.updateByPrimaryKey(it) }
|
}
|
|
}
|