package com.objecteye.service.impl; import cn.hutool.core.date.DateUtil; import com.objecteye.entity.PageResult; import com.objecteye.entity.SyVehicleDb; import com.objecteye.entity.UploadVehicleDbResult; import com.objecteye.service.DeployService; import com.objecteye.service.VehicleDbService; 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.mongodb.core.query.Update; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.*; /** * 服务实现层 * * @author Administrator */ @Service public class VehicleDbServiceImpl implements VehicleDbService { @Autowired private MongoTemplate mongoTemplate; @Autowired private RedisTemplate redisTemplate; @Autowired private DeployService deployService; /** * 查询全部 */ @Override public List findAll() { return mongoTemplate.find(Query.query(Criteria.where("isDelete").is(0)), SyVehicleDb.class); } /** * 按分页查询 */ @Override public PageResult findPage(int pageNum, int pageSize) { List result = mongoTemplate.find(Query.query(Criteria.where("isDelete").is(0)) .limit(pageSize).skip((pageNum - 1) * pageSize), SyVehicleDb.class); long count = mongoTemplate.count(Query.query(Criteria.where("isDelete").is(0)), SyVehicleDb.class); return new PageResult<>((long) Math.ceil((double) count / pageSize), result); } /** * 增加 * * @return */ @Override public String add(SyVehicleDb vehicleDb) { String strDate = DateUtil.now(); vehicleDb.setCount(0); vehicleDb.setCreateDate(strDate); vehicleDb.setUpdateDate(strDate); vehicleDb.setIsDelete(0); vehicleDb = mongoTemplate.insert(vehicleDb); return vehicleDb.getId(); } /** * 修改 */ @Override public void update(SyVehicleDb vehicleDb) { String now = DateUtil.now(); vehicleDb.setUpdateDate(now); mongoTemplate.save(vehicleDb); } /** * 根据ID获取实体 * * @param id * @return */ @Override public SyVehicleDb findOne(String id) { return mongoTemplate.findOne(Query.query(Criteria.where("id").is(id)), SyVehicleDb.class); } /** * 批量删除 * * @param ids */ @Override public void delete(List ids) { for (String id : ids) { List deployList = deployService.getDeployListByLibAndDeployType(id, 2); UploadVehicleDbResult uploadVehicleDbResult = mongoTemplate.findOne(Query.query(new Criteria("id").is(id)), UploadVehicleDbResult.class); if (uploadVehicleDbResult != null) { String id1 = uploadVehicleDbResult.getId(); String plateNum = uploadVehicleDbResult.getPlateNum(); float plateScore = uploadVehicleDbResult.getPlateScore(); if (plateScore > 0.9) { redisTemplate.opsForHash().delete("vehicleId", plateNum); } redisTemplate.opsForHash().delete("vehicleId", id1); redisTemplate.opsForHash().delete("vehicleUrl", id1); mongoTemplate.remove(uploadVehicleDbResult); if (deployList != null && deployList.size() > 0) { int size = deployList.size(); for (int i = 0; i < size; i++) { String deployId = deployList.get(i); String[] deploy = {deployId}; deployService.delete(Arrays.asList(deploy)); } } } mongoTemplate.updateMulti(Query.query(Criteria.where("id").is(id)), Update.update("isDelete", 1), SyVehicleDb.class); } } @Override public PageResult findPage(SyVehicleDb vehicleDb, int pageNum, int pageSize) { Criteria criteria = new Criteria(); if (vehicleDb != null) { if (vehicleDb.getVehicleName() != null && vehicleDb.getVehicleName().length() > 0) { criteria.and("vehicleName").regex(".*" + vehicleDb.getVehicleName() + ".*"); } if (vehicleDb.getCreateDate() != null && vehicleDb.getCreateDate().length() > 0) { criteria.and("createDate").regex(".*" + vehicleDb.getCreateDate() + ".*"); } if (vehicleDb.getUpdateDate() != null && vehicleDb.getUpdateDate().length() > 0) { criteria.and("updateDate").regex(".*" + vehicleDb.getUpdateDate() + ".*"); } if (vehicleDb.getDescription() != null && vehicleDb.getDescription().length() > 0) { criteria.and("description").regex(".*" + vehicleDb.getDescription() + ".*"); } } List resultList = mongoTemplate.find(Query.query(criteria) .limit(pageSize).skip((pageNum - 1) * pageSize), SyVehicleDb.class); long count = mongoTemplate.count(Query.query(criteria), SyVehicleDb.class); return new PageResult<>((long) Math.ceil((double) count / pageSize), resultList); } @Override public void updateCountById(SyVehicleDb feature) { mongoTemplate.save(feature); } @Override public List> findAllName() { List> list = new ArrayList<>(); List syVehicleDbs = findAll(); for (SyVehicleDb vehicleDb : syVehicleDbs) { Map map = new HashMap<>(16); String name = vehicleDb.getVehicleName(); String id = vehicleDb.getId(); map.put("value", id + ""); map.put("name", name); list.add(map); } return list; } }