From 1f356649ce536b19b903d6f3a533983d4b8222bc Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 25 十月 2019 18:16:39 +0800
Subject: [PATCH] 新增接口: 1. 获取所有设备的最新一条数据 新增数据库表: 1. 车辆信息表

---
 src/main/kotlin/com/flightfeather/obd/repository/impl/DataStreamDaoImpl.kt |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 109 insertions(+), 1 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/obd/repository/impl/DataStreamDaoImpl.kt b/src/main/kotlin/com/flightfeather/obd/repository/impl/DataStreamDaoImpl.kt
index 12d1583..9fcd476 100644
--- a/src/main/kotlin/com/flightfeather/obd/repository/impl/DataStreamDaoImpl.kt
+++ b/src/main/kotlin/com/flightfeather/obd/repository/impl/DataStreamDaoImpl.kt
@@ -2,20 +2,27 @@
 
 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 com.flightfeather.obd.socket.bean.EngineDataStream
 import com.flightfeather.obd.socket.bean.ObdPackageData
 import com.flightfeather.obd.socket.bean.ReplacementData
 import com.flightfeather.obd.socket.bean.SupplementDataStream
 import com.flightfeather.obd.socket.eunm.ObdCommandUnit
+import com.github.pagehelper.PageHelper
+import org.springframework.beans.BeanUtils
 import org.springframework.stereotype.Repository
+import tk.mybatis.mapper.entity.Example
+import java.text.SimpleDateFormat
 
 /**
  * @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 {
 
@@ -73,4 +80,105 @@
         }
     }
 
+    override fun getDataStream(deviceCode: String, pageNum: Int?, pageSize: Int?, startTime: String?, endTime: String?): List<DataStreamVo> {
+        val sf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+        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()
+            }
+        }
+
+        //鍒嗛〉
+        val offset = (pageSize?.times(pageNum?.minus(1) ?: 0)) ?: 0
+        PageHelper.offsetPage<DataStream>(offset, pageSize ?: 10)
+        val result = dataStreamMapper.selectByExample(example)
+
+        val resultList = mutableListOf<DataStreamVo>()
+        result.forEach {
+            val vo = DataStreamVo()
+            BeanUtils.copyProperties(it, vo)
+            resultList.add(vo)
+        }
+
+        return resultList
+    }
+
+    override fun getDataStreamCount(deviceCode: String, startTime: String?, endTime: String?): Int {
+        val sf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+        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 getCoordinate(deviceCode: String): LatLngVo {
+        val example = Example(DataStream::class.java).apply {
+            createCriteria().andEqualTo("obdDeviceCode", deviceCode).run {
+                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
+    }
+
+    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)
+        return dataStreamMapper.selectByExample(example).takeIf { it.isNotEmpty() }?.get(0)
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3