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

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.fleetManagement.ContainerDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.ContainerViewDTO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerAddVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerDeleteVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerPopVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerUpdateVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerViewVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.ContainerWhetherEnableVO;
import com.prolog.rdc.tms.model.vo.xlsimport.ContainerImportVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 
 *
 * 车队管理-容器资料服务层
 *
 * @className :ContainerService
 * @author :fanzw
 * @creationTime :2022/04/18
 * @description :
 *
 * @modifier :fanzw
 * @modifyTime :2022/04/18
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface ContainerService {
	/**
	 * 容器资料分页查询
	 * 
	 * @param vo
	 * @return
	 */
	Page<ContainerDTO> query(ContainerVO vo);

	/**
	 * 容器资料弹窗
	 * 
	 * @param vo
	 * @return
	 */
	Page<ContainerDTO> pop(ContainerPopVO vo);


	/**
	 * 车辆容器查询
	 * @param vo
	 * @return
	 */
	Page<ContainerDTO> queryByVehicle(ContainerVO vo);

	/**
	 * 容器资料查看
	 * 
	 * @param vo
	 * @return
	 */
	ContainerViewDTO view(ContainerViewVO vo);

	/**
	 * 容器资料新增
	 * 
	 * @param vo
	 * @return
	 */
	void save(ContainerAddVO vo);

	/**
	 * 容器资料修改
	 * 
	 * @param vo
	 * @return
	 */
	void update(ContainerUpdateVO vo);

	/**
	 * 容器资料是否启用
	 * 
	 * @param containerWhetherEnableVO
	 * @return
	 */
	void whetherEnable(ContainerWhetherEnableVO containerWhetherEnableVO);

	/**
	 * 容器资料删除
	 * 
	 * @param containerDeleteVO
	 * @return
	 */
	void delete(ContainerDeleteVO containerDeleteVO);

	/**
	 * 导入容器
	 * @param file
	 */
	void importContainer(MultipartFile file);

	/**
	 * 保存导入容器数据
	 * @param importVOs
	 * @param importBatchNumber
	 */
	void saveImportContainer(List<ContainerImportVO> importVOs, String importBatchNumber);

	/**
	 * 设备导入撤销
	 * @param batchno
	 */
	void rollbackData(String batchno);

	/**
	 * findByIdList
	 * @param idList
	 * @return
	 */
	List<ContainerDTO> findByIdList(List<Long> idList);
}
