package com.zteits.park.dao;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.dto.order.parkorder.param.ParkOrderUpdateCarNumberReq;
import com.zteits.clouds.api.dto.park.dto.BerthsDTO;
import com.zteits.clouds.api.dto.park.dto.ParkOccupancyRateDTO;
import com.zteits.clouds.api.dto.park.dto.berth.BerthsStatisticDTO;
import com.zteits.clouds.api.dto.park.param.CheckUniqueForBerthNoRequest;
import com.zteits.clouds.api.dto.park.param.DeleteBerthsRequest;
import com.zteits.clouds.api.dto.park.param.QueryBerthForPageRequest;
import com.zteits.clouds.api.dto.park.param.parksource.QueryParkSourceByOrgIdsRequest;
import com.zteits.clouds.api.dto.pda.param.*;
import com.zteits.clouds.api.dto.rocketmq.datacollection.freeberths.ParkAreaFreeBerthsMsgVO;
import com.zteits.park.domain.TpPBerths;
import com.zteits.park.domain.TpPBerthsDO;
import com.zteits.park.domain.TpPBerthsExample;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 泊位表
*
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: IrainParkingPayLogDao.java
* @Description:
* @version: v1.0.0
* @author: wangfei
* @date: 2017年8月21日 下午2:56:28
* Modification History:
* Date Author Version Description
*---------------------------------------------------------*
* 2017年5月4日 wangfei v1.0.0 创建
*/
public interface BerthsDao {
/**
*
单独针对物联网小镇,方格尔做的
* 通过车位编号更新状态
* 原因:方格尔上报不传递停车场,只传递车位编号,车位编号在他那里是唯一的,为防止在我方内部冲突,需要在车位前增加前缀FG_
* @param isOccupy 车位状态 1有车,2无车,3异常
* @param reportTime 设备上报时间(设备上报更新,pda不更新)
* @param recordId 停车记录id
* @param berthNo 车位编号 必填
* @return
* 2017年8月25日 zhaowg
*/
@Deprecated
TpPBerths updateBerthByBerthNoForFangGe(String isOccupy,Date reportTime,String recordId,String berthNo);
/**
* 新增泊位信息表
* @param tpPBerths
* @return
*/
int insertBerthInfo(TpPBerths tpPBerths);
/**
* 更新泊位信息
* @param tpPBerths
* @return
*/
int updateBerthInfoByBerthNoAndPlNo(TpPBerths tpPBerths);
/**
* 根据停车场编码查询车位数量
* @param plNos
* @return
*/
Map queryParkBerthNum(List plNos);
/**
* 根据停车场编号查询空闲车位总数
* @param plNo
* @return
* 2017年8月30日 zhaowg
*/
Long queryFreeBerthNum(String plNo,String where);
/**
* 修改泊位信息
* @param tpPBerths
* @return
*/
Boolean updateBerthInfoById(TpPBerths tpPBerths);
/**
* 修改泊位运营状态信息
* @param request
* @return
*/
Boolean updateBerthBusiInfoStatus(DeleteBerthsRequest request);
/**
* 批量删除泊位信息
* @return
*/
Boolean batDeleteBerthsById(List ids,Long modifyOp,String plNo);
/**
* 通过车位对象分页查询车位信息
* query berths by berth for page
* langlw 2017-8-31
* @param
* @return
*/
PageInfo queryBerthByBerth(QueryBerthForPageRequest request,int pageNum,int pageSize);
/**
* 分组查询停车场占用率
* query park cooupancy rate group by park
* langlw 2017-8-31
* @param
* @return
*/
List queryParkOccupancyRate(String plNo, String parkAreaCode);
/**
* 通过停车场编号和泊位区间编号查询泊位总数
* langlw 2017-8-31
* @param plNo 必填
* @param parkAreaCode 可以为空
* @return
*/
Integer queryBerthCountByPlNoAndParkAreaCode(String plNo,String parkAreaCode);
/**
* 根据停车场编号和泊位编号批量更新车位状态为空闲
* @param plNo
* @param parkAreaCode
* @return
* 2017年9月1日 zhaowg
*/
@Deprecated
Integer batchUpdateBerthStateForFree(String plNo,String parkAreaCode);
/**
* 根据停车场编码查询停车场的泊位
* @param pklNo
* @return
*/
List queryBerthsByPlNo(String pklNo);
/**
* 根据泊位区间编号查询泊位信息
* @param parkAreaCodes
* @return
*/
List queryBerthByAreaCodes(List parkAreaCodes);
/**
* 动态查询车位信息
* @param example
* @return
* 2017年10月31日 zhaowg
*/
List selectByExample(TpPBerthsExample example);
/**
* 动态更新
* @param record
* @param example
* @return
* 2017年12月4日 zhaowg
*/
int updateByExampleSelective(TpPBerths record, TpPBerthsExample example);
/**
* 校验泊位编码的唯一性.
* @param request
* @return
* 2018年1月5日 wangfs.
*/
int checkUniqueForBerthNo(CheckUniqueForBerthNoRequest request);
/**
* 批量保存泊位信息.
* @param list
* @return
* 2018年1月6日 wangfs.
*/
int batchSaveBerthInfo(List list);
/**
* 更换泊位区间
* @param ids
* @param parkAreaCode
* @param opId
* 2018年1月7日 zhaowg
*/
void changeBerthArea(List ids, String parkAreaCode, Long opId);
/**
* 根据停车场编号获取未绑定设备的泊位信息
* @param plNo
* @return
* 2018年1月24日 zhaowg
*/
List getBerthNoBindGeoByPlNo(String plNo);
/**
* 根据泊位区间编号和停车场编号和泊位或者地磁编号查询车位信息
* @param
* @return
* @Author: xiejianpeng
* @Date: 2018/5/31 14:33
*
*/
List queryBerthInfoByPlNoAndOther(QueryBerthByPlNoAndOrtherRequest request);
/**
* 根据停车场编号和泊位编号查询车位信息
* @param
* @return
* @Author: xiejianpeng
* @Date: 2018/5/31 15:55
*
*/
BerthsDTO queryBerthInfoByPlNoAndBerthNo(QueryBerthByPlNoAndBerthNoRequest request);
/**
* 根据泊位区间编号查询泊位信息
* @param request
* @return
* 2017年10月31日 zhaowg
*/
List queryBerthInfoByRangeNos(QueryBerthByRangeNosRequest request);
/**
* 停车场的泊位统计-根据orgIds
* @param
* @return
* @Author: xiejianpeng
* @Date: 2018/12/29 14:27
*
*/
BerthsStatisticDTO queryBerthStatisticByOrgIds(QueryParkSourceByOrgIdsRequest request);
/**
* 各个组织对应的泊位数统计查询
* @param
* @return
* @Author: xiejianpeng
* @Date: 2019/1/6 22:27
*
*/
List queryBerthStatisticForOrgId(QueryParkSourceByOrgIdsRequest request);
/**
* 根据泊位区间编码查询存在地磁的泊位编码
* @param berthRangeNo
* @param plNo
* @return
*/
List queryBerthNoWithEqpNoByBerthRangeNo(String berthRangeNo, String plNo);
/**
* 根据 泊位区间 查询 泊位数量
* @param berthRangeNo
* @return
*/
Long queryBerthNumByBerthRangeNo(String berthRangeNo);
/**
* 更新占用 泊位的 在停车牌号
* @param req
* @return
*/
Boolean updateCarNumberByBerthNo(ParkOrderUpdateCarNumberReq req);
/**
* 入场-修改泊位信息(仅仅用于pda入场)
* @param
* @return
* @Author: xiejianpeng
* @Date: 2019/9/10 09:55
*
*/
Integer updateBerthInfoForInPark(TpPBerths tpPBerths);
/**
* 更改泊位地磁出场时间
* @param
* @return
* @Author: xiejianpeng
* @Date: 2019/11/18 22:45
*
*/
Integer updateBerthEqpOutTime(UpdateBerthRequest request);
/**
* 修改停车泊位记录
* @param
* @return
* @Author: xq
* @Date: 2021/7/22 20:45
*
*/
Integer updateBerthInfoByPDA(UpdateBerthByOrderIdRequest request);
/**
* 统计车场泊位区间对应的空闲车位
* @param
* @return
* @Author: xiejianpeng
* @Date: 2020/8/5 15:58
*
*/
List qyeryParkAreaBerthNumstatistic(String plNo);
/**
* 根据排班的停车场编号列表以及泊位号模糊查询对应的泊位信息
*/
List queryBerthInfoByKeyWord (List plNos, String berthNo );
/**
* 验证泊位号
* @param berthNo
* @return
*/
BerthsDTO queryBerthsByBerthNo(String berthNo);
}