package doumeemes.service.business.impl; 
 | 
  
 | 
import doumeemes.core.constants.ResponseStatus; 
 | 
import doumeemes.core.exception.BusinessException; 
 | 
import doumeemes.core.model.LoginUserInfo; 
 | 
import doumeemes.core.model.PageData; 
 | 
import doumeemes.core.model.PageWrap; 
 | 
import doumeemes.core.utils.Constants; 
 | 
import doumeemes.core.utils.DateUtil; 
 | 
import doumeemes.core.utils.Utils; 
 | 
import doumeemes.core.utils.redis.RedisUtil; 
 | 
import doumeemes.dao.business.DeviceCheckMapper; 
 | 
import doumeemes.dao.business.DeviceMapper; 
 | 
import doumeemes.dao.business.MultifilesMapper; 
 | 
import doumeemes.dao.business.model.Device; 
 | 
import doumeemes.dao.business.model.DeviceCheck; 
 | 
import doumeemes.dao.business.model.Multifiles; 
 | 
import doumeemes.dao.ext.bean.DeviceCheckSaveBean; 
 | 
import doumeemes.dao.ext.bean.MultiFilesSaveBean; 
 | 
import doumeemes.service.business.DeviceCheckService; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
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 org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 设备巡检信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2022/07/12 10:25 
 | 
 */ 
 | 
@Service 
 | 
public class DeviceCheckServiceImpl implements DeviceCheckService { 
 | 
  
