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

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeviceByOneDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeviceDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DeviceViewDTO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeviceAddVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeviceDeleteVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DevicePopVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeviceUpdateVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeviceVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeviceViewVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DeviceWhetherEnableVO;
import com.prolog.rdc.tms.model.vo.xlsimport.DeviceImportVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 
 *
 * 车队管理-设备资料服务层
 *
 * @className :DeviceService
 * @author :zsj
 * @creationTime :2022/04/18
 * @description :
 *
 * @modifier :zsj
 * @modifyTime :2022/04/18
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface DeviceService {
	/**
	 * 设备资料分页查询
	 * 
	 * @param vo
	 * @return
	 */
	Page<DeviceDTO> query(DeviceVO vo);

	/**
	 * 设备资料弹窗
	 * 
	 * @param vo
	 */
	Page<DeviceDTO> pop(DevicePopVO vo);

	/**
	 * 车辆设备查询
	 * @param vo
	 * @return
	 */
	Page<DeviceDTO> queryByVehicle(DeviceVO vo);

	/**
	 * 设备资料查看
	 * 
	 * @param vo
	 * @return
	 */
	DeviceViewDTO view(DeviceViewVO vo);

	/**
	 * 设备资料新增
	 * 
	 * @param vo
	 */
	void save(DeviceAddVO vo);

	/**
	 * 设备资料修改
	 * 
	 * @param vo
	 */
	void update(DeviceUpdateVO vo);

	/**
	 * 设备资料是否启用
	 * 
	 * @param deviceWhetherEnableVO
	 */
	void whetherEnable(DeviceWhetherEnableVO deviceWhetherEnableVO);

	/**
	 * 设备资料删除
	 * 
	 * @param deviceDeleteVO
	 */
	void delete(DeviceDeleteVO deviceDeleteVO);

	/**
	 * 设备单个查询
	 * 
	 * @param id
	 */
	DeviceByOneDTO getOne(Long id);

	/**
	 * 导入设备
	 * @param file
	 */
	void importDevice(MultipartFile file);

	/**
	 * 保存导入设备数据
	 * @param importVOs
	 * @param importBatchNumber
	 */
	void saveImportDevice(List<DeviceImportVO> importVOs, String importBatchNumber);

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

	/**
	 * 设备资料分页查询
	 *
	 * @param vo
	 * @return
	 */
	Page<DeviceDTO> deviceQuery(DeviceVO vo);
}
