package com.flightfeather.uav.domain.repository
|
|
import com.flightfeather.uav.domain.entity.Mission
|
import com.flightfeather.uav.domain.mapper.MissionMapper
|
import com.flightfeather.uav.lightshare.bean.AreaVo
|
import org.springframework.stereotype.Repository
|
import tk.mybatis.mapper.entity.Example
|
import java.util.*
|
|
@Repository
|
class MissionRep(
|
private val missionMapper: MissionMapper,
|
) {
|
|
/**
|
* 根据任务编码查询单个走航任务
|
* @param missionCode 任务编码(主键)
|
* @return 查询到的任务对象,若不存在则返回null
|
*/
|
fun findOne(missionCode:String?): Mission? {
|
return missionMapper.selectByPrimaryKey(missionCode)
|
}
|
|
/**
|
* 根据任务对象属性条件查询任务列表
|
* @param mission 包含查询条件的任务对象(如设备类型、区域等)
|
* @return 符合条件的任务列表
|
*/
|
fun findList(mission: Mission): List<Mission?> {
|
return missionMapper.select(mission)
|
}
|
|
/**
|
* 根据时间范围查询走航任务列表
|
* @param startTime 查询起始时间(包含)
|
* @param endTime 查询结束时间(包含)
|
* @return 符合时间条件的走航任务列表
|
*/
|
fun findByTimeRange(startTime: Date, endTime: Date): List<Mission?> {
|
// 使用tk.mybatis的Example构建查询条件
|
return missionMapper.selectByExample(Example(Mission::class.java).apply {
|
// 创建查询条件:startTime字段在指定时间范围内
|
createCriteria().andBetween("startTime", startTime, endTime)
|
// 过滤掉没有结束时间的任务(确保任务已完成)
|
.andIsNotNull("endTime")
|
})
|
}
|
|
/**
|
* 根据区域和时间范围查询有效走航任务列表
|
* 筛选指定行政区划内、特定时间段且已完成有效里程记录的走航任务
|
* @param areaVo 区域参数对象,包含省、市、区三级行政区划编码
|
* @param startTime 查询起始时间(包含)
|
* @param endTime 查询结束时间(包含)
|
* @return 符合条件的走航任务列表,若无可返回空列表
|
* @see AreaVo 区域参数数据结构
|
* @see Mission 走航任务实体类
|
*/
|
fun findByAreaAndTime(areaVo: AreaVo, startTime: Date, endTime: Date): List<Mission?> {
|
return missionMapper.selectByExample(Example(Mission::class.java).apply {
|
createCriteria().andBetween("startTime", startTime, endTime)
|
.andEqualTo("provinceCode", areaVo.provinceCode)
|
.andEqualTo("cityCode", areaVo.cityCode)
|
.andEqualTo("districtCode", areaVo.districtCode)
|
.andIsNotNull("kilometres")
|
.andNotEqualTo("kilometres", 0)
|
})
|
}
|
}
|