package cn.ey.biz.module.system.service.rate;

import cn.ey.biz.module.system.api.rate.dto.*;

import java.util.List;

/**
 * 财务费率 Service
 *
 * @author ShiJie-SJ.Li
 * @date 2023/06/13
 */
public interface FinanceRateService {

    /**
     * 通过GPN获取费率
     *
     * @param rateForGpnReqDTO 率gpn点播dto
     * @return {@link List}<{@link RateResDTO}>
     */
    List<RateResDTO> getRateForGpn(RateForGpnReqDTO rateForGpnReqDTO);

    /**
     * 通过配置获取FIRM费率
     *
     * @param rateForFirmConfReqDTO 率公司配置要求dto
     * @return {@link List}<{@link RateResDTO}>
     */
    List<RateResDTO> getFirmRateForConfig(RateForFirmConfReqDTO rateForFirmConfReqDTO);


    /**
     * 通过配置获取费GDS率
     *
     * @param rateForGdsConfReqDTO 率为gds conf点播dto
     * @return {@link List}<{@link RateResDTO}>
     */
    List<RateResDTO> getGdsRateForConfig(RateForGdsConfReqDTO rateForGdsConfReqDTO);


    /**
     * 获取费用分摊系数
     *
     * @param feeSharingFactorReqDTO 费用分摊系数参数
     * @return {@link FeeSharingFactorReqDTO}
     */
    FeeSharingFactorResDTO getFeeSharingFactor(FeeSharingFactorReqDTO feeSharingFactorReqDTO);

    /**
     * 获取人员费率以及Surcharges（TimeSheet）
     *
     * @param rateReqDTO 率要求dto
     * @return {@link List}<{@link RateResDTO}>
     */
    List<RateResDTO> getRateForDateScope(RateReqDTO rateReqDTO);
}
