package com.ssi.dcvp; import com.ssi.entity.VmsVehicle; import com.ssi.model.RedisDataModel; import com.ssi.utils.VehicleDataUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class DcvpService { @Autowired private RedisDataModel redisDataModel; @Autowired private VehicleDataUtil vehicleDataUtil; @Value("${ivccs.vehicle.latestData.redis.prefix:ivccs:vms:vehicle:latest}") private String latestRedisKeyPrefix; @Value("${vehicle.latestData.redis.postfix:harbor_D00A}") private String realPostfix; public List vehicleRealStatus(List list) { if (!CollectionUtils.isEmpty(list)) { List dcvpVehicleStatusList = list.stream().map(vmsVehicle -> { DcvpVehicleStatus dcvpVehicleStatus = new DcvpVehicleStatus(); dcvpVehicleStatus.setVin(vmsVehicle.getVin()); Map realMap = redisDataModel.getJson2Map( String.format("%s:%s-%s", latestRedisKeyPrefix, vmsVehicle.getVin(), realPostfix)); if (realMap != null) { Integer onlineStatus = vehicleDataUtil.checkOnline( realMap.get("state") == null ? 0 : (Integer) realMap.get("state") , (Long) realMap.get("collectTime")); dcvpVehicleStatus.setOnlineStatus(onlineStatus); Double latitude = Double.valueOf(realMap.get("latitude").toString()); Double longitude = Double.valueOf(realMap.get("longitude").toString()); dcvpVehicleStatus.setLongitude(longitude); dcvpVehicleStatus.setLatitude(latitude); } return dcvpVehicleStatus; }).collect(Collectors.toList()); return dcvpVehicleStatusList; } return null; } }