package com.zteits.park.dao.impl; import java.util.Date; import java.util.List; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; 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.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.constants.ParkingShareEnum; import com.zteits.clouds.api.apibase.constants.PsIsOccupyEnum; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.park.param.TdPParkingShareRequest; import com.zteits.clouds.api.dto.pay.sharesettlement.dto.ParkingShareOrderTempDTO; import com.zteits.clouds.api.dto.pay.sharesettlement.param.ParkShareOrderTempInfoQueryRequest; import com.zteits.park.dao.ParkingSharedDao; import com.zteits.park.domain.TdPParkingShare; import com.zteits.park.domain.TdPParkingShareExample; import com.zteits.park.domain.TdPParkingShareExample.Criteria; import com.zteits.park.mapper.TdPParkingShareMapper; import com.zteits.park.mapper.smapper.TdPParkingShareSMapper; @Component public class ParkingSharedDaoImpl implements ParkingSharedDao { @Autowired private TdPParkingShareMapper tdPParkingShareMapper; @Autowired private TdPParkingShareSMapper tdPParkingShareSMapper; @Override public TdPParkingShare querySharedByPlNoAndBerthNo(String plNo, String psBerthNo) { TdPParkingShareExample example = new TdPParkingShareExample(); example.createCriteria().andPlNoEqualTo(plNo) .andPsBerthNoEqualTo(psBerthNo) .andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); List parkingShares = tdPParkingShareMapper.selectByExample(example); if(CollectionUtils.isEmpty(parkingShares)){ return null; } return parkingShares.get(0); } @Override public PageInfo queryParkShardInfoPage(TdPParkingShareRequest request) { TdPParkingShare tdPParkingShare = new TdPParkingShare(); BeanUtils.copyProperties(request, tdPParkingShare); //设置分页信息 PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); List dtos = tdPParkingShareSMapper.queryShareBerthUsedList(request); return new PageInfo<>(dtos); } @Override public List queryShareBerthList(TdPParkingShareRequest request) { return tdPParkingShareSMapper.queryShareBerthList(request); } @Override public int saveParkingBerthShare(TdPParkingShare tdPParkingShare) { return tdPParkingShareMapper.insertSelective(tdPParkingShare); } @Override public int updateParkShareBerth(TdPParkingShare tdPParkingShare,String plNO,String psBerthNo) { if(StringUtils.isBlank(plNO) || StringUtils.isBlank(psBerthNo)){ throw new BizException(ErrorType.PARAMM_NULL,"停车场编号和泊位编号必须全部有值",false); } TdPParkingShareExample example = new TdPParkingShareExample(); example.createCriteria().andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()) .andPlNoEqualTo(plNO) .andPsBerthNoEqualTo(psBerthNo); return tdPParkingShareMapper.updateByExampleSelective(tdPParkingShare, example ); } @Override public PageInfo queryParkShareOrderTempInfo(ParkShareOrderTempInfoQueryRequest request) { if (0 == request.getBaseRequest().getPageNum()) { request.getBaseRequest().setPageNum(1); } PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); List list = tdPParkingShareSMapper.queryParkShareOrderTempInfo(request); return new PageInfo<>(list); } @Override public List selectByExample(TdPParkingShareExample example) { return tdPParkingShareMapper.selectByExample(example); } @Override public int updateByExampleSelective(TdPParkingShare record, TdPParkingShareExample example) { if(record.getModifyTime()==null){ record.setModifyTime(new Date()); } return tdPParkingShareMapper.updateByExampleSelective(record, example); } @Override public int clearOrderInfo(String orderId,Date modifyDate) { TdPParkingShareExample example = new TdPParkingShareExample(); Criteria sql = example.createCriteria(); sql.andPsOrderIdEqualTo(orderId); if(modifyDate!=null){ sql.andModifyTimeEqualTo(modifyDate); } TdPParkingShare tdPParkingShare = new TdPParkingShare(); tdPParkingShare.setPsIsOccupy(PsIsOccupyEnum.NO_RENT.getCode()); tdPParkingShare.setModifyTime(new Date()); return this.updateByExampleSelective(tdPParkingShare, example); } @Override public PageInfo queryShareBerthByCondition(TdPParkingShareRequest request) { TdPParkingShareExample example = new TdPParkingShareExample(); Criteria sql = example.createCriteria().andPlNoIn(request.getPlNos()) .andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value()); if (StringUtils.isNotEmpty(request.getPsExamineState())) { sql.andPsExamineStateEqualTo(request.getPsExamineState()); } if (StringUtils.isNotEmpty(request.getPsIsOccupy())) { sql.andPsIsOccupyEqualTo(request.getPsIsOccupy()); } if (request.getPsBusiTimeEnd() != null) { sql.andPsBusiTimeEndLessThan(request.getPsBusiTimeEnd()); } PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); List list = tdPParkingShareMapper.selectByExample(example); return new PageInfo(list); } @Override public List queryParkShardList(TdPParkingShareRequest request) { /** 审批状态:0:待审核 1:审批中 2:通过 3 :驳回 String psExamineState*/ TdPParkingShareExample example = new TdPParkingShareExample(); example.createCriteria().andDataStatusEqualTo( DataStatusEnum.DATA_STATUS_VALID.value()).andPsExamineStateEqualTo( ParkingShareEnum.PS_EXAMINE_STATE_AUDITSUCCESS.getValue()); return tdPParkingShareMapper.selectByExample(example); } @Override public Boolean deleteShareBerthByIds(List ids,Date modifyTime,String modifyOp) { TdPParkingShareExample example = new TdPParkingShareExample(); example.createCriteria().andIdIn(ids).andDataStatusEqualTo( DataStatusEnum.DATA_STATUS_VALID.value()); TdPParkingShare tdPParkingShare = new TdPParkingShare(); tdPParkingShare.setDataStatus(DataStatusEnum.DATA_STATUS_NO_VALID.value()); tdPParkingShare.setModifyOp(modifyOp); tdPParkingShare.setModifyTime(modifyTime==null?new Date():modifyTime); Boolean result = tdPParkingShareMapper.updateByExampleSelective(tdPParkingShare, example) > 0; return result; } }