| | |
| | | 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 |
| | | |
| | | } |
| | | } |