| | |
| | | |
| | | 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 |
| | |
| | | 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 { |
| | | |
| | |
| | | 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() |
| | | } |
| | |
| | | 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) |
| | | } |
| | | } |