package com.objecteye.service.impl; import com.objecteye.entity.ViolateAlarmMsg; import com.objecteye.pojo.RabbitMQVehicle; import com.objecteye.service.ILocalTestService; import com.objecteye.utils.CompareDistance; import com.objecteye.utils.GlobalUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.util.List; import java.util.stream.Collectors; /** * 本次测试 * * @author officer */ @Component public class LocalTestServiceImpl implements ILocalTestService { @Autowired private MongoTemplate mongoTemplate; @Autowired private RedisTemplate redisTemplate; /** * 创造数据到redis */ @Override public void mongoToRedisVehicleFeature() { Query query = new Query(); query.fields().include("id"); query.fields().include("vehicle_fea_feature"); List rabbitMqVehicles = mongoTemplate.find(query, RabbitMQVehicle.class); for (RabbitMQVehicle rabbitMqVehicle : rabbitMqVehicles) { redisTemplate.opsForHash().put(GlobalUtil.VEHICLE_FEATURE, rabbitMqVehicle.getId(), rabbitMqVehicle.getVehicle_fea_feature()); double dbFea = new CompareDistance().getDistance(rabbitMqVehicle.getVehicle_fea_feature()); redisTemplate.opsForHash().put(GlobalUtil.VEHICLE_FEATURE_DISTANCE, rabbitMqVehicle.getId(), dbFea); } } /** * 删除多余数据 */ @Override public void deleteOldDataNotInRabbitMqVehicleButViolation() { Query rabbitMqVehicleQuery = new Query(); rabbitMqVehicleQuery.fields().include("id"); List rabbitMqVehicles = mongoTemplate.find(rabbitMqVehicleQuery, RabbitMQVehicle.class); List ids = rabbitMqVehicles.stream().map(RabbitMQVehicle::getId).collect(Collectors.toList()); Query violationQuery = new Query(Criteria.where("baseId").nin(ids)); mongoTemplate.remove(violationQuery, ViolateAlarmMsg.class); } }