### 聚水潭数据集成到KIS私有云案例分享
在现代企业的数字化转型过程中,系统对接与数据集成是确保业务流程高效运作的关键环节。本文将深入探讨一个具体的系统集成案例:如何通过轻易云数据集成平台,将聚水潭(Jushuitan)的采购入库单数据无缝引入金蝶KIS私有云,从而完成从采购到库存管理的一体化操作。
我们所实施的方案名为“聚水潭-采购入库单——>KIS-采购入库单Done”,旨在实现如下目标:
1. 定时可靠地抓取并处理聚水潭接口`/open/purchasein/query`的数据;
2. 批量快速写入至KIS私有云,通过API `/koas/app007104/api/purchasereceipt/create`进行数据录入;
3. 解决两大系统之间的数据格式差异,并实现定制化的数据映射;
4. 处理分页和限流问题,以保证大量订单数据不漏单且稳定传输;
首先,我们需要确保通过API接口获取到完整且准确的采购入库单信息。在这一过程中,轻易云提供了实时监控与日志记录功能,用于追踪每一次API调用及其响应结果,从而能够快速排查异常和执行错误重试机制。这样可以大幅提升对接过程中的可靠性。尤其是在批量处理场景下,这一点尤为重要,以便避免因接口限流或分页导致的数据丢失问题。
此外,在设计方案时,我们特别关注了两者间的数据格式差异。这一步骤涉及复杂的数据映射转换工作,包括字段名称、类型以及可能存在的层级结构变化等。利用轻易云的平台特性,可以方便地配置这些转换规则,确保每一条记录都能正确匹配至目的端系统。此外,还实现了自定义脚本来增强特殊需求,如根据业务逻辑动态调整某些字段值,提高了整体方案的灵活性与适应性。
此技术案例不仅展示了如何高效、安全地进行系统对接,也强调了全面生命周期管理的重要性,为类似项目提供宝贵经验。在后续内容中,我们将详细解析具体配置步骤和注意事项,让您更清晰了解整个过程如何落地实施。
![如何对接用友BIP接口](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image)
### 调用聚水潭接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭的采购入库单接口 `/open/purchasein/query`,并对获取的数据进行初步加工。
#### 接口调用配置
首先,我们需要配置元数据以便正确调用聚水潭的接口。以下是元数据配置的详细内容:
```json
{
"api": "/open/purchasein/query",
"effect": "QUERY",
"method": "POST",
"number": "io_id",
"id": "io_id",
"name": "io_id",
"idCheck": true,
"request": [
{"field":"page_index","label":"第几页","type":"int","describe":"从1开始","value":"1"},
{"field":"page_size","label":"每页数量","type":"int","describe":"最大不超过50","value":"30"},
{"field":"modified_begin","label":"修改起始时间","type":"string","describe":"起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"modified_end","label":"修改结束时间","type":"string","describe":"起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空","value":"{{CURRENT_TIME|datetime}}"},
{"field":"po_ids","label":"采购单号列表","type":"string","describe":"与修改时间不能同时为空.采购单号最大不能超过30条"},
{"field":"io_ids","label":"采购入库单号列表","type":"string","describe":"与修改时间不能同时为空.采购入库单号最大不能超过30条"},
{"field":"so_ids","label":"线上单号","type":"string","describe":"与修改时间不能同时为空"}
],
"autoFillResponse": true,
"condition": [
[{"field": "wms_co_id", "logic": "in", "value": "14132797,14133381,13090941"}]
]
}
```
#### 请求参数详解
1. **page_index**: 用于分页查询,表示当前请求的是第几页的数据,从1开始。
2. **page_size**: 每页返回的数据条数,最大不超过50。
3. **modified_begin** 和 **modified_end**: 用于指定查询的时间范围,这两个字段必须同时存在且间隔不超过七天。
4. **po_ids**: 可选参数,用于指定特定的采购单号列表。
5. **io_ids**: 可选参数,用于指定特定的采购入库单号列表。
6. **so_ids**: 可选参数,用于指定特定的线上单号。
#### 条件过滤
在条件过滤部分,我们使用了 `wms_co_id` 字段,并设置了其值必须在 `14132797,14133381,13090941` 范围内。这确保了我们只获取特定仓库的数据。
#### 数据请求与清洗
在配置好元数据后,我们可以发起请求并获取数据。轻易云平台会自动处理请求并返回响应。为了保证数据质量和一致性,需要对返回的数据进行清洗和初步加工。
1. **字段验证**: 确保每个字段都符合预期格式。例如,检查日期字段是否为有效日期格式。
2. **去重处理**: 对返回的数据进行去重处理,以避免重复记录影响后续的数据处理步骤。
3. **异常处理**: 对于异常数据(如缺失值、格式错误等),可以根据业务需求选择丢弃或标记为异常记录。
#### 数据转换与写入
经过清洗后的数据可以进行进一步转换,然后写入目标系统。在这个过程中,可以根据业务需求进行字段映射、单位转换等操作。
例如,将聚水潭的采购入库单数据转换为KIS系统所需的格式:
```json
{
"kis_purchase_in_order": {
"order_number": "{{io_id}}",
"order_date": "{{created_time}}",
...
}
}
```
通过这种方式,我们可以确保不同系统之间的数据无缝对接,实现高效的数据集成。
总结来说,通过轻易云数据集成平台调用聚水潭接口 `/open/purchasein/query` 并对返回的数据进行清洗和初步加工,是实现高效数据集成的重要步骤。通过合理配置元数据和条件过滤,可以确保获取到高质量、符合业务需求的数据,为后续的数据转换与写入打下坚实基础。
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台生命周期第二步:ETL转换与数据写入KIS私有云API接口
在轻易云数据集成平台中,ETL(Extract, Transform, Load)转换是将源平台的数据转化为目标平台所需格式的关键步骤。本文将详细探讨如何通过轻易云数据集成平台,将聚水潭的采购入库单数据转换为KIS私有云API接口能够接收的格式,并最终写入目标平台。
#### API接口配置与元数据解析
首先,我们需要了解KIS私有云API接口的具体配置和要求。根据提供的元数据配置,KIS私有云API接口的路径为`/koas/app007104/api/purchasereceipt/create`,请求方法为`POST`。以下是请求体中的主要字段及其对应关系:
- `AccountDB`: 固定值 `"001"`
- `Object`: 包含两个主要部分 `Head` 和 `Entry`
##### Head 部分
`Head`部分包含采购入库单的表头信息,包括制单人、采购方式、供货机构等字段。每个字段都有特定的映射和取值规则:
- `FBillerID`: 制单人,映射自 `{wms_co_id}`
- `FPOStyle`: 采购方式,固定值 `252`
- `FSupplyID`: 供货机构,通过MongoDB查询获取,查询条件为供应商名称
- `FExplanation`: 摘要,包含动态变量 `{io_id}`
- `Fdate`: 日期,通过函数替换空格为'T'字符
- `FDCStockID`: 仓库(表头),映射自 `{wms_co_id}-{wh_id}`
- `FFManagerID` 和 `FSManagerID`: 销售和保管人,均映射自 `{wms_co_id}`
##### Entry 部分
`Entry`部分包含采购入库单的明细信息,包括产品代码、实发数量、单价等字段:
- `FItemID`: 产品代码,通过MongoDB查询获取,查询条件为SKU ID
- `Fauxqty`: 实发数量,对应 `{qty}`
- `FAuxPrice`: 单价,对应 `{cost_price}`
- `FDCStockID`: 仓库(表体),映射自 `{wms_co_id}-{wh_id}`
- `FUnitID`: 单位,通过MongoDB查询获取,查询条件为SKU ID
- 其他字段如计划模式、换算率、金额等根据固定值或计算公式设置
#### 数据转换过程
在实际操作中,我们需要遵循以下步骤进行ETL转换:
1. **提取数据**:从聚水潭系统中提取原始采购入库单数据。
2. **清洗数据**:对提取的数据进行必要的清洗和预处理,如去除冗余字段、标准化日期格式等。
3. **转换数据**:根据元数据配置,将清洗后的数据转换为目标平台所需格式。
例如,对于制单人字段,我们需要从源数据中提取出相应的制单人ID,并将其映射到目标字段`FBillerID`。类似地,对于产品代码,我们需要通过MongoDB查询获取相应的产品代码并填充到目标字段`FItemID`。
#### 数据写入过程
完成ETL转换后,我们需要将处理好的数据通过API接口写入到KIS私有云系统中。这一步骤主要包括以下内容:
1. **构建请求体**:根据元数据配置构建符合API要求的JSON请求体。
2. **发送请求**:使用HTTP POST方法将请求体发送到指定API路径。
3. **处理响应**:接收并处理API响应,根据响应结果判断是否成功写入。
以下是一个简化的示例代码片段,用于展示如何构建请求体并发送请求:
```python
import requests
import json
# 构建请求体
request_body = {
"AccountDB": "001",
"Object": {
"Head": {
"FBillerID": source_data["wms_co_id"],
"FPOStyle": 252,
"FSupplyID": get_supplier_id(source_data["supplier_name"]),
"FExplanation": f"采购入库{source_data['io_id']}",
"Fdate": source_data["io_date"].replace(' ', 'T'),
"FDCStockID": f"{source_data['wms_co_id']}-{source_data['wh_id']}",
"FFManagerID": source_data["wms_co_id"],
"FSManagerID": source_data["wms_co_id"]
},
"Entry": [
{
"FItemID": get_product_code(item["sku_id"]),
"Fauxqty": item["qty"],
"FAuxPrice": item["cost_price"],
"FDCStockID": f"{source_data['wms_co_id']}-{source_data['wh_id']}",
"FUnitID": get_product_unit(item["sku_id"]),
# 其他字段...
}
for item in source_data["items"]
]
}
}
# 发送请求
response = requests.post(
url="https://api.kiscloud.com/koas/app007104/api/purchasereceipt/create",
headers={"Content-Type": "application/json"},
data=json.dumps(request_body)
)
# 处理响应
if response.status_code == 200:
print("Data successfully written to KIS cloud.")
else:
print(f"Failed to write data: {response.text}")
```
以上代码片段展示了如何构建符合KIS私有云API要求的请求体,并通过HTTP POST方法发送请求。在实际应用中,还需根据具体需求对代码进行调整和优化。
通过以上步骤,我们实现了从聚水潭系统到KIS私有云系统的数据无缝对接,有效提升了业务流程的自动化程度和效率。
![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)