聚水潭其他出库单对接金蝶其他出库单的技术案例分享
在本文中,我们将详细介绍如何使用轻易云数据集成平台实现聚水潭(Jushuitan)中的其他出库单与金蝶云星空(Kingdee Cloud)的其他出库单数据对接。具体方案名称为“聚水潭其他出库单对接金蝶其他出库单ok”。
在这个方案中,我们面对多个挑战,如确保数据不漏单、处理大量数据快速写入以及应对接口分页和限流问题。同时,还要解决不同系统间的数据格式差异,并保证异常处理和错误重试机制的可靠性。
确保集成聚水潭数据不漏单
为了确保所有的聚水潭其它出库订单能够准确无误地传输到金蝶云星空上,定期抓取和实时监控是关键。在此过程中,我们调用了聚水潭提供的API other.inout.query
来获取最新的订单信息,并按照预设的时间间隔进行批量拉取,从根本上杜绝了由于网络波动或接口响应延迟导致的数据遗漏问题。
大量数据快速写入到金蝶云星空
针对从聚水潭系统拉取的大量订单记录,需要高效地向金蝶云星空 API batchSave
写入。这需要我们使用优化后的批量处理策略,以最大化接口性能并减少因多次请求带来的开销。此外,通过精细化管理每个写操作,从而提高整体过程中的吞吐效率。
处理分页和限流问题
在实际应用中,常常面临API返回结果具有分页限制的问题。对于这种情况,在调用 other.inout.query
接口时,通过合理设置分页参数并结合限流控制机制,有效地规避了请求被封锁或者超时的问题,提高了整个过程的稳定性与可持续性。
通过这些特性的综合运用,实现了一个高效、可靠且易于维护的数据集成流程,为企业提升业务透明度和决策效率打下坚实基础。后续部分将深入探讨具体实施步骤及技术细节,包括如何实现定制化的数据映射,以及异常情况发生时自动重试等重要功能。
调用聚水潭接口other.inout.query获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭的other.inout.query
接口,并对返回的数据进行加工处理。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是聚水潭other.inout.query
接口的具体配置:
{
"api": "other.inout.query",
"method": "POST",
"number": "io_id",
"id": "io_id",
"pagination": {
"pageSize": 50
},
"condition": [
[
{
"field": "type",
"logic": "eq",
"value": "其它出库"
}
]
],
"idCheck": true,
"request": [
{
"field": "modified_begin",
"label": "修改起始时间",
"type": "string",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "modified_end",
"label": "修改结束时间",
"type": "string",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "so_ids",
"label": "指定线上订单",
"type": "string"
},
{
"field": "types",
"label": "单据类型",
"type": "string",
...
请求参数解析
-
modified_begin 和 modified_end:这两个字段用于指定查询的时间范围,分别代表修改起始时间和结束时间。通过使用模板变量
{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
,可以动态地设置这些值,以确保每次同步时都能获取到最新的数据。 -
so_ids:指定线上订单ID,可以为空或根据需求传入特定订单ID。
-
types:单据类型字段,支持多种类型如“其它退货”、“其它出库”、“其它进仓”。这里我们使用了
ConvertObjectParser
解析器,将传入的对象转换为所需格式。 -
status:单据状态字段,这里默认设置为“Confirmed”,表示只查询已生效的单据。
-
page_index 和 page_size:分页参数,用于控制每次请求返回的数据量。默认设置为每页50条记录。
数据请求与清洗
在发送请求后,平台会接收到聚水潭返回的数据。这些数据通常是原始且未经处理的,需要进行清洗和转换以适应目标系统的要求。
-
数据清洗:
- 检查返回的数据是否包含所有必需字段,如
io_id
、modified_time
等。 - 对于不符合条件的数据进行过滤,例如状态不是“Confirmed”的记录。
- 检查返回的数据是否包含所有必需字段,如
-
数据转换:
- 将聚水潭返回的数据字段映射到目标系统所需的字段。例如,将聚水潭的单据类型转换为金蝶系统所需的格式。
- 使用自定义解析器对复杂字段进行处理,如使用
ConvertObjectParser
将对象类型字段转换为字符串或其他格式。
实例代码示例
以下是一个简化的Python示例代码,用于演示如何调用接口并处理返回的数据:
import requests
import datetime
# 设置请求参数
params = {
'modified_begin': (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
'modified_end': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'status': 'Confirmed',
'page_index': 1,
'page_size': 50
}
# 发起POST请求
response = requests.post('https://api.jushuitan.com/other.inout.query', json=params)
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
cleaned_data = []
for record in data['records']:
if record['status'] == 'Confirmed':
cleaned_record = {
'id': record['io_id'],
'type': record['type'],
'date': record['modified_time']
}
cleaned_data.append(cleaned_record)
# 输出清洗后的数据
print(cleaned_data)
else:
print(f"Error: {response.status_code}")
通过上述步骤,我们成功实现了从聚水潭获取并加工数据,为后续的数据写入和集成奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展这些操作。
轻易云数据集成平台:ETL转换与金蝶云星空API接口对接技术案例
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。
API接口配置
在本案例中,我们将聚水潭其他出库单的数据对接到金蝶云星空的其他出库单。我们使用的API接口为batchSave
,请求方法为POST
。以下是具体的元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD01_SYS"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{io_id}"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FPickOrgId","label":"领用组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"GENERAL"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{io_date}"},
{"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
{"field":"FOwnerIdHead","label":"货主","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
],
"otherRequest":[
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_MisDelivery"},
{"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "value": false},
{"field": "IsVerifyBaseDataField", "label": "", type: "", describe: "", parser: { name: "", params: "" }, value: "" },
]
}
数据字段解析与转换
-
FBillTypeID(单据类型):
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 固定值:
QTCKD01_SYS
-
FBillNo(单据编号):
- 类型:字符串
- 值:
{io_id}
-
FStockOrgId(库存组织):
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 固定值:
100
-
FPickOrgId(领用组织):
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 固定值:
100
-
FStockDirect(库存方向):
- 类型:字符串
- 固定值:
GENERAL
-
FDate(日期):
- 类型:字符串
- 值:
{io_date}
-
FOwnerTypeIdHead(货主类型):
- 类型:字符串
- 固定值:
BD_OwnerOrg
-
FOwnerIdHead(货主):
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 动态值,通过SQL查询获取货主ID。
-
备注、联系人、联系电话、联系地址等字段:
- 类型均为字符串,直接从源数据中获取相应字段值。
-
明细信息(FEntity): 包含多个子字段,如物料编码、实发数量、发货仓库等。这些子字段需要逐一解析和转换。例如:
{ "field": "FMaterialId", ... ... ... ... ...
- `FMaterialId`: 物料编码,通过 `ConvertObjectParser` 转换。
- `FCMKBarCode`: 零售条形码,直接从源数据获取。
- `FLot`: 批号,通过 `ConvertObjectParser` 转换。
- `FProduceDate`: 生产日期,直接从源数据获取。
- `FExpiryDate`: 有效期至,直接从源数据获取。
#### 请求示例
根据上述配置,我们可以构建一个完整的请求示例:
```json
{
...
...
...
...
...
}
通过上述配置和请求示例,我们实现了将聚水潭其他出库单的数据成功对接到金蝶云星空其他出库单。轻易云数据集成平台提供了强大的元数据配置能力,使得复杂的数据转换过程变得简单高效。