ParkingRuleConfigurationDaoImpl.java 6.69 KB
package com.zteits.park.dao.impl;

import com.zteits.clouds.api.dto.park.dto.AllConfigDTO;
import com.zteits.clouds.api.dto.park.dto.ConfigDTO;
import com.zteits.clouds.api.dto.park.dto.ConfigPlNoDTO;
import com.zteits.clouds.api.dto.park.param.closecarpark.*;
import com.zteits.park.dao.ParkingRuleConfigurationDao;
import com.zteits.park.domain.EnclosedParkingLotConfig;
import com.zteits.park.domain.EnclosedParkingLotConfigExample;
import com.zteits.park.mapper.EnclosedParkingLotConfigMapper;
import com.zteits.park.mapper.smapper.EnclosedParkingLotConfigSMapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@Component
public class ParkingRuleConfigurationDaoImpl implements ParkingRuleConfigurationDao {
    private static final Logger logger = LoggerFactory.getLogger(ParkingRuleConfigurationDaoImpl.class);
    @Autowired
    private EnclosedParkingLotConfigMapper enclosedParkingLotConfigMapper;

    @Autowired
    private EnclosedParkingLotConfigSMapper enclosedParkingLotConfigSMapper;


    /**
     * 每一页大小.
     */
    private static final Integer PAGE_SIZE = 500;

    @Override
    public int insertSelective(EnclosedParkingLotConfig record) {
        if (record == null) {
            return 0;
        }

        return enclosedParkingLotConfigMapper.insertSelective(record);
    }

    @Override
    public int updateSelective(EnclosedParkingLotConfig record) {
        if (record == null) {
            return 0;
        }

        return enclosedParkingLotConfigMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public List<EnclosedParkingLotConfig> viewSelective(EnclosedParkingLotConfig record) {
        if (record == null) {
            return new ArrayList<>();
        }
        EnclosedParkingLotConfigExample example = new EnclosedParkingLotConfigExample();
        example.createCriteria().andPlNoEqualTo(record.getPlNo());
        return enclosedParkingLotConfigMapper.selectByExample(example);
    }

    @Override
    public List<EnclosedParkingLotConfig> queryOutparkDurationTime(EnclosedParkingLotConfig record) {
        if (record == null) {
            return new ArrayList<>();
        }
        EnclosedParkingLotConfigExample example = new EnclosedParkingLotConfigExample();
        example.createCriteria().andPlNoEqualTo(record.getPlNo()).andConfigTypeEqualTo(record.getConfigType());
        List<EnclosedParkingLotConfig> list = enclosedParkingLotConfigMapper.selectByExample(example);
        return list;
    }

    @Override
    public List<AllConfigDTO> queryAllRuleConfiguration(QueryAllRuleConfigurationRequest request) {
        if (request == null) {
            return new ArrayList<>();
        }

        List<AllConfigDTO> dtoList = enclosedParkingLotConfigSMapper.queryAllRuleConfiguration(request);
        return dtoList;
    }

    @Override
    public int updateAllRuleConfiguration(UpdateAllRuleConfigurationRequest request) {
        if (request == null) {
            return 0;
        }
        int flag = 0;

        for (int i = 0;i<request.getAllConfigList().size();i++){
            EnclosedParkingLotConfig record = new EnclosedParkingLotConfig();
            BeanUtils.copyProperties(request.getAllConfigList().get(i),record);

            EnclosedParkingLotConfigExample example = new EnclosedParkingLotConfigExample();
            example.createCriteria().andConfigCodeEqualTo(record.getConfigCode()).andConfigTypeEqualTo(record.getConfigType());
            flag = enclosedParkingLotConfigMapper.updateByExampleSelective(record,example);
        }

        return flag;
    }

    @Override
    public List<ConfigDTO> queryParkRuleList(QueryParkRuleConfigurationRequest request) {
        if (request == null) {
            return new ArrayList<>();
        }
        List<ConfigDTO> dtoList = enclosedParkingLotConfigSMapper.queryParkRuleList(request);
        return dtoList;
    }

    @Override
    public List<ConfigPlNoDTO> queryPlNoRuleList(QueryParkRuleConfigurationRequest request) {
        if (request == null) {
            return new ArrayList<>();
        }
        List<ConfigPlNoDTO> dtoList = enclosedParkingLotConfigSMapper.queryPlNoRuleList(request);
        return dtoList;
    }

    @Override
    public int delParkRuleConfiguration(SaveParkRuleConfigurationRequest request) {
        if (request == null) {
            return 0;
        }

        EnclosedParkingLotConfigExample example = new EnclosedParkingLotConfigExample();
        example.createCriteria().andPlNoEqualTo(request.getPlNo());

        return enclosedParkingLotConfigMapper.deleteByExample(example);
    }

    @Override
    public int saveParkRuleConfiguration(SaveParkRuleConfigurationRequest request) {
        if (request == null) {
            return 0;
        }
        int flag = 0;
        for (int i = 0;i<request.getConfigParkList().size();i++){
            EnclosedParkingLotConfig record = new EnclosedParkingLotConfig();
            BeanUtils.copyProperties(request.getConfigParkList().get(i),record);
            record.setPlNo(request.getPlNo());
            flag = enclosedParkingLotConfigMapper.insertSelective(record);
        }
        return flag;
    }

    @Override
    public int isStartSpecialCar(QueryIsStartSpecialRequest request) {
        EnclosedParkingLotConfigExample example = new EnclosedParkingLotConfigExample();
        EnclosedParkingLotConfigExample.Criteria sql = example.createCriteria();
        if(!StringUtils.isEmpty(request.getPlNo())){
            sql.andPlNoEqualTo(request.getPlNo());
        }
        if(!StringUtils.isEmpty(request.getConfigType())){
            sql.andConfigTypeEqualTo(request.getConfigType());
        }

        sql.andConfigCodeEqualTo(request.getConfigCode());

        List<EnclosedParkingLotConfig> list = enclosedParkingLotConfigMapper.selectByExample(example);
        EnclosedParkingLotConfig config = list.size() > 0 ? list.get(0) : null;
        String configValue = Optional.ofNullable(config).map(EnclosedParkingLotConfig::getConfigValue).orElse(null);
        int flag = 0;
        if(!StringUtils.isEmpty(configValue)){
            // 特殊车辆是否自动入0 否 1是
            flag = NumberUtils.toInt(configValue, 0);
        }
       /* if(!StringUtils.isEmpty(list.get(0).getConfigValue())){
            flag = Integer.parseInt(list.get(0).getConfigValue());
        }*/
        logger.info("停车场{}, 特殊车是否自动放行{}, 获取的配置为{}",request, flag,  list);
        return flag;
    }
}