ParkIllegalAreaBaseDaoImpl.java 6.78 KB
package com.zteits.park.dao.impl;

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

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.park.param.ParkIllegalAreaBaseRequest;
import com.zteits.clouds.api.dto.pay.account.dto.AccountInOutDetailForPageDTO;
import com.zteits.park.dao.ParkIllegalAreaBaseDao;
import com.zteits.park.domain.ParkIllegalAreaBase;
import com.zteits.park.domain.ParkIllegalAreaBaseExample;
import com.zteits.park.domain.ParkIllegalAreaBaseExample.Criteria;
import com.zteits.park.domain.ParkIllegalAreaRel;
import com.zteits.park.domain.ParkIllegalAreaRelExample;
import com.zteits.park.mapper.ParkIllegalAreaBaseMapper;
import com.zteits.park.mapper.ParkIllegalAreaRelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import static java.util.stream.Collectors.toList;

@Component
public class ParkIllegalAreaBaseDaoImpl implements ParkIllegalAreaBaseDao {
    @Autowired
    private ParkIllegalAreaBaseMapper parkIllegalAreaBaseMapper;

    @Autowired
    private ParkIllegalAreaRelMapper parkIllegalAreaRelMapper;

    @Override
    public int deleteParkIllegalAreaBaseByPrimaryKey(Long id, String opId, String opName) {
        ParkIllegalAreaBase record = new ParkIllegalAreaBase();
        record.setId(id);
        record.setModifyOp(Long.parseLong(opId));
        record.setModifyTime(new Date());
        record.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value());
        return parkIllegalAreaBaseMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public int saveParkIllegalAreaBase(ParkIllegalAreaBase parkIllegalAreaBase) {
        if (parkIllegalAreaBase.getCreateTime() == null) {
            parkIllegalAreaBase.setCreateTime(new Date());
        }
        if (parkIllegalAreaBase.getModifyTime() == null) {
            parkIllegalAreaBase.setModifyTime(new Date());
        }
        parkIllegalAreaBase.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
        return parkIllegalAreaBaseMapper.insertSelective(parkIllegalAreaBase);
    }

    @Override
    public int updateByExampleSelective(ParkIllegalAreaBase record, ParkIllegalAreaBaseExample example) {
        return parkIllegalAreaBaseMapper.updateByExampleSelective(record, example);
    }

    @Override
    public int updateByPrimaryKeySelective(ParkIllegalAreaBase record) {
        return parkIllegalAreaBaseMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public List<ParkIllegalAreaBase> selectByExample(ParkIllegalAreaBaseExample example) {
        return parkIllegalAreaBaseMapper.selectByExample(example);
    }

    @Override
    public ParkIllegalAreaBase queryByPrimaryKey(Long id) {
        return parkIllegalAreaBaseMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<ParkIllegalAreaBase> queryParkIllegalAreaBase(ParkIllegalAreaBaseRequest request) {

        ParkIllegalAreaBaseExample example = new ParkIllegalAreaBaseExample();
        Criteria sql = example.createCriteria();
        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()).andOrgIdEqualTo(request.getOrgId());
        if (CollectionUtils.isNotEmpty(request.getPlNos())) {

            ParkIllegalAreaRelExample parkIllegalAreaRelExample = new ParkIllegalAreaRelExample();
            parkIllegalAreaRelExample.createCriteria().andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
                .andPlNoIn(request.getPlNos());
            parkIllegalAreaRelExample.setOrderByClause("modify_time desc,id desc ");

            List<ParkIllegalAreaRel> rels = parkIllegalAreaRelMapper.selectByExample(parkIllegalAreaRelExample);

            List<Long> baseIds = Arrays.asList(-1L);
            if (CollectionUtils.isNotEmpty(rels)) {
                baseIds = rels.parallelStream().map(a -> a.getParkIllegalBaseId()).collect(toList());
            }
            sql.andIdIn(baseIds);
        }
        if (StringUtils.isNotEmpty(request.getRoadNo())) {
            sql.andRoadNoEqualTo( request.getRoadNo() );
        }

        if (StringUtils.isNotEmpty(request.getRoadName())) {
            sql.andRoadNameLike("%" + request.getRoadName() + "%");
        }

        return parkIllegalAreaBaseMapper.selectByExample(example);
    }

    @Override
    public int batchDeleteParkIllegalAreaBaseByPrimaryKey(List<Long> ids, String opId, String opName) {
        ParkIllegalAreaBase record = new ParkIllegalAreaBase();
        record.setModifyOp(Long.parseLong(opId));
        record.setModifyTime(new Date());
        //where条件
        ParkIllegalAreaBaseExample example = new ParkIllegalAreaBaseExample();
        example.createCriteria().andIdIn(ids);
        return parkIllegalAreaBaseMapper.updateByExampleSelective(record, example);
    }

    @Override
    public PageInfo<ParkIllegalAreaBase> queryParkIllegalAreaBaseForPage(ParkIllegalAreaBaseRequest request) {

        ParkIllegalAreaBaseExample example = new ParkIllegalAreaBaseExample();
        Criteria sql = example.createCriteria();
        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()).andOrgIdEqualTo(request.getOrgId());
        if (CollectionUtils.isNotEmpty(request.getPlNos())) {

            ParkIllegalAreaRelExample parkIllegalAreaRelExample = new ParkIllegalAreaRelExample();
            parkIllegalAreaRelExample.createCriteria().andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
                .andPlNoIn(request.getPlNos());
            parkIllegalAreaRelExample.setOrderByClause("modify_time desc,id desc ");
            List<ParkIllegalAreaRel> rels = parkIllegalAreaRelMapper.selectByExample(parkIllegalAreaRelExample);

            List<Long> baseIds = Arrays.asList(-1L);
            if (CollectionUtils.isNotEmpty(rels)) {
                baseIds = rels.parallelStream().map(a -> a.getId()).collect(toList());
            }
            sql.andIdIn(baseIds);
        }


        if (StringUtils.isNotEmpty(request.getRoadName())) {
            sql.andRoadNameLike("%" + request.getRoadName() + "%");
        }
        PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
        List<ParkIllegalAreaBase> parkIllegalAreaBases = parkIllegalAreaBaseMapper.selectByExample(example);
        PageInfo<ParkIllegalAreaBase> pageInfo = new PageInfo<>(parkIllegalAreaBases);
        if(pageInfo.getPages()<request.getBaseRequest().getPageNum()){
            if(!org.springframework.util.CollectionUtils.isEmpty(parkIllegalAreaBases)){
                parkIllegalAreaBases.removeAll(parkIllegalAreaBases);
            }
        }
        return new PageInfo<>(parkIllegalAreaBases);
    }
}