package com.ruoyi.oa.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.http.HttpStatus; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.oa.domain.DevEquipmentCode; import com.ruoyi.oa.mapper.DevEquipmentCodeMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.oa.domain.bo.DevEquipmentBo; import com.ruoyi.oa.domain.vo.DevEquipmentVo; import com.ruoyi.oa.domain.DevEquipment; import com.ruoyi.oa.mapper.DevEquipmentMapper; import com.ruoyi.oa.service.IDevEquipmentService; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import java.util.Collection; /** * 智控设备Service业务层处理 * * @author ruoyi * @date 2021-12-05 */ @Service public class DevEquipmentServiceImpl extends ServicePlusImpl implements IDevEquipmentService { @Autowired private DevEquipmentCodeMapper devEquipmentCodeMapper; @Override public DevEquipmentVo queryById(Long id) { return getVoById(id); } @Override public TableDataInfo queryPageList(DevEquipmentBo bo) { PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo)); return PageUtils.buildDataInfo(result); } @Override public List queryList(DevEquipmentBo bo) { return listVo(buildQueryWrapper(bo)); } private LambdaQueryWrapper buildQueryWrapper(DevEquipmentBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.like(bo.getSerialNumber() != null, DevEquipment::getSerialNumber, bo.getSerialNumber()); lqw.eq(bo.getType() != null, DevEquipment::getType, bo.getType()); lqw.like(bo.getSequenceCode() != null, DevEquipment::getSequenceCode, bo.getSequenceCode()); lqw.like(bo.getEdition() != null, DevEquipment::getEdition, bo.getEdition()); lqw.eq(bo.getSchoolId() != null, DevEquipment::getSchoolId, bo.getSchoolId()); lqw.like(bo.getHostId() != null, DevEquipment::getHostId, bo.getHostId()); lqw.like(bo.getNetworkId() != null, DevEquipment::getNetworkId, bo.getNetworkId()); lqw.eq(bo.getFrequencyBand() != null, DevEquipment::getFrequencyBand, bo.getFrequencyBand()); lqw.eq(bo.getUseStatus() != null, DevEquipment::getUseStatus, bo.getUseStatus()); lqw.orderByDesc(DevEquipment::getUpdateTime); return lqw; } @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(DevEquipmentBo bo) { List list = baseMapper.selectList(new QueryWrapper().lambda() .eq(DevEquipment::getSequenceCode, bo.getSequenceCode())); if (list.size() > 0) { throw new ServiceException("硬件序列码重复", HttpStatus.HTTP_PARTIAL); } DevEquipment add = BeanUtil.toBean(bo, DevEquipment.class); validEntityBeforeSave(add); boolean flag = save(add); if (flag) { bo.setId(add.getId()); } return flag; } @Override public Boolean updateByBo(DevEquipmentBo bo) { List list = baseMapper.selectList(new QueryWrapper().lambda() .eq(DevEquipment::getSequenceCode, bo.getSequenceCode()) .ne(DevEquipment::getId, bo.getId())); if (list.size() > 0) { throw new ServiceException("硬件序列码重复", HttpStatus.HTTP_PARTIAL); } DevEquipment update = BeanUtil.toBean(bo, DevEquipment.class); validEntityBeforeSave(update); return updateById(update); } /** * 保存前的数据校验 * * @param entity 实体类数据 */ private void validEntityBeforeSave(DevEquipment entity) { //TODO 做一些数据校验,如唯一约束 } @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return removeByIds(ids); } @Override @Transactional(rollbackFor = Exception.class) public DevEquipment externalAdd(DevEquipmentBo bo) { DevEquipment po = baseMapper.selectOne(new QueryWrapper().lambda() .eq(DevEquipment::getSequenceCode, bo.getSequenceCode())); // 设备存在,直接返回设备信息 if (StringUtils.isNotEmpty(po)) { return po; } // 设备不存在则新建 else { if(bo.isRegister()) { // 先根据序列码生成序列号 DevEquipmentCode c = new DevEquipmentCode(); c.setCreateTime(DateUtils.getNowDate()); devEquipmentCodeMapper.insert(c); // 添加设备 DevEquipment add = BeanUtil.toBean(bo, DevEquipment.class); add.setSerialNumber(c.getId()); baseMapper.insert(add); return add; }else{ return po; } } } @Override @Transactional(rollbackFor = Exception.class) public DevEquipment equipmentEdit(DevEquipmentBo bo) { DevEquipment po = baseMapper.selectById(bo.getId()); if (po == null) { throw new ServiceException("没有设备信息", HttpStatus.HTTP_PARTIAL); } if (null != bo.getSchoolId()) { po.setSchoolId(bo.getSchoolId()); } if (StringUtils.isNotBlank(bo.getHostId())) { po.setHostId(bo.getHostId()); } // if (StringUtils.isEmpty(bo.getNetworkId())) { // po.setNetworkId(bo.getNetworkId()); // } // if (StringUtils.isEmpty(bo.getFrequencyBand())) { // po.setFrequencyBand(bo.getFrequencyBand()); // } // if (null != bo.getBatchId()) { // po.setBatchId(bo.getBatchId()); // } // if (StringUtils.isEmpty(bo.getRemarks())) { // po.setRemarks(bo.getRemarks()); // } baseMapper.updateById(po); return po; } @Override @Transactional(rollbackFor = Exception.class) public void submitComment(DevEquipmentBo bo) { DevEquipment po = baseMapper.selectById(bo.getId()); if (po == null) { throw new ServiceException("没有设备信息", HttpStatus.HTTP_PARTIAL); } if (null != bo.getBatchId()) { po.setBatchId(bo.getBatchId()); } if (StringUtils.isNotBlank(bo.getRemarks())) { po.setRemarks(bo.getRemarks()); } baseMapper.updateById(po); } }