SysNoticeDaoImpl.java 4.92 KB
package com.zteits.sys.dao.impl;

import java.util.Date;
import java.util.List;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.sys.param.NoticeQueryReq;
import com.zteits.clouds.api.dto.sys.param.NoticeUpdateReq;
import com.zteits.clouds.api.dto.sys.param.QueryLatestNoticeRequest;
import com.zteits.clouds.api.dto.sys.param.QueryNoticeForPageRequest;
import com.zteits.sys.dao.SysNoticeDao;
import com.zteits.sys.domain.SysNotice;
import com.zteits.sys.domain.SysNoticeExample;
import com.zteits.sys.mapper.SysNoticeMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

@Component
public class SysNoticeDaoImpl implements SysNoticeDao {
    @Autowired
    private SysNoticeMapper sysNoticeMapper;

    @Override
    public SysNotice queryLatestNotice(QueryLatestNoticeRequest request) {
        SysNoticeExample example = new SysNoticeExample();
        SysNoticeExample.Criteria sql = example.createCriteria();
        if (request.getOrgId() != null) {
            sql.andOrgIdEqualTo(request.getOrgId());
        }
        if (request.getNoticeBigType() != null) {
            sql.andNoticeBigTypeEqualTo(request.getNoticeBigType());
        }
        sql.andExpDateGreaterThanOrEqualTo(new Date());
        example.setOrderByClause(" eff_date desc");
        List<SysNotice> sysNotices = sysNoticeMapper.selectByExampleWithBLOBs(example);
        if (CollectionUtils.isEmpty(sysNotices)) {
            return null;
        }
        return sysNotices.get(0);
    }

    @Override
    public PageInfo<SysNotice> queryNoticeForPage(QueryNoticeForPageRequest request) {
        SysNoticeExample example = new SysNoticeExample();
        SysNoticeExample.Criteria sql = example.createCriteria();

        if (CollectionUtil.isNotEmpty(request.getNoticeBigTypes())) {
            sql.andNoticeBigTypeIn(request.getNoticeBigTypes());
        }
        if (CollectionUtil.isNotEmpty(request.getOrgIds())) {
            sql.andOrgIdIn(request.getOrgIds());
        }
        if (null != request.getStartCreateTime()) {
            sql.andCreateDateGreaterThanOrEqualTo(request.getStartCreateTime());
        }
        if (null != request.getEndCreateTime()) {
            sql.andCreateDateLessThanOrEqualTo(request.getEndCreateTime());
        }

        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());

        if (!request.getShowAll()) {
            sql.andEffDateLessThanOrEqualTo(new Date());
            sql.andExpDateGreaterThanOrEqualTo(new Date());
        }

        example.setOrderByClause(" create_date desc,exp_date desc");

        PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
        List<SysNotice> list = sysNoticeMapper.selectByExample(example);
        return new PageInfo<>(list);
    }

    @Override
    public Boolean saveNotice(SysNotice sysNotice) {

        return sysNoticeMapper.insertSelective(sysNotice) > 0;
    }

    @Override
    public SysNotice queryNotice(NoticeQueryReq req) {

        SysNoticeExample example = new SysNoticeExample();
        SysNoticeExample.Criteria sql = example.createCriteria();

        //sql.andEffDateLessThanOrEqualTo(new Date());
        //sql.andExpDateGreaterThanOrEqualTo(new Date());

        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
        if(null != req.getNoticeId()){
            sql.andNoticeIdEqualTo(req.getNoticeId());
        }
        if(null != req.getId()){
            sql.andIdEqualTo(req.getId());
        }

        example.setOrderByClause(" id desc");

        List<SysNotice> list = sysNoticeMapper.selectByExample(example);
        SysNotice sysNotice = null;
        if (CollectionUtil.isNotEmpty(list)) {
            sysNotice = list.get(0);
        }
        return sysNotice;
    }

    @Override
    public Boolean updateNotice(NoticeUpdateReq req) {
        SysNoticeExample example = new SysNoticeExample();
        SysNoticeExample.Criteria sql = example.createCriteria();
        sql.andIdEqualTo(req.getId());

        SysNotice sysNotice = new SysNotice();
        BeanUtils.copyProperties(req, sysNotice);

        if (null != req.getExpireDate()) {
            sysNotice.setExpDate(req.getExpireDate());
        }

        if (req.getDeleteOp()) {
            sysNotice.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
        }

        if (null != req.getExpireDate()) {
            sysNotice.setExpDate(req.getExpireDate());
        }
        sysNotice.setModfiyEmpId(req.getsOpId() + "");
        sysNotice.setModfiyEmpName(req.getsOpName());
        sysNotice.setModfiyDate(new Date());

        return sysNoticeMapper.updateByExampleSelective(sysNotice, example) > 0;

    }

}