package com.prolog.rdc.tms.service.fleetManagement;

import com.prolog.framework.common.message.RestMessage;
import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.fleetManagement.*;
import com.prolog.rdc.tms.model.vo.basicConfigure.ImportPageVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 
 *
 * 车队管理-司机管理服务层
 *
 * @className :DriverService
 * @author :fanzw
 * @creationTime :2022/03/15
 * @description :
 *
 * @modifier :fanzw
 * @modifyTime :2022/03/15
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface DriverService {

	/**
	 * 司机资料分页查询
	 * 
	 * @param driverPagingQueryVO
	 * @return
	 */
	Page<DriverPagingQueryDTO> pageDriverData(DriverPagingQueryVO driverPagingQueryVO);

	/**
	 * 司机资料弹窗
	 * 
	 * @param driverPopupVO
	 * @return
	 */
	Page<DriverPopupDTO> popupDriverData(DriverPopupVO driverPopupVO);

	DriverPopupDTO getDriverForCarriersAutoDis(DriverPopupVO driverPopupVO);

	/**
	 * 司机资料查看
	 * 
	 * @param driverCheckVO
	 * @return
	 */
	DriverCheckDTO getDriverData(DriverCheckVO driverCheckVO);

	/**
	 * 司机资料是否启用
	 * 
	 * @param driverWhetherEnableVO
	 */
	void whetherEnableDriverData(DriverWhetherEnableVO driverWhetherEnableVO);

	/**
	 * 司机资料新增
	 * 
	 * @param driverAddVO
	 */
	void addDriverData(DriverAddVO driverAddVO);

	/**
	 * 司机资料修改
	 * 
	 * @param driverModifyVO
	 */
	void modifyDriverData(DriverModifyVO driverModifyVO);

	/**
	 * 司机资料删除
	 * 
	 * @param list
	 */
	void deleteDriverData(List<DriverModifyDeleteVO> list);

	/**
	 * 司机常跑线路查看
	 * 
	 * @param driverLineCheckVO
	 */
	List<DriverLineCheckDTO> listDriverLineData(DriverLineCheckVO driverLineCheckVO);

	/**
	 * 未绑/已绑车辆查询
	 * 
	 * @param driverVehicleLinkVO
	 */
	List<DriverVehicleLinkDTO> listDriverVehicleData(DriverVehicleLinkVO driverVehicleLinkVO);

	/**
	 * 司机绑定车辆删除
	 * 
	 * @param driverVehicleDeleteVOs
	 */
	void deleteDriverVehicleData(List<DriverVehicleDeleteVO> driverVehicleDeleteVOs);

	/**
	 * 司机证件关联查看
	 * 
	 * @param driverPaperLinkCheckVO
	 */
	List<DriverPaperLinkCheckDTO> listDriverPaperLinkCheckData(DriverPaperLinkCheckVO driverPaperLinkCheckVO);

	/**
	 * 司机证件资料查看
	 * 
	 * @param driverPaperCheckVO
	 */
	DriverPaperCheckDTO getDriverPaperCheckData(DriverPaperCheckVO driverPaperCheckVO);

	/**
	 * 司机证件资料新增
	 * 
	 * @param driverPaperAddVO
	 */
	void addDriverPaperData(DriverPaperAddVO driverPaperAddVO);

	/**
	 * 司机证件资料修改
	 * 
	 * @param driverPaperModifyVO
	 */
	void modifyDriverPaperData(DriverPaperModifyVO driverPaperModifyVO);

	/**
	 * 司机证件资料是否启用
	 * 
	 * @param driverPaperWhetherEnableVO
	 */
	void whetherEnableDriverPaperData(DriverPaperWhetherEnableVO driverPaperWhetherEnableVO);

	/**
	 * 司机证件资料删除
	 * 
	 * @param driverPaperDeleteVOs
	 */
	void deleteDriverPaperData(List<DriverPaperDeleteVO> driverPaperDeleteVOs);

	/**
	 * 司机批量导入
	 * 
	 * @param file
	 */
	void batchImportDriverData(MultipartFile file,String importBatchNumber) throws Exception;

	/**
	 * 司机导入撤销
	 * 
	 * @param batchno
	 */
	void rollbackData(String batchno);

	/**
	 * 司机导入分页查询
	 * 
	 * @param importPageVO
	 * @return
	 */
	RestMessage<Object> pageDriverByImportBatchNumberData(ImportPageVO importPageVO);

	/**
	 * 司机资料弹窗
	 *
	 * @param driverPopupVO
	 * @return
	 */
	Page<DriverPopupDTO> popupDriverSelfRegData(DriverPopupVO driverPopupVO);

}
