VehicleDbServiceImpl.java 5.95 KB
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<SyVehicleDb> findAll() {
        return mongoTemplate.find(Query.query(Criteria.where("isDelete").is(0)), SyVehicleDb.class);
    }

    /**
     * 按分页查询
     */
    @Override
    public PageResult findPage(int pageNum, int pageSize) {
        List<SyVehicleDb> 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<String> ids) {
        for (String id : ids) {
            List<String> 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<SyVehicleDb> 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<Map<String, String>> findAllName() {
        List<Map<String, String>> list = new ArrayList<>();
        List<SyVehicleDb> syVehicleDbs = findAll();
        for (SyVehicleDb vehicleDb : syVehicleDbs) {
            Map<String, String> 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;
    }

}