EquipmentServiceImpl.java 12.4 KB
package com.objecteye.service.impl;

import cn.hutool.core.date.DateUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.objecteye.entity.*;
import com.objecteye.mapper.SyAreaEquipmentMapper;
import com.objecteye.mapper.SyEquipmentMapper;
import com.objecteye.service.DeployService;
import com.objecteye.service.EquipmentService;
import com.objecteye.service.IVehicleViolationsService;
import com.objecteye.utils.GlobalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

/**
 * 服务实现层
 *
 * @author Administrator
 */
@Service
public class EquipmentServiceImpl implements EquipmentService {

    @Autowired
    private SyEquipmentMapper equipmentMapper;
    @Autowired
    private SyAreaEquipmentMapper syAreaEquipmentMapper;
    @Autowired
    private DeployService deployService;
    @Autowired
    private IVehicleViolationsService vehicleViolationsService;


    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 查询全部
     */
    @Override
    public List<SyEquipment> findAll() {

        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);
        List<SyEquipment> syEquipments = equipmentMapper.selectByExample(example);

        return syEquipments;
    }

    /**
     * 查询全部id
     */
    @Override
    public List<Integer> findAllId() {
        List<SyEquipment> all = findAll();
        ArrayList<Integer> list = new ArrayList<>();
        if (all != null && all.size() > 0) {
            int size = all.size();
            for (int i = 0; i < size; i++) {
                Integer id = all.get(i).getId();
                list.add(id);
            }
        }
        return list;
    }


    /**
     * 按分页查询
     */
    @Override
    public PageResult findPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);
        Page<SyEquipment> page = (Page<SyEquipment>) equipmentMapper.selectByExample(example);
        return new PageResult(page.getPages(), page.getResult());
    }

    /**
     * 增加
     */
    @Override
    public int add(SyEquipment equipment) {
        String formatDate = DateUtil.now();
        equipment.setCreateDate(formatDate);
        equipment.setUpdateDate(formatDate);
        equipment.setIsDelete(0);
        equipment.setStatus(0);
        int insert = equipmentMapper.insertSelective(equipment);
        if (insert != 0) {
            SyAreaEquipment syAreaEquipment = new SyAreaEquipment();
            syAreaEquipment.setIsEquipment(1);
            syAreaEquipment.setName(equipment.getEquipmentName());
            syAreaEquipment.setTypeId(equipment.getId());
            syAreaEquipment.setParentId(equipment.getAid());
            syAreaEquipmentMapper.insert(syAreaEquipment);
            Integer id1 = equipment.getId();
            redisTemplate.opsForHash().put(GlobalUtil.EQUIPMENTIPANDID, equipment.getEquipmentIp(), id1);
        }
        return insert;
    }

    /**
     * 修改
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int update(SyEquipment equipment) {

        String now = DateUtil.now();
        equipment.setUpdateDate(now);

        SyEquipment equipment1 = findByName(equipment.getEquipmentName());
        SyEquipment equipment2 = findOne(equipment.getId());
        if (equipment1 != null) {
            if (equipment.getEquipmentName().equals(equipment2.getEquipmentName())) {
                return equipmentMapper.updateByPrimaryKeySelective(equipment);
            } else {
                return 0;
            }
        } else {
            //同时更新区域设备树信息
            SyAreaEquipmentExample syAreaEquipmentExample = new SyAreaEquipmentExample();
            SyAreaEquipmentExample.Criteria criteria = syAreaEquipmentExample.createCriteria();
            criteria.andTypeIdEqualTo(equipment.getId());
            SyAreaEquipment sy = new SyAreaEquipment();
            sy.setName(equipment.getEquipmentName());
            syAreaEquipmentMapper.updateByExampleSelective(sy, syAreaEquipmentExample);
            return equipmentMapper.updateByPrimaryKeySelective(equipment);

        }
    }

    /**
     * 根据ID获取实体
     *
     * @param id
     * @return
     */
    @Override
    public SyEquipment findOne(int id) {
        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);
        criteria.andIdEqualTo(id);
        List<SyEquipment> syEquipments = equipmentMapper.selectByExample(example);
        if (null == syEquipments || syEquipments.size() == 0) {
            return null;
        }
        return syEquipments.get(0);
    }

    @Override
    public SyEquipment findByIp(String ip) {
        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);
        criteria.andEquipmentIpEqualTo(ip);
        List<SyEquipment> syEquipments = equipmentMapper.selectByExample(example);
        if (null == syEquipments || syEquipments.size() == 0) {
            return null;
        }
        return syEquipments.get(0);
    }

    @Override
    public SyEquipment findByName(String name) {
        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);
        criteria.andEquipmentNameEqualTo(name);
        List<SyEquipment> syEquipments = equipmentMapper.selectByExample(example);
        if (null == syEquipments || syEquipments.size() == 0) {
            return null;
        }
        return syEquipments.get(0);
    }


    @Override
    public SyEquipment findByPort(String port) {
        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);
        criteria.andEquipmentPortEqualTo(port);
        List<SyEquipment> syEquipments = equipmentMapper.selectByExample(example);
        if (null == syEquipments || syEquipments.size() == 0) {
            return null;
        }
        return syEquipments.get(0);
    }


    /**
     * 批量删除
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delete(int[] ids) {
        for (int id : ids) {

            SyEquipment syEquipment = equipmentMapper.selectByPrimaryKey(id);
            syEquipment.setIsDelete(1);
            equipmentMapper.deleteByPrimaryKey(id);
            SyAreaEquipmentExample example = new SyAreaEquipmentExample();
            SyAreaEquipmentExample.Criteria criteria = example.createCriteria();
            criteria.andTypeIdEqualTo(id);
            syAreaEquipmentMapper.deleteByExample(example);
            // 布控预警删除
            if (redisTemplate.opsForHash().hasKey(GlobalUtil.IPWITHDEPLOYLIST, id)) {
                List<Integer> integers = (List<Integer>) redisTemplate.opsForHash().get(GlobalUtil.IPWITHDEPLOYLIST, id);
                int size = integers.size();
                for (int i = 0; i < size; i++) {
                    int[] deployId = {integers.get(i)};
                    deployService.delete(deployId);
                }
            }
            // 违规删除
            if (redisTemplate.opsForHash().hasKey(GlobalUtil.FORBIDDEN_TASK, id)) {
                List<SyVehicleForbidenTask> syVehicleForbidenTasks = (List<SyVehicleForbidenTask>) redisTemplate.opsForHash().get(GlobalUtil.FORBIDDEN_TASK, id);
                if (syVehicleForbidenTasks != null) {
                    vehicleViolationsService.forbiddenTaskDelete(syVehicleForbidenTasks.stream().map(syVehicleForbidenTask -> String.valueOf(syVehicleForbidenTask.getId())).toArray(String[]::new));
                }
            }
            redisTemplate.opsForHash().delete(GlobalUtil.EQUIPMENTIPANDID, syEquipment.getEquipmentIp());
        }
    }

    /**
     * 分页查询
     *
     * @param equipment
     * @param pageNum   当前页码
     * @param pageSize  每页记录数
     * @return
     */

    @Override
    public PageResult findPage(SyEquipment equipment, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);

        SyEquipmentExample example = new SyEquipmentExample();
        SyEquipmentExample.Criteria criteria = example.createCriteria();
        criteria.andIsDeleteEqualTo(0);

        if (equipment != null) {
            if (equipment.getEquipmentName() != null && equipment.getEquipmentName().length() > 0) {
                criteria.andEquipmentNameLike("%" + equipment.getEquipmentName() + "%");
            }
            if (equipment.getEquipmentIp() != null && equipment.getEquipmentIp().length() > 0) {
                criteria.andEquipmentIpLike("%" + equipment.getEquipmentIp() + "%");
            }
            if (equipment.getRtspUrl() != null && equipment.getRtspUrl().length() > 0) {
                criteria.andRtspUrlLike("%" + equipment.getRtspUrl() + "%");
            }
            if (equipment.getLongitude() != null && equipment.getLongitude().length() > 0) {
                criteria.andLongitudeLike("%" + equipment.getLongitude() + "%");
            }
            if (equipment.getLatitude() != null && equipment.getLatitude().length() > 0) {
                criteria.andLatitudeLike("%" + equipment.getLatitude() + "%");
            }
            if (equipment.getOrientation() != null && equipment.getOrientation().length() > 0) {
                criteria.andOrientationLike("%" + equipment.getOrientation() + "%");
            }
            if (equipment.getUsername() != null && equipment.getUsername().length() > 0) {
                criteria.andUsernameLike("%" + equipment.getUsername() + "%");
            }
            if (equipment.getPassword() != null && equipment.getPassword().length() > 0) {
                criteria.andPasswordLike("%" + equipment.getPassword() + "%");
            }
            if (equipment.getEquipmentPort() != null && equipment.getEquipmentPort().length() > 0) {
                criteria.andEquipmentPortLike("%" + equipment.getEquipmentPort() + "%");
            }
            if (equipment.getIntentPort() != null && equipment.getIntentPort().length() > 0) {
                criteria.andIntentPortLike("%" + equipment.getIntentPort() + "%");
            }
            if (equipment.getVendor() != null && equipment.getVendor().length() > 0) {
                criteria.andVendorLike("%" + equipment.getVendor() + "%");
            }
            if (equipment.getDescription() != null && equipment.getDescription().length() > 0) {
                criteria.andDescriptionLike("%" + equipment.getDescription() + "%");
            }
            if (equipment.getCreateDate() != null && equipment.getCreateDate().length() > 0) {
                criteria.andCreateDateLike("%" + equipment.getCreateDate() + "%");
            }
            if (equipment.getUpdateDate() != null && equipment.getUpdateDate().length() > 0) {
                criteria.andUpdateDateLike("%" + equipment.getUpdateDate() + "%");
            }
            if (equipment.getPlace() != null && equipment.getPlace().length() > 0) {
                criteria.andPlaceLike("%" + equipment.getPlace() + "%");
            }
        }
        Page<SyEquipment> page = (Page<SyEquipment>) equipmentMapper.selectByExample(example);
        return new PageResult(page.getTotal(), page.getResult());
    }

    @Override
    public int updateStatusById(int id) {
        SyEquipment equipment = equipmentMapper.selectByPrimaryKey(id);
        if (equipment == null) {
            return -1;
        } else {
            Integer status = equipment.getStatus();
            int i = 0;
            if (status == 0) {
                equipment.setStatus(1);
                i = equipmentMapper.updateByPrimaryKeySelective(equipment);
            } else {
                equipment.setStatus(0);
                i = equipmentMapper.updateByPrimaryKeySelective(equipment);
            }
            return i;
        }

    }
}