EnclosedTideChannelConfigDaoImpl.java 10.7 KB
package com.zteits.park.dao.impl;

import com.clouds.common.utils.ListCopyUtil;
import com.zteits.clouds.api.apibase.constants.BasicEnum;
import com.zteits.clouds.api.dto.park.dto.ChannelInfoDTO;
import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
import com.zteits.clouds.api.dto.park.dto.TideChannelInfoDTO;
import com.zteits.clouds.api.dto.park.param.QueryParkLotInfoByPkNosRequest;
import com.zteits.clouds.api.dto.park.param.closecarpark.*;
import com.zteits.clouds.api.service.park.ParkingChannelListQueryService;
import com.zteits.clouds.api.service.park.ParkingLotQueryService;
import com.zteits.park.dao.EnclosedTideChannelConfigDao;
import com.zteits.park.domain.EnclosedTideChannelConfig;
import com.zteits.park.domain.EnclosedTideChannelConfigExample;
import com.zteits.park.mapper.EnclosedTideChannelConfigMapper;
import com.zteits.park.mapper.smapper.EnclosedTideChannelConfigSMapper;
import com.zteits.park.mapper.smapper.ParkingLotChannelSMapper;
import com.zteits.park.util.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.jfree.util.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

@Component
public class EnclosedTideChannelConfigDaoImpl implements EnclosedTideChannelConfigDao {

    @Autowired
    private EnclosedTideChannelConfigMapper enclosedTideChannelConfigMapper;

    @Autowired
    private EnclosedTideChannelConfigSMapper enclosedTideChannelConfigSMapper;

    @Autowired
    private ParkingLotChannelSMapper parkingLotChannelSMapper;

    @Autowired
    private ParkingLotQueryService parkingLotQueryService;

    @Resource
    private ParkingChannelListQueryService parkingChannelListQueryService;

    @Override
    public int insertEnclosedTideChannelConfig(EnclosedTideChannelConfig enclosedTideChannelConfig) {
        if (enclosedTideChannelConfig == null) {
            return 0;
        }

        return enclosedTideChannelConfigMapper.insertSelective(enclosedTideChannelConfig);
    }

    @Override
    public int deleteTideChannelByNum(DeleteEnclosedTideChannelRequest request) {
        if (request == null) {
            return 0;
        }
        EnclosedTideChannelConfigExample example = new EnclosedTideChannelConfigExample();
        EnclosedTideChannelConfigExample.Criteria sql = example.createCriteria();
        if(!StringUtils.isEmpty(request.getPlNo())){
            sql.andPlNoEqualTo(request.getPlNo());
        }
        if(!StringUtils.isEmpty(request.getChannelNumber())){
            sql.andChannelNumberEqualTo(request.getChannelNumber());
        }
        if(!StringUtils.isEmpty(request.getConfigNo())){
            sql.andConfigNoEqualTo(request.getConfigNo());
        }

        return enclosedTideChannelConfigMapper.deleteByExample(example);
    }

