package com.prolog.rdc.tms.service;

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.AppointTimeCountDTO;
import com.prolog.rdc.tms.model.dto.CallNumberGetShipbillDTO;
import com.prolog.rdc.tms.model.dto.CallNumberPageDTO;
import com.prolog.rdc.tms.model.dto.CallNumberWaitingAreaDTO;
import com.prolog.rdc.tms.model.dto.PlatformAndVehicleDTO;
import com.prolog.rdc.tms.model.dto.WarehouseInfoDTO;
import com.prolog.rdc.tms.model.vo.CallNumberByBranchIdVO;
import com.prolog.rdc.tms.model.vo.CallNumberByNextOneVO;
import com.prolog.rdc.tms.model.vo.CallNumberGetShipbillVO;
import com.prolog.rdc.tms.model.vo.CallNumberQueryVO;
import com.prolog.rdc.tms.model.vo.CallNumberWaitingAreaVO;
import com.prolog.rdc.tms.model.vo.InsertSortVO;
import com.prolog.rdc.tms.model.vo.PassNumberVO;
import com.prolog.rdc.tms.model.vo.PlatformAndVehicleVO;

/**
 * 园区管理-叫号管理服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/7/8 14:11
 */
public interface CallNumberService {
	/**
	 * 主界面仓库查询
	 *
	 * @param callNumberByBranchIdVO
	 * @return
	 */
	WarehouseInfoDTO queryWarehouseInfoData(CallNumberByBranchIdVO callNumberByBranchIdVO);

	/**
	 * 预约单分页查询
	 *
	 * @param
	 */
	Page<CallNumberPageDTO> queryAppoint(CallNumberQueryVO vo) throws Exception;

	/**
	 * 叫号管理-下一位
	 *
	 * @param callNumberByNextOneVO
	 */
	Integer nextOneData(CallNumberByNextOneVO callNumberByNextOneVO) throws Exception;

	/**
	 * 运单查询
	 *
	 * @param callNumberGetShipbillVO
	 * @return
	 */
	List<CallNumberGetShipbillDTO> getShipbillData(CallNumberGetShipbillVO callNumberGetShipbillVO);

	/**
	 * 仓库各时间段排队数查询
	 *
	 * @param
	 */
	List<AppointTimeCountDTO> queryTimeCount(CallNumberQueryVO vo) throws Exception;

	/**
	 * 装卸月台与车辆列表查询
	 *
	 * @param
	 */
	List<PlatformAndVehicleDTO> platformAndVehicle(PlatformAndVehicleVO platformAndVehicleVO) throws Exception;

	/**
	 * 等待区车辆列表查询
	 *
	 * @param
	 */
	List<CallNumberWaitingAreaDTO> queryWaitingZone(CallNumberWaitingAreaVO callNumberWaitingAreaVO) throws Exception;

	/**
	 * 过号
	 *
	 * @param
	 */
	void passNumber(PassNumberVO vo) throws Exception;

	/**
	 * 插队
	 *
	 * @param
	 */
	void insertSort(InsertSortVO vo) throws Exception;

}
