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

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.prolog.framework.common.message.RestMessage;
import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeliverymanCheckDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeliverymanPagingQueryDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeliverymanPaperCheckDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeliverymanPaperLinkCheckDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeliverymanPopupDTO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ImportPageVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanAddVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanCheckVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanDeleteVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanModifyVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPagingQueryVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPaperAddVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPaperCheckVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPaperDeleteVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPaperLinkCheckVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPaperModifyVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPaperWhetherEnableVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanPopupVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeliverymanWhetherEnableVO;

/**
 * 
 *
 * 车队管理-送货员管理服务层
 *
 * @className :DeliverymanService
 * @author :fanzw
 * @creationTime :2022/03/16
 * @description :
 *
 * @modifier :fanzw
 * @modifyTime :2022/03/16
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface DeliverymanService {

	/**
	 * 送货员资料分页查询
	 * 
	 * @param deliverymanPagingQueryVO
	 * @return
	 */
	Page<DeliverymanPagingQueryDTO> pageDeliverymanData(DeliverymanPagingQueryVO deliverymanPagingQueryVO);

	/**
	 * 送货员资料弹窗
	 * 
	 * @param deliverymanPopupVO
	 * @return
	 */
	Page<DeliverymanPopupDTO> popupDeliverymanData(DeliverymanPopupVO deliverymanPopupVO);

	/**
	 * 送货员资料查看
	 * 
	 * @param deliverymanCheckVO
	 * @return
	 */
	DeliverymanCheckDTO getDeliverymanData(DeliverymanCheckVO deliverymanCheckVO);

	/**
	 * 送货员资料是否启用
	 * 
	 * @param deliverymanWhetherEnableVO
	 */
	void whetherEnableDeliverymanData(DeliverymanWhetherEnableVO deliverymanWhetherEnableVO);

	/**
	 * 送货员资料新增
	 * 
	 * @param deliverymanAddVO
	 */
	String addDeliverymanData(DeliverymanAddVO deliverymanAddVO);

	/**
	 * 送货员资料修改
	 * 
	 * @param deliverymanModifyVO
	 */
	void modifyDeliverymanData(DeliverymanModifyVO deliverymanModifyVO);

	/**
	 * 送货员资料删除
	 *
	 * @param list
	 */
	void deleteDeliverymanData(List<DeliverymanDeleteVO> list);

	/**
	 * 送货员证件关联查看
	 * 
	 * @param deliverymanPaperLinkCheckVO
	 */
	List<DeliverymanPaperLinkCheckDTO> listDeliverymanPaperLinkCheckData(DeliverymanPaperLinkCheckVO deliverymanPaperLinkCheckVO);

	/**
	 * 送货员证件资料查看
	 * 
	 * @param deliverymanPaperCheckVO
	 */
	DeliverymanPaperCheckDTO getDeliverymanPaperCheckData(DeliverymanPaperCheckVO deliverymanPaperCheckVO);

	/**
	 * 送货员证件资料新增
	 * 
	 * @param deliverymanPaperAddVO
	 */
	void addDeliverymanPaperData(DeliverymanPaperAddVO deliverymanPaperAddVO);

	/**
	 * 送货员证件资料修改
	 * 
	 * @param deliverymanPaperModifyVO
	 */
	void modifyDeliverymanPaperData(DeliverymanPaperModifyVO deliverymanPaperModifyVO);

	/**
	 * 送货员证件资料是否启用
	 * 
	 * @param deliverymanPaperWhetherEnableVO
	 */
	void whetherEnableDeliverymanPaperData(DeliverymanPaperWhetherEnableVO deliverymanPaperWhetherEnableVO);

	/**
	 * 送货员证件资料删除
	 * 
	 * @param deliverymanPaperDeleteVOs
	 */
	void deleteDeliverymanPaperData(List<DeliverymanPaperDeleteVO> deliverymanPaperDeleteVOs);

	/**
	 * 送货员批量导入
	 * 
	 * @param file
	 */
	void batchImportDeliverymanData(MultipartFile file,String importBatchNumber) throws Exception;

	/**
	 * 送货员导入撤销
	 * 
	 * @param batchno
	 */
	void rollbackData(String batchno);

	/**
	 * 送货员导入分页查询
	 * 
	 * @param importPageVO
	 * @return
	 */
	RestMessage<Object> pageDeliverymanByImportBatchNumberData(ImportPageVO importPageVO);

}
