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 | 80 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 75 insertions(+), 5 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 592810c..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,19 +1,89 @@ package com.flightfeather.obd.lightshare.service.impl -import com.flightfeather.obd.lightshare.bean.ObdDataVo +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.ObdDataRepository +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 * Date: 2019/8/27 */ @Service -class ObdDataServiceImpl(val obdDataRepository: ObdDataRepository) : ObdDataService { +class ObdDataServiceImpl( + val obdDataRepository: ObdDataRepository, + val carLoginRepository: CarLoginRepository, + val carLogoutRepository: CarLogoutRepository, + val obdInfoRepository: ObdInfoRepository, + val dataStreamRepository: DataStreamRepository, + val vehicleRepository: VehicleRepository +) : ObdDataService { - override fun getDataByVinCode(vinCode: String, pageNum: Int?, pageSize: Int?): MutableList<ObdDataVo> { - return obdDataRepository.getDataByVinCode(vinCode, pageNum, pageSize) + override fun getDataByVinCode(vinCode: String, pageNum: Int?, pageSize: Int?): MutableList<ObdDataVo> + = obdDataRepository.getDataByVinCode(vinCode, pageNum, pageSize) + + override fun getLoginData(deviceCode: String, pageNum: Int?, pageSize: Int?, startTime: String?, endTime: String?): List<CarLoginVo> + = carLoginRepository.getLoginData(deviceCode, pageNum, pageSize, startTime, endTime) + + 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>{ + 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