package com.hzs.system.base;

import com.hzs.common.core.domain.R;
import com.hzs.common.domain.system.base.BdCubasdoc;
import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.domain.system.base.ext.BdCubasdocExt;
import com.hzs.common.domain.system.sys.SysCorp;
import com.hzs.system.base.dto.CurrencyDTO;

import java.util.Collection;
import java.util.List;
import java.util.Set;

public interface ICurrencyServiceApi {

    /**
     * 根据国家获得币种
     *
     * @param pkCountry 国家
     */
    R<CurrencyDTO> getCurrency(Integer pkCountry);

    /**
     * 根据国家列表获取币种列表
     *
     * @param pkCountryList 国家ID列表
     * @return
     */
    R<List<CurrencyDTO>> getCurrencyByPkCountryList(Set<Integer> pkCountryList);

    /**
     * 查询需要的所有汇率
     */
    R<List<CurrencyDTO>> getCurrencyById(Set<Integer> currencyIdSet);

    /**
     * 根据id查询汇率
     *
     * @param currencyId
     * @return
     */
    R<CurrencyDTO> getCurrencyByPkId(Integer currencyId);

    /**
     * 根据省查询对应的发货仓库
     */
    R<BdStorehouse> queryBdStorehouseByProvince(Integer province, Integer... type);

    /**
     * 根据省查询对应的发货仓库
     */
    R<BdStorehouse> queryBdStorehouseById(Integer pkId);

    /**
     * 根据省查询对应的发货仓库
     *
     * @param provinceList 省列表
     * @return
     */
    R<List<BdStorehouse>> queryBdStorehouseMapByProvince(Collection<Integer> provinceList);

    /**
     * 根据id 查询所属历史币种
     *
     * @return
     */
    R<CurrencyDTO> getByHistoryPkId(Integer currencyId);

    /**
     * 查询所有的币种
     */
    R<List<CurrencyDTO>> findAll();

    /**
     * 提供查询供应商的dubbo调用
     */
    R<BdCubasdocExt> queryBdCubasdocById(Integer pkId, Integer pkCountry);

    /**
     * 提供查询供应商的dubbo调用
     */
    R<BdCubasdocExt> queryBdCustomerById(Integer pkId, Integer pkCountry);

    /**
     * 提供查询采购组织的dubbo调用
     */
    R<SysCorp> querySysCorp(Integer pkId, Integer pkCountry);

    /**
     * 根据仓库主键查询仓库
     */
    R<List<BdStorehouse>> queryStorehouseByIds(Set<Integer> storehouseIdSet, Integer pkCountry, Integer pkCorp);
}
