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

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.IntfErrorLogDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerApprovalQueryDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerByEncodingNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerByIdsDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerPagingQueryDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerPopupDTO;
import com.prolog.rdc.tms.model.dto.basicData.UserCargoOwnerPopupDTO;
import com.prolog.rdc.tms.model.vo.IntfCargoOwnerSaveVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerAddVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerApprovalQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerApprovalVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerBatchDeleteVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerByEncodingNameVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerByIdsVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerCheckVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerCopyVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerGeocodingVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerModifyVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerPagingQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerPopupVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerProcessApprovalVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerSummitApprovalVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerWhetherEnableVO;
import com.prolog.rdc.tms.model.vo.basicData.UserCargoOwnerPopupVO;

/**
 * 
 *
 * 基础数据-货主管理服务层
 *
 * @className :CargoOwnerService
 * @author :fanzw
 * @creationTime :2022/02/25
 * @description :
 *
 * @modifier :fanzw
 * @modifyTime :2022/02/25
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface CargoOwnerService {

	/**
	 * 货主资料分页查询
	 * 
	 * @param cargoOwnerPagingQueryVO
	 * @return
	 */
	Page<CargoOwnerPagingQueryDTO> pageCargoOwnerData(CargoOwnerPagingQueryVO cargoOwnerPagingQueryVO);

	/**
	 * 货主资料查看
	 * 
	 * @param cargoOwnerCheckVO
	 * @return
	 */
	CargoOwnerCheckDTO getCargoOwnerData(CargoOwnerCheckVO cargoOwnerCheckVO);

	/**
	 * 货主资料弹窗
	 * 
	 * @param cargoOwnerPopupVO
	 * @return
	 */
	Page<CargoOwnerPopupDTO> popupCargoOwnerData(CargoOwnerPopupVO cargoOwnerPopupVO);

	/**
	 * 根据货主名称查询货主资料
	 *
	 * @param cargoOwnerPopupVO
	 * @return
	 */
	Page<CargoOwnerPopupDTO> popupCargoOwnerDataByName(CargoOwnerPopupVO cargoOwnerPopupVO);

	/**
	 * 用户货主资料弹窗
	 * 
	 * @param userCargoOwnerPopupVO
	 * @return
	 */
	Page<UserCargoOwnerPopupDTO> popupUserCargoOwnerData(UserCargoOwnerPopupVO userCargoOwnerPopupVO);

	/**
	 * 根据货主ID集合分页查询
	 * 
	 * @param cargoOwnerByIdsVO
	 * @return
	 */
	Page<CargoOwnerByIdsDTO> pageCargoOwnerByIdsData(CargoOwnerByIdsVO cargoOwnerByIdsVO);

	/**
	 * 货主资料新增
	 * 
	 * @param cargoOwnerAddVO
	 */
	void addCargoOwnerData(CargoOwnerAddVO cargoOwnerAddVO);

	/**
	 * 货主资料复制
	 * 
	 * @param cargoOwnerCopyVO
	 */
	void copyCargoOwnerData(CargoOwnerCopyVO cargoOwnerCopyVO);

	/**
	 * 货主资料修改
	 * 
	 * @param cargoOwnerModifyVO
	 */
	void modifyCargoOwnerData(CargoOwnerModifyVO cargoOwnerModifyVO);

	/**
	 * 货主资料批量删除
	 * 
	 * @param cargoOwnerBatchDeleteVOs
	 */
	void batchDeleteCargoOwnerData(List<CargoOwnerBatchDeleteVO> cargoOwnerBatchDeleteVOs);

	/**
	 * 货主资料是否启用
	 * 
	 * @param cargoOwnerWhetherEnableVO
	 */
	void whetherEnableCargoOwnerData(CargoOwnerWhetherEnableVO cargoOwnerWhetherEnableVO);

	/**
	 * 货主资料地址解析
	 * 
	 * @param cargoOwnerGeocodingVO
	 */
	void geocodingData(CargoOwnerGeocodingVO cargoOwnerGeocodingVO);

	/**
	 * 根据货主编码名称查询货主资料
	 * 
	 * @param cargoOwnerByEncodingNameVO
	 */
	CargoOwnerByEncodingNameDTO getCargoOwnerByEncodingNameData(CargoOwnerByEncodingNameVO cargoOwnerByEncodingNameVO);

	/**
	 * 货主流程审批 撤回
	 *
	 * @param cargoOwnerProcessApprovalVO
	 */
	void retractApproval(CargoOwnerProcessApprovalVO cargoOwnerProcessApprovalVO);

	/**
	 * 货主流程审批 作废
	 *
	 * @param cargoOwnerProcessApprovalVO
	 */
	void invalidApproval(CargoOwnerProcessApprovalVO cargoOwnerProcessApprovalVO);

	/**
	 * 货主流程审批 提交
	 *
	 * @param cargoOwnerSummitApprovalVO
	 */
	void summitApproval(CargoOwnerSummitApprovalVO cargoOwnerSummitApprovalVO);

	/**
	 * 货主流程审批 审核
	 *
	 * @param cargoOwnerApprovalVO
	 */
	void approval(CargoOwnerApprovalVO cargoOwnerApprovalVO);

	/**
	 * 货主资料和流程审批的查询
	 *
	 * @param cargoOwnerApprovalQueryVO
	 */
	CargoOwnerApprovalQueryDTO approvalQuery(CargoOwnerApprovalQueryVO cargoOwnerApprovalQueryVO);

	/**
	 * 货主接口转TMS
	 *
	 * @param
	 */
	List<IntfErrorLogDTO> saveCargoOwnerInterfaceData(List<IntfCargoOwnerSaveVO> intfCargoOwnerSaveVOs);

	/**
	 * 根据货主名称返回货主资料
	 *
	 * @param cargoOwnerCheckVO
	 * @return
	 */
	CargoOwnerCheckDTO getCargoOwnerByNameData(CargoOwnerCheckVO cargoOwnerCheckVO);
}
