
# 1. 计算交叉汇率
## 1.1 接口描述
接口名:kd.bos.i18n.api.IExchangeRateService.getCrossRate(List<Map<String,Object>> exchangeRateList)
根据已有汇率计算交叉汇率。
## 1.2 输入参数
| **参数名称** | **数据类型** | **必填** | **说明** |
| ------------------------------ | ------------------------ | -------- | ------------------------- |
| exchangeRateList | List<Map<String,Object>> | 是 | 需要计算的汇率数组 |
| exchangeRateList[0] | Map<String,Object> | 是 | 汇率参数集合 |
| exchangeRateList[0].exctable | Long | 是 | 汇率表 |
| exchangeRateList[0].orgcur | Long | 是 | 原币 |
| exchangeRateList[0].cur | Long | 是 | 目标币 |
| exchangeRateList[0].excval | String | 是 | 直接汇率 |
| exchangeRateList[0].effectdate | String | 是 | 生效日期 格式:yyyy-MM-dd |
| exchangeRateList[0].expirydate | String | 否 | 失效日期 格式:yyyy-MM-dd |
**入参示例**:
```
[
{
"exctable": 1546279945058173952,
"orgcur": 6,
"cur": 1,
"excval": "6.888000000000",
"effectdate": "2023-03-22"
},
{
"exctable": 1546279945058173952,
"orgcur": 7,
"cur": 1,
"excval": "7.417700000000",
"effectdate": "2023-03-22"
},
{
"exctable": 1546279945058173952,
"orgcur": 8,
"cur": 1,
"excval": "8.4247000000",
"effectdate": "2023-03-22"
}
]
```
## 1.3 输出参数
| **参数名称** | **数据类型** | **说明** |
| ------------------------ | ------------------------ | ------------------------- |
| | List<Map<String,Object>> | 计算成功的交叉汇率数组 |
| | Map<String,Object> | 交叉汇率参数集合 |
| List[0].exctable | Long | 汇率表 |
| List[0].orgcur | Long | 原币 |
| List[0].cur | Long | 目标币 |
| List[0].excval | String | 直接汇率 |
| List[0].effectdate | String | 生效日期 格式:yyyy-MM-dd |
| List[0].expirydate | String | 失效日期 格式:yyyy-MM-dd |
| List[0].computationrules | String | 计算规则 |
**返回值示例**:
```
[
{
"exctable": 1546279945058173952,
"orgcur": 6,
"cur": 8,
"excval": "0.817596",
"effectdate": "2023-03-22",
"expirydate": null,
"computationrules": "USD/CNY,GBP/CNY"
},
{
"exctable": 1546279945058173952,
"orgcur": 6,
"cur": 7,
"excval": "0.928590",
"effectdate": "2023-03-22",
"expirydate": null,
"computationrules": "USD/CNY,EUR/CNY"
}
]
```
## 1.4 代码示例
```java
//方式一 数据未入库
List<Map<String, Object>> exchangeRateList = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
Map<String, Object> map2 = new HashMap<>();
Map<String, Object> map3 = new HashMap<>();
map1.put("exctable",1546279945058173952L);
map1.put("orgcur",6L);
map1.put("cur",1L);
map1.put("excval","6.888000000000");
map1.put("effectdate","2023-03-22");
map2.put("exctable",1546279945058173952L);
map2.put("orgcur",7L);
map2.put("cur",1L);
map2.put("excval","7.417700000000");
map2.put("effectdate","2023-03-22");
map3.put("exctable",1546279945058173952L);
map3.put("orgcur",8L);
map3.put("cur",1L);
map3.put("excval","8.4247000000");
map3.put("effectdate","2023-03-22");
exchangeRateList.add(map1);
exchangeRateList.add(map2);
exchangeRateList.add(map3);
List<Map<String, Object>> result1 = I18nServiceHelper.getCrossRate(exchangeRateList);
//方式二 数据已入库
List<Long> exchangeRateListIds = new ArrayList<>();
exchangeRateListIds.add(1617484034563231744L);
exchangeRateListIds.add(1617484034563231745L);
exchangeRateListIds.add(1617484034563231746L);
List<Map<String, Object>> result2 = I18nServiceHelper.getCrossRateByIds(exchangeRateListIds);
```
# 2. 查询是否启用间接汇率
## 2.1 接口描述
接口名:kd.bos.servicehelper.basedata.BaseDataServiceHelper.isEnableIndirectRateConversion()
查询是否启用间接汇率
## 2.2 输入参数
无。
## 2.3 输出参数
返回结果为 **boolean** 类型的值,**true** 即为开启,**false** 即为关闭。
## 2.4 代码示例
```java
boolean enableIndirectRate = BaseDataServiceHelper.isEnableIndirectRateConversion();
```
# 3. 查询币种对换算方式
## 3.1 接口描述
接口名:kd.bos.servicehelper.basedata.BaseDataServiceHelper.getRateConversionConfig(Long originalCurrency, Long targetCurrency, Date conversionDate)
根据原币、目标币、折算日期,获取当前币种对启用的换算方式。
## 3.2 输入参数
| **字段** | **必填** | **类型** | **示例** | **说明** |
| ---------------- | -------- | -------- | ---------- | -