riku
2019-10-30 57b3b0851b2144073522a43640c2acc9452e1719
src/main/kotlin/com/flightfeather/obd/repository/impl/DataStreamDaoImpl.kt
@@ -2,6 +2,7 @@
import com.flightfeather.obd.domain.entity.DataStream
import com.flightfeather.obd.domain.mapper.DataStreamMapper
import com.flightfeather.obd.domain.mapper.VehicleInfoMapper
import com.flightfeather.obd.lightshare.bean.DataStreamVo
import com.flightfeather.obd.lightshare.bean.LatLngVo
import com.flightfeather.obd.repository.DataStreamRepository
@@ -15,13 +16,14 @@
import org.springframework.stereotype.Repository
import tk.mybatis.mapper.entity.Example
import java.text.SimpleDateFormat
import java.util.*
/**
 * @author riku
 * Date: 2019/9/17
 */
@Repository
class DataStreamDaoImpl(val dataStreamMapper: DataStreamMapper): DataStreamRepository {
class DataStreamDaoImpl(val dataStreamMapper: DataStreamMapper, val vehicleInfoMapper: VehicleInfoMapper): DataStreamRepository {
    override fun saveDataStream(packageData: ObdPackageData): Boolean {
@@ -84,12 +86,20 @@
        val example = Example(DataStream::class.java).apply {
            createCriteria().andEqualTo("obdDeviceCode", deviceCode).run {
                startTime?.let {
                    val st = sf.parse(startTime)
                    andGreaterThanOrEqualTo("obdDataTime", st)
                    try {
                        val st = sf.parse(startTime)
                        andGreaterThanOrEqualTo("obdDataTime", st)
                    } catch (e: Throwable) {
                        e.printStackTrace()
                    }
                }
                endTime?.let {
                    val et = sf.parse(endTime)
                    andLessThanOrEqualTo("obdDataTime", et)
                    try {
                        val et = sf.parse(endTime)
                        andLessThanOrEqualTo("obdDataTime", et)
                    } catch (e: Throwable) {
                        e.printStackTrace()
                    }
                }
                orderBy("obdDataTime").desc()
            }
@@ -110,29 +120,40 @@
        return resultList
    }
    override fun getCoordinate(deviceCode: String): LatLngVo {
    override fun getDataStreamCount(deviceCode: String, startTime: String?, endTime: String?): Int {
        val sf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
        val example = Example(DataStream::class.java).apply {
            createCriteria().andEqualTo("obdDeviceCode", deviceCode).run {
                startTime?.let {
                    try {
                        val st = sf.parse(startTime)
                        andGreaterThanOrEqualTo("obdDataTime", st)
                    } catch (e: Throwable) {
                        e.printStackTrace()
                    }
                }
                endTime?.let {
                    try {
                        val et = sf.parse(endTime)
                        andLessThanOrEqualTo("obdDataTime", et)
                    } catch (e: Throwable) {
                        e.printStackTrace()
                    }
                }
                orderBy("obdDataTime").desc()
            }
        }
        return dataStreamMapper.selectCountByExample(example)
    }
    override fun getLatestDataStream(deviceCode: String): DataStream? {
        val example = Example(DataStream::class.java).apply {
            createCriteria().andEqualTo("obdDeviceCode", deviceCode)
            orderBy("obdDataTime").desc()
        }
        //获取最新的一个
        PageHelper.offsetPage<DataStream>(0, 1)
        val result = dataStreamMapper.selectByExample(example)
        val latLngVo = LatLngVo()
        if (result.isNotEmpty()) {
            result[0].let {
                latLngVo.apply {
                    this.deviceCode = it.obdDeviceCode
                    obdDataTime = it.obdDataTime
                    lat = it.obdLat
                    lng = it.obdLong
                }
            }
        }
        return latLngVo
        return dataStreamMapper.selectByExample(example).takeIf { it.isNotEmpty() }?.get(0)
    }
}