package com.flightfeather.uav.lightshare.service.impl
|
|
import com.flightfeather.uav.common.utils.GsonUtils
|
import com.flightfeather.uav.domain.entity.RealTimeData
|
import com.flightfeather.uav.domain.mapper.RealTimeDataMapper
|
import com.flightfeather.uav.lightshare.bean.BaseResponse
|
import com.flightfeather.uav.lightshare.bean.DataHead
|
import com.flightfeather.uav.lightshare.bean.DataVo
|
import com.flightfeather.uav.lightshare.service.RealTimeDataService
|
import com.flightfeather.uav.socket.bean.AirData
|
import com.github.pagehelper.PageHelper
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
import java.text.DateFormat
|
import java.text.SimpleDateFormat
|
|
@Service
|
class RealTimeDataServiceImpl(val realTimeDataMapper: RealTimeDataMapper) : RealTimeDataService {
|
|
private var dateFormatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
|
override fun getSecondData(deviceCode: String?, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseResponse<List<DataVo>> {
|
val _perPage = perPage ?: 60
|
val _page = page ?: 1
|
val sTime = startTime?.let { dateFormatter.parse(it) }
|
val eTime = endTime?.let { dateFormatter.parse(it) }
|
val pageInfo = PageHelper.startPage<RealTimeData>(_page, _perPage)
|
val result = mutableListOf<DataVo>()
|
realTimeDataMapper.selectByExample(Example(RealTimeData::class.java).apply {
|
createCriteria().apply {
|
deviceCode?.let { andEqualTo("deviceCode", it) }
|
sTime?.let { andGreaterThanOrEqualTo("dataTime", it) }
|
eTime?.let { andLessThanOrEqualTo("dataTime", it) }
|
}
|
orderBy("dataTime").desc()
|
}).forEach {
|
result.add(DataVo(
|
dateFormatter.format(it.dataTime),
|
it.deviceCode,
|
GsonUtils.parserJsonToArrayBeans(it.factors, AirData::class.java),
|
it.longitude.toDouble(), it.latitude.toDouble()
|
))
|
}
|
// result.reverse()
|
return BaseResponse(true, head = DataHead(pageInfo.pageNum, pageInfo.pages), data = result)
|
}
|
}
|