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 findAll() { SyEquipmentExample example = new SyEquipmentExample(); SyEquipmentExample.Criteria criteria = example.createCriteria(); criteria.andIsDeleteEqualTo(0); List syEquipments = equipmentMapper.selectByExample(example); return syEquipments; } /** * 查询全部id */ @Override public List findAllId() { List all = findAll(); ArrayList 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 page = (Page) 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 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 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 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 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 integers = (List) 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 syVehicleForbidenTasks = (List) 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 page = (Page) 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; } } }