    @Override
    public  List<TideChannelInfoDTO> queryTideChannel(QueryEnclosedTideChannelRequest request) {
        List<TideChannelInfoDTO> dtoList = new ArrayList<>();
        EnclosedTideChannelConfigExample example = new EnclosedTideChannelConfigExample();
        EnclosedTideChannelConfigExample.Criteria sql = example.createCriteria();
        if(!StringUtils.isEmpty(request.getPlNo())){
            sql.andPlNoEqualTo(request.getPlNo());
        }
        if(!StringUtils.isEmpty(request.getChannelNumber())){
            sql.andChannelNumberEqualTo(request.getChannelNumber());
        }
        example.setOrderByClause("pl_no desc");
        List<EnclosedTideChannelConfig> list = enclosedTideChannelConfigMapper.selectByExample(example);

        //**********************************************************
        boolean outFlag = false;
        String startTime = null;
        String endTime = null;
        String time = "";
        for (int i = 0;i<list.size();i++){
            //判断当前时间是潮汐车道区间,如果在此区间则出场

            boolean validityFlag = false;
            try {
                validityFlag = DateUtils.sameJudgeDate(new Date(),
                        DateUtils.dateToString(list.get(i).getStartTime()),
                        DateUtils.dateToString(list.get(i).getEndTime()));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            if(validityFlag){
                outFlag = true;
                startTime = DateUtils.dateToString(list.get(i).getStartTime());
                endTime = DateUtils.dateToString(list.get(i).getEndTime());
                time = time + (startTime +"至"+endTime);
                break;
            }else{
                outFlag = false;
                startTime = DateUtils.dateToString(list.get(i).getStartTime());
                endTime = DateUtils.dateToString(list.get(i).getEndTime());
                time = time + (startTime +"至"+endTime) +";";
            }
        }
        String str = "";
        if(outFlag){
            str = startTime+"-" +endTime +"时间内"+request.getPlNo() +"-可以通行";
//            billQueryRes.setChannelEnable(outFlag);
//            billQueryRes.setAlertMessage(str);
        }else{

            String timeSecionStr = "";
            if(time.length() > 1){
                timeSecionStr = time.substring(0,time.length()-1);
            }
            str = "本通道(通道号:"+request.getPlNo()+"),在当前时段内禁止通行,请选择其他通道通行。禁止通行时段:" + timeSecionStr + "。其他时段正常通行。";
//            billQueryRes.setChannelEnable(outFlag);
//            billQueryRes.setAlertMessage(str);
        }

        Log.info(str);







        //**********************************************************
        ListCopyUtil.listCopyProperties(list,dtoList,TideChannelInfoDTO.class);
        //获取停车场名称、通道名称
        //停车场编码查询对应名称
        List<String> plNos = dtoList.stream().map(item -> item.getPlNo()).collect(Collectors.toList());
        QueryParkLotInfoByPkNosRequest parkRequest = new QueryParkLotInfoByPkNosRequest();
        parkRequest.setPlNos(plNos);
        parkRequest.setSysCode(BasicEnum.SYS_CODE.getValue());
        if(plNos.size()>0){
            List<ParkingLotDTO> parks = parkingLotQueryService.QueryParkingLotByPkNos(parkRequest).getData();
            dtoList.forEach(relDTO -> {
                parks.forEach(p -> {
                    if (null != relDTO && StringUtils.isNotEmpty(relDTO.getPlNo()) && null != p && StringUtils.isNotEmpty(p.getPlNo())) {
                        if (relDTO.getPlNo().equals(p.getPlNo())) {
                            relDTO.setPlName(p.getPlName());
                        }
                    }

                });
            });
        }

        //查询通道名称
        List<String> channelNums = dtoList.stream().map(item -> item.getChannelNumber()).collect(Collectors.toList());
        QueryChannelNameByChannelNumsRequest channelNumsRequest = new QueryChannelNameByChannelNumsRequest();
        channelNumsRequest.setChannelNums(channelNums);
        channelNumsRequest.setSysCode(BasicEnum.SYS_CODE.getValue());
        if(channelNums.size()>0){
            List<ChannelInfoDTO> channels = parkingChannelListQueryService.queryChannelNameByChannelNums(channelNumsRequest).getData();
            dtoList.forEach(relDTO -> {
                channels.forEach(p -> {
                    if (null != relDTO && StringUtils.isNotEmpty(relDTO.getChannelNumber()) && null != p && StringUtils.isNotEmpty(p.getChannelNumber())) {
                        if (relDTO.getChannelNumber().equals(p.getChannelNumber()) && relDTO.getPlNo().equals(p.getPlNo())) {
                            relDTO.setChannelName(p.getChannelName());
                        }
                    }

                });
            });
        }
        return dtoList;
    }

    @Override
    public List<TideChannelInfoDTO> viewTideChannel(ViewEnclosedTideChannelRequest request) {
        List<TideChannelInfoDTO> dtoList = new ArrayList<>();
        EnclosedTideChannelConfigExample example = new EnclosedTideChannelConfigExample();
        EnclosedTideChannelConfigExample.Criteria sql = example.createCriteria();
        if(!StringUtils.isEmpty(request.getConfigNo())){
            sql.andConfigNoEqualTo(request.getConfigNo());
        }

        List<EnclosedTideChannelConfig> list = enclosedTideChannelConfigMapper.selectByExample(example);
        ListCopyUtil.listCopyProperties(list,dtoList,TideChannelInfoDTO.class);

        //获取停车场名称、通道名称
        //停车场编码查询对应名称
        List<String> plNos = dtoList.stream().map(item -> item.getPlNo()).collect(Collectors.toList());
        QueryParkLotInfoByPkNosRequest parkRequest = new QueryParkLotInfoByPkNosRequest();
        parkRequest.setPlNos(plNos);
        parkRequest.setSysCode(BasicEnum.SYS_CODE.getValue());
        if(plNos.size()>0){
            List<ParkingLotDTO> parks = parkingLotQueryService.QueryParkingLotByPkNos(parkRequest).getData();
            dtoList.forEach(relDTO -> {
                parks.forEach(p -> {
                    if (null != relDTO && StringUtils.isNotEmpty(relDTO.getPlNo()) && null != p && StringUtils.isNotEmpty(p.getPlNo())) {
                        if (relDTO.getPlNo().equals(p.getPlNo())) {
                            relDTO.setPlName(p.getPlName());
                        }
                    }

                });
            });
        }
        return dtoList;
    }

    @Override
    public int updateTideChannel(EnclosedTideChannelConfig tideChannelConfig) {
        EnclosedTideChannelConfigExample example = new EnclosedTideChannelConfigExample();
        example.createCriteria().andIdEqualTo(tideChannelConfig.getId());
        int flag = enclosedTideChannelConfigMapper.insertSelective(tideChannelConfig);
        return flag;
    }

    @Override
    public int deleteTideChannel(UpdateTideChannelRequest request) {
        EnclosedTideChannelConfigExample example = new EnclosedTideChannelConfigExample();
        EnclosedTideChannelConfigExample.Criteria sql = example.createCriteria();
        if(request.getChannelInfoDTOList() != null){
            if(!StringUtils.isEmpty(request.getChannelInfoDTOList().get(0).getConfigNo())){
                sql.andConfigNoEqualTo(request.getChannelInfoDTOList().get(0).getConfigNo());
            }
        }


        int flag = enclosedTideChannelConfigMapper.deleteByExample(example);
        return flag;
    }

    @Override
    public List<TideChannelInfoDTO> queryOpposeTideChannel(QueryOpposeEnclosedTideChannelRequest request) {
        List<TideChannelInfoDTO> list = enclosedTideChannelConfigSMapper.queryOpposeTideChannel(request);
        return list;
    }
}