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/lightshare/service/impl/ObdDataServiceImpl.kt |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/obd/lightshare/service/impl/ObdDataServiceImpl.kt b/src/main/kotlin/com/flightfeather/obd/lightshare/service/impl/ObdDataServiceImpl.kt
index afe9da7..f843a60 100644
--- a/src/main/kotlin/com/flightfeather/obd/lightshare/service/impl/ObdDataServiceImpl.kt
+++ b/src/main/kotlin/com/flightfeather/obd/lightshare/service/impl/ObdDataServiceImpl.kt
@@ -1,9 +1,14 @@
 package com.flightfeather.obd.lightshare.service.impl
 
 import com.flightfeather.obd.lightshare.bean.*
+import com.flightfeather.obd.lightshare.eunm.CarStatus
 import com.flightfeather.obd.lightshare.service.ObdDataService
 import com.flightfeather.obd.repository.*
+import org.springframework.beans.BeanUtils
 import org.springframework.stereotype.Service
+import java.time.LocalDateTime
+import java.time.ZoneId
+import java.util.*
 
 /**
  * @author riku
@@ -15,7 +20,8 @@
         val carLoginRepository: CarLoginRepository,
         val carLogoutRepository: CarLogoutRepository,
         val obdInfoRepository: ObdInfoRepository,
-        val dataStreamRepository: DataStreamRepository
+        val dataStreamRepository: DataStreamRepository,
+        val vehicleRepository: VehicleRepository
 ) : ObdDataService {
 
     override fun getDataByVinCode(vinCode: String, pageNum: Int?, pageSize: Int?): MutableList<ObdDataVo>
@@ -27,12 +33,57 @@
     override fun getLogoutData(deviceCode: String, pageNum: Int?, pageSize: Int?, startTime: String?, endTime: String?): List<CarLogoutVo>
             = carLogoutRepository.getLogoutData(deviceCode, pageNum, pageSize, startTime, endTime)
 
-    override fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfoVo>
-            = obdInfoRepository.getObdInfo(deviceCode, pageNum, pageSize)
+    override fun getObdInfo(deviceCode: String, pageNum: Int?, pageSize: Int?): List<ObdInfoVo>{
+        val resultList = mutableListOf<ObdInfoVo>()
+        obdInfoRepository.getObdInfo(deviceCode, pageNum, pageSize).forEach {
+            val vo = ObdInfoVo()
+            BeanUtils.copyProperties(it, vo)
+            resultList.add(vo)
+        }
+        return resultList
+    }
 
     override fun getDataStream(deviceCode: String, pageNum: Int?, pageSize: Int?, startTime: String?, endTime: String?): List<DataStreamVo>
             = dataStreamRepository.getDataStream(deviceCode, pageNum, pageSize, startTime, endTime)
 
+    override fun getDataStreamCount(deviceCode: String, startTime: String?, endTime: String?): Int
+            = dataStreamRepository.getDataStreamCount(deviceCode, startTime, endTime)
+
     override fun getCoordinate(deviceCode: String): LatLngVo
             = dataStreamRepository.getCoordinate(deviceCode)
+
+    override fun getLatestCoordinate(pageNum: Int?, pageSize: Int?): List<LatLngVo> {
+        val resultList = mutableListOf<LatLngVo>()
+
+        val now = LocalDateTime.now()
+
+        vehicleRepository.getVehicleInfo(pageNum, pageSize).forEach { vehicleInfo ->
+            val dataStream = dataStreamRepository.getLatestDataStream(vehicleInfo.obdDeviceCode)
+            val obdInfo = obdInfoRepository.getObdInfo(vehicleInfo.obdDeviceCode, 1, 1).takeIf { it.isNotEmpty() }?.get(0)
+
+            //鑾峰彇鏁版嵁閲囨牱鏃堕棿锛屽鏋滀负绌猴紝鍒欏彇褰撳墠鏃堕棿鐨勫墠24灏忔椂
+            val dataTime = dataStream?.obdDataTime?.toInstant()?.atZone(ZoneId.systemDefault())?.toLocalDateTime()
+                    ?: LocalDateTime.now().minusDays(1)
+
+            resultList.add(LatLngVo().apply {
+                deviceCode = vehicleInfo.obdDeviceCode
+                vin = obdInfo?.obdVin
+                license = vehicleInfo.obdLicencePlate
+                obdDataTime = dataStream?.obdDataTime
+                carType = vehicleInfo.obdVehicleType
+                //閲囨牱鏃堕棿鍜屽綋鍓嶆椂闂寸浉宸秴杩�10鍒嗛挓璁や负璁惧澶勪簬绂荤嚎鐘舵��
+                //todo 2019.10.25 鍏朵綑涓ょ杞﹁締鐘舵�侊紝鍚庣画闇�澶勭悊
+                status = if (now.minusMinutes(10).isAfter(dataTime)) {
+                    CarStatus.OffLine.value
+                } else {
+                    CarStatus.OnLine.value
+                }
+                lat = dataStream?.obdLat
+                lng = dataStream?.obdLong
+            })
+        }
+
+        return resultList
+
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3