 | 
    @Autowired 
 | 
    private DeviceCheckMapper deviceCheckMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private MultifilesMapper multifilesMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private DeviceMapper deviceMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private RedisTemplate<String, Object> redisTemplate; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(DeviceCheck deviceCheck) { 
 | 
        deviceCheckMapper.insert(deviceCheck); 
 | 
        return deviceCheck.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        deviceCheckMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(DeviceCheck deviceCheck) { 
 | 
        UpdateWrapper<DeviceCheck> deleteWrapper = new UpdateWrapper<>(deviceCheck); 
 | 
        deviceCheckMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        deviceCheckMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(DeviceCheck deviceCheck) { 
 | 
        deviceCheckMapper.updateById(deviceCheck); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<DeviceCheck> deviceChecks) { 
 | 
        if (CollectionUtils.isEmpty(deviceChecks)) { 
 | 
            return; 
 | 
        } 
 | 
        for (DeviceCheck deviceCheck: deviceChecks) { 
 | 
            this.updateById(deviceCheck); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public DeviceCheck findById(Integer id) { 
 | 
        return deviceCheckMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public DeviceCheck findOne(DeviceCheck deviceCheck) { 
 | 
        QueryWrapper<DeviceCheck> wrapper = new QueryWrapper<>(deviceCheck); 
 | 
        return deviceCheckMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<DeviceCheck> findList(DeviceCheck deviceCheck) { 
 | 
        QueryWrapper<DeviceCheck> wrapper = new QueryWrapper<>(deviceCheck); 
 | 
        return deviceCheckMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<DeviceCheck> findPage(PageWrap<DeviceCheck> pageWrap) { 
 | 
        IPage<DeviceCheck> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<DeviceCheck> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDeleted() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getDeleted, pageWrap.getModel().getDeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateUser() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getCreateUser, pageWrap.getModel().getCreateUser()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateTime() != null) { 
 | 
            queryWrapper.lambda().ge(DeviceCheck::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); 
 | 
            queryWrapper.lambda().le(DeviceCheck::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getUpdateUser() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getUpdateUser, pageWrap.getModel().getUpdateUser()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getUpdateTime() != null) { 
 | 
            queryWrapper.lambda().ge(DeviceCheck::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); 
 | 
            queryWrapper.lambda().le(DeviceCheck::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRemark() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getRemark, pageWrap.getModel().getRemark()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRootDepartId() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getRootDepartId, pageWrap.getModel().getRootDepartId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getComDepartId() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getComDepartId, pageWrap.getModel().getComDepartId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDeviceId() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getDeviceId, pageWrap.getModel().getDeviceId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCheckdate() != null) { 
 | 
            queryWrapper.lambda().ge(DeviceCheck::getCheckdate, Utils.Date.getStart(pageWrap.getModel().getCheckdate())); 
 | 
            queryWrapper.lambda().le(DeviceCheck::getCheckdate, Utils.Date.getEnd(pageWrap.getModel().getCheckdate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getStatus() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getStatus, pageWrap.getModel().getStatus()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getContent() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getContent, pageWrap.getModel().getContent()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDealDate() != null) { 
 | 
            queryWrapper.lambda().ge(DeviceCheck::getDealDate, Utils.Date.getStart(pageWrap.getModel().getDealDate())); 
 | 
            queryWrapper.lambda().le(DeviceCheck::getDealDate, Utils.Date.getEnd(pageWrap.getModel().getDealDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDealUserId() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getDealUserId, pageWrap.getModel().getDealUserId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDealInfo() != null) { 
 | 
            queryWrapper.lambda().eq(DeviceCheck::getDealInfo, pageWrap.getModel().getDealInfo()); 
 | 
        } 
 | 
        for(PageWrap.SortData sortData: pageWrap.getSorts()) { 
 | 
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { 
 | 
                queryWrapper.orderByDesc(sortData.getProperty()); 
 | 
            } else { 
 | 
                queryWrapper.orderByAsc(sortData.getProperty()); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(deviceCheckMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(DeviceCheck deviceCheck) { 
 | 
        QueryWrapper<DeviceCheck> wrapper = new QueryWrapper<>(deviceCheck); 
 | 
        return deviceCheckMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Transactional 
 | 
    @Override 
 | 
    public void saveBean(DeviceCheckSaveBean deviceCheckSaveBean, LoginUserInfo userInfo){ 
 | 
        Device d = deviceMapper.selectById(deviceCheckSaveBean.getDeviceId()); 
 | 
        if(Objects.isNull(d)){ 
 | 
            throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), ResponseStatus.OBJECT_EMP.getMessage()); 
 | 
        } 
 | 
        DeviceCheck deviceCheck = deviceCheckSaveBean.toDeviceCheck(userInfo); 
 | 
        deviceCheck.setCode(this.getNextCode(userInfo.getCompany().getId())); 
 | 
        this.deviceCheckMapper.insert(deviceCheck); 
 | 
        List<MultiFilesSaveBean> multiFilesSaveBeanList = deviceCheckSaveBean.getMultiFilesSaveBeans(); 
 | 
        if(deviceCheckSaveBean.getStatus().intValue()==Constants.ONE){ 
 | 
            if(multiFilesSaveBeanList.isEmpty()||multiFilesSaveBeanList.size()<=0){ 
 | 
                throw new BusinessException(ResponseStatus.ITEM_ERR_STATUS.getCode(), "巡检上传文件不能为空"); 
 | 
            }else{ 
 | 
                for (MultiFilesSaveBean multiFilesSaveBean:multiFilesSaveBeanList) { 
 | 
                    Multifiles m =  multiFilesSaveBean.toMultiFiles(userInfo); 
 | 
                    m.setObjid(deviceCheck.getId()); 
 | 
                    m.setObjtype(Constants.ZERO); 
 | 
                    this.multifilesMapper.insert(m); 
 | 
                } 
 | 
            } 
 | 
        }else{ 
 | 
            if(!multiFilesSaveBeanList.isEmpty()&&multiFilesSaveBeanList.size()>0){ 
 | 
                for (MultiFilesSaveBean multiFilesSaveBean:multiFilesSaveBeanList) { 
 | 
                    Multifiles m =  multiFilesSaveBean.toMultiFiles(userInfo); 
 | 
                    m.setObjid(deviceCheck.getId()); 
 | 
                    m.setObjtype(Constants.ZERO); 
 | 
                    this.multifilesMapper.insert(m); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public synchronized  String  getNextCode(Integer comId ){ 
 | 
        String prefix =  "XJ-" + DateUtil.getDate(new Date(),"yyyyMMdd") +"-"; 
 | 
        Integer countNum  = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEVICE_CHECK_KEY+comId,Integer.class); 
 | 
        countNum = Constants.formatIntegerNum(countNum)+1; 
 | 
        //更新缓存 
 | 
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_DEVICE_CHECK_KEY+comId,countNum); 
 | 
        String nextIndex =Integer.toString( countNum); 
 | 
        return prefix + StringUtils.leftPad(nextIndex,4,"0"); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |