package com.zteits.park.dao.impl; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import com.clouds.common.constants.ParkConstant.OptFlag; import com.clouds.common.utils.SequenceUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.github.pagehelper.util.StringUtil; import com.xiaoleilu.hutool.util.CollectionUtil; import com.zteits.clouds.api.apibase.constants.DataStatusEnum; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.constants.SequenceTypeEnum; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.park.dao.TpPRegionAreaDao; import com.zteits.park.domain.TpPRegionArea; import com.zteits.park.domain.TpPRegionAreaDO; import com.zteits.park.domain.TpPRegionAreaExample; import com.zteits.park.domain.TpPRegionAreaExample.Criteria; import com.zteits.park.mapper.TpPRegionAreaMapper; import com.zteits.park.mapper.smapper.TpPRegionAreaSMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class TpPRegionAreaDaoImpl implements TpPRegionAreaDao { @Autowired private TpPRegionAreaSMapper tpPRegionAreaSMapper; @Autowired private TpPRegionAreaMapper tpPRegionAreaMapper; @Override public long saveOrUpdateTpPRegionArea(TpPRegionArea tpPRegionArea) { long id = 0; if (null == tpPRegionArea.getId()) { String parkAreaCode = SequenceUtil.getNextId(SequenceTypeEnum.PARK_AREA_CODE); tpPRegionArea.setParkAreaCode(parkAreaCode); id = tpPRegionAreaMapper.insertSelective(tpPRegionArea); } else { tpPRegionAreaMapper.updateByPrimaryKeySelective(tpPRegionArea); } return id; } @Override public boolean deleteTpPRegionArea(List ids, Long modifyOpId) { //判断泊位区间下是否有泊位信息,有则不可以删除 List pRegionAreaDOs = tpPRegionAreaSMapper.queryNotAllowDeleteBerthAreaInfo(ids); if (CollectionUtils.isNotEmpty(pRegionAreaDOs)) { throw new BizException(ErrorType.NOT_ALLOW_DEL_BERTH_AREA); } //删除泊位区间 TpPRegionAreaExample example = new TpPRegionAreaExample(); example.createCriteria().andIdIn(ids); TpPRegionArea record = new TpPRegionArea(); record.setModifyTime(new Date()); record.setModifyOp(modifyOpId); record.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value()); record.setOptFlg(OptFlag.DELETE); tpPRegionAreaMapper.updateByExampleSelective(record, example); return true; } @Override public PageInfo queryTpPRegionAreaForPage(List plNos, String parkAreaName, int pageNum, int pageSize, String parkAreaCode) { // 1.设置分页信息 PageHelper.startPage(pageNum, pageSize); List list = tpPRegionAreaSMapper.queryTpPRegionAreaForPage(plNos, parkAreaName, parkAreaCode); return new PageInfo(list); } @Override public List queryTpPRegionAreaByPlnoAndAreaCode(String plNo, String parkAreaCode) { TpPRegionAreaExample example = new TpPRegionAreaExample(); Criteria sql = example.createCriteria(); sql.andParkAreaCodeEqualTo(parkAreaCode); sql.andPlNoEqualTo(plNo); sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); List list = tpPRegionAreaMapper.selectByExample(example); return list; } @Override public List queryTpPRegionAreaByPlNos(List plNos) { TpPRegionAreaExample example = new TpPRegionAreaExample(); Criteria sql = example.createCriteria(); sql.andPlNoIn(plNos); sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); List list = tpPRegionAreaMapper.selectByExample(example); return list; } @Override public Map queryTpPRegionAreaByParkAreaCodes(List parkAreaCodes) { TpPRegionAreaExample example = new TpPRegionAreaExample(); Criteria sql = example.createCriteria(); if (CollectionUtil.isNotEmpty(parkAreaCodes)) { sql.andParkAreaCodeIn(parkAreaCodes); } sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); List list = tpPRegionAreaMapper.selectByExample(example); Map map = new HashMap(); if (!CollectionUtil.isEmpty(list)) { for (TpPRegionArea tpPRegionArea : list) { if (null != tpPRegionArea) { String parkAreaCode = StringUtil.isEmpty(tpPRegionArea.getParkAreaCode()) ? "" : tpPRegionArea.getParkAreaCode(); if (!map.containsKey(parkAreaCode)) { map.put(parkAreaCode, tpPRegionArea); } } } } return map; } @Override public List queryRegionAreaByBerthNo(String plNo, String berthNo) { return tpPRegionAreaSMapper.queryRegionAreaByBerthNo(plNo, berthNo); } @Override public Map queryParkAreaNum(List plNos) { TpPRegionAreaExample example = new TpPRegionAreaExample(); example.createCriteria().andPlNoIn(plNos) .andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); List tpPRegionAreas = tpPRegionAreaMapper.selectByExample(example); if (CollectionUtil.isEmpty(tpPRegionAreas)) { return new HashMap<>(); } return tpPRegionAreas.stream().collect(Collectors.groupingBy(TpPRegionArea::getPlNo, Collectors.counting())); } @Override public int insertSelective(TpPRegionArea regionArea) { String parkAreaCode = SequenceUtil.getNextId(SequenceTypeEnum.PARK_AREA_CODE); regionArea.setParkAreaCode(parkAreaCode); return tpPRegionAreaMapper.insertSelective(regionArea); } }