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.VehicleTypeCheckDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.VehicleTypePagingQueryDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.VehicleTypePopupDTO;
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;

/**
 * 车队管理-车型管理服务层
 * 
 * @author Eton Woo
 * @date 2022/03/11
 */
public interface VehicleTypeService {

	/**
	 * 车型资料分页查询
	 * 
	 * @param vehicleTypePagingQueryVO
	 * @return
	 */
	Page<VehicleTypePagingQueryDTO> pageVehicleTypeData(VehicleTypePagingQueryVO vehicleTypePagingQueryVO);

	/**
	 * 车型资料查看
	 * 
	 * @param vehicleTypeCheckVO
	 * @return
	 */
	VehicleTypeCheckDTO getVehicleTypeData(VehicleTypeCheckVO vehicleTypeCheckVO);

	/**
	 * 根据载重载方查询车型资料
	 * @param vehicleTypeCheckVO
	 * @return
	 */
	VehicleTypeCheckDTO queryVehicleTypeByWeightVolume(VehicleTypeCheckVO vehicleTypeCheckVO);

	/**
	 * 车型资料是否启用
	 * 
	 * @param vehicleTypeWhetherEnableVO
	 * @throws Exception
	 */
	void whetherEnableVehicleTypeData(VehicleTypeWhetherEnableVO vehicleTypeWhetherEnableVO) throws Exception;

	/**
	 * 车型资料新增
	 * 
	 * @param vehicleTypeAddVO
	 * @throws Exception
	 */
	void addVehicleTypeData(VehicleTypeAddVO vehicleTypeAddVO) throws Exception;

	/**
	 * 车型资料修改
	 * 
	 * @param vehicleTypeModifyVO
	 * @throws Exception
	 */
	void modifyVehicleTypeData(VehicleTypeModifyVO vehicleTypeModifyVO) throws Exception;

	/**
	 * 车型资料弹窗
	 * 
	 * @param vehicleTypePopupVO
	 * @return
	 */
	Page<VehicleTypePopupDTO> popupVehicleTypeData(VehicleTypePopupVO vehicleTypePopupVO);

	/**
	 * 车型资料删除
	 * 
	 * @param list
	 */
	void deleteVehicleTypeData(List<VehicleTypeDeleteVO> list);

	/**
	 * 车型导入
	 * 
	 * @param file
	 */
	void batchImportVehicleTypeData(MultipartFile file,String importBatchNumber) throws Exception;

	/**
	 * 车型导入撤销
	 * 
	 * @param batchno
	 */
	void rollbackData(String batchno);

	/**
	 * 车型导入分页查询
	 * 
	 * @param importPageVO
	 * @return
	 */
	RestMessage<Object> pageVehicleTypeByImportBatchNumberData(ImportPageVO importPageVO);

	/**
	 * 根据车型名称查看车型资料
	 *
	 * @param vehicleTypeCheckVO
	 * @return
	 */
	VehicleTypeCheckDTO getVehicleTypeByNameData(VehicleTypeCheckVO vehicleTypeCheckVO);

}
