金蝶-采购入库-->聚水潭-采购入库: 高效、无缝的数据对接案例分享
在企业运营管理中,实现系统间的高效对接和数据集成至关重要。本文将介绍如何利用轻易云数据集成平台,将金蝶云星空的采购入库数据高效地导入到聚水潭系统中,通过实践案例解析关键技术要点和实现机制。
为了完成这项复杂的任务,我们首先需要使用金蝶云星空提供的executeBillQuery
接口来抓取采购入库的数据。由于金蝶云星空API存在分页和限流问题,需特别处理这些细节,以确保所有数据均能及时、准确地获取。同时,还要保证批量集成操作中的数据质量,不产生漏单现象。
接下来,我们将通过聚水潭开放的/open/jushuitan/purchasein/upload
接口实现大量数据快速写入。在此过程中,需要处理两者之间的数据格式差异,并进行必要的数据转换。同时,为了实时监控整个流程并迅速响应可能出现的问题,我们配备了集中监控与告警系统,实施有效监控和异常检测机制。
在实际应用中,自定义转换逻辑也是一大亮点,使我们能够灵活应对业务需求。另外,通过可视化的数据流设计工具,使得每一步操作都更加直观透明。这不仅提升了效率,也极大简化了管理难度,确保每一个环节清晰易懂并便于维护。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取采购入库数据并进行初步加工。
接口配置与请求参数
首先,我们需要了解executeBillQuery
接口的基本配置和请求参数。根据提供的元数据配置,接口的主要参数如下:
- API名称:
executeBillQuery
- 请求方法:
POST
- 业务对象表单ID:
STK_InStock
- 查询字段集合: 通过
FieldKeys
指定 - 过滤条件: 通过
FilterString
指定 - 分页参数: 包括
Limit
,StartRow
,TopRowCount
请求参数详解
-
FieldKeys
- 该参数用于指定需要查询的字段集合。根据元数据配置,我们可以选择所需的字段,例如:
"FieldKeys": [ "FBillNo", "FInStockEntry_FEntryId", "FDate", "FSupplierId.FNumber", "FMaterialId.FNumber", "FRealQty" ]
- 这些字段包括单据编号、入库日期、供应商编码、物料编码和实收数量等关键信息。
- 该参数用于指定需要查询的字段集合。根据元数据配置,我们可以选择所需的字段,例如:
-
FilterString
- 用于设置查询过滤条件。例如,我们可以根据单据状态和审核日期进行过滤:
"FilterString": "FDocumentStatus='C' AND FApproveDate>='2023-01-01'"
- 用于设置查询过滤条件。例如,我们可以根据单据状态和审核日期进行过滤:
-
分页参数
- 为了处理大数据量,分页是必要的。我们可以设置每页返回的最大行数(Limit)和开始行索引(StartRow):
"Limit": 100, "StartRow": 0
- 为了处理大数据量,分页是必要的。我们可以设置每页返回的最大行数(Limit)和开始行索引(StartRow):
请求示例
基于上述配置,一个完整的请求示例如下:
{
"api": "executeBillQuery",
"method": "POST",
"FormId": "STK_InStock",
"FieldKeys": [
"FBillNo",
"FInStockEntry_FEntryId",
"FDate",
"FSupplierId.FNumber",
"FMaterialId.FNumber",
"FRealQty"
],
"FilterString": "FDocumentStatus='C' AND FApproveDate>='2023-01-01'",
"Limit": 100,
"StartRow": 0
}
数据清洗与转换
获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是几个关键步骤:
-
字段映射
- 将金蝶返回的数据字段映射到目标系统所需的字段。例如,将
FBillNo
映射为目标系统中的订单编号。
- 将金蝶返回的数据字段映射到目标系统所需的字段。例如,将
-
数据格式转换
- 将日期格式从金蝶特定格式转换为目标系统所需格式。
- 将数值类型的数据进行单位转换或精度调整。
-
数据校验
- 对关键字段进行校验,如确保单据编号唯一性、实收数量为正数等。
示例代码
以下是一个简单的数据清洗与转换示例代码:
def clean_and_transform(data):
cleaned_data = []
for entry in data:
transformed_entry = {
'order_no': entry['FBillNo'],
'entry_id': entry['FInStockEntry_FEntryId'],
'date': transform_date(entry['FDate']),
'supplier_code': entry['FSupplierId.FNumber'],
'material_code': entry['FMaterialId.FNumber'],
'quantity': float(entry['FRealQty'])
}
if validate_entry(transformed_entry):
cleaned_data.append(transformed_entry)
return cleaned_data
def transform_date(date_str):
# 假设输入格式为 YYYY-MM-DD,输出格式为 DD/MM/YYYY
return date_str.split('-')[2] + '/' + date_str.split('-')[1] + '/' + date_str.split('-')[0]
def validate_entry(entry):
return entry['quantity'] > 0 and len(entry['order_no']) > 0
通过上述步骤,我们能够有效地调用金蝶云星空接口获取采购入库数据,并对其进行初步加工,为后续的数据写入和进一步处理奠定基础。这种方法不仅提高了数据处理效率,还确保了数据质量和一致性。
轻易云数据集成平台生命周期的第二步:ETL转换与写入聚水潭API接口
在数据集成过程中,将源平台的数据转换为目标平台可接收的格式是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将金蝶的采购入库数据通过ETL转换,最终写入聚水潭的采购入库API接口。
API接口配置与元数据解析
首先,我们需要理解聚水潭采购入库API接口的元数据配置。以下是该接口的详细配置:
{
"api": "/open/jushuitan/purchasein/upload",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field": "is_confirm", "label": "是否自动确认单据", "type": "bool", "value": "false"},
{"field": "excute_confirming", "label": "是否自动审核", "type": "string", "value": "false"},
{"field": "po_id", "label": "采购单编号", "type": "int",
"value": "_findCollection find primaryWriteback.po_id from 7389e0ad-45f1-37e3-8887-5770febb696a where FBillNo={FSRCBillNo}"},
{"field": "wms_co_id", "label": "仓库",
"type": "string",
"value": "_findCollection find FJSTID from a4574865-558b-3258-8fe8-ae7e5bfeb538 where FNumber={FStockId_FNumber} F_PAEZ_Assistant=657fa9b5c75fe3"},
{"field": "supplier_id",
"label": "供应商id",
"type": "int",
"value":"_findCollection find supplier_id from 28c9f45b-ce65-37f2-b5af-ee9ff8760e99 where supplier_code={FSupplierId_FNumber}"},
{"field":"external_id","label":"外部采购单号","type":"string","describe":"单据上传成功之后对应页面外部单号","value":"{FBillNo}"},
{"field":"tax_rate","label":"税率","type":"float","value":"_function round({{list.FEntryTaxRate}}/100,2)"},
{"field":"items","label":"明细列表","type":"array","value":"list",
"children":[
{"field":"sku_id","label":"商品编码","type":"string","value":"{FMaterialId_FNumber}"},
{"field":"qty","label":"数量","type":"int","value":"{{list.FRealQty}}"},
{"field":"tax_rate","label":"税率","type":"float","value":"_function round({FEntryTaxRate}/100,2)"},
{"field":"remark","label":"单据体备注","type":"string","value":"{FBillNo}"}
]
},
{"field":"remark","label":"单据头备注","type":"string","value":"{FBillNo}"}
],
...
}
数据请求与清洗
在进行ETL转换之前,首先要从源系统(金蝶)获取原始数据,并进行必要的数据清洗和准备。这一步通常包括以下几个步骤:
- 数据提取:从金蝶系统中提取采购入库相关的数据,如采购单编号、供应商信息、仓库信息等。
- 数据清洗:对提取的数据进行清洗,确保数据完整性和准确性。例如,去除重复记录、处理缺失值等。
- 数据映射:根据目标平台(聚水潭)的需求,将源系统字段映射到目标系统字段。
数据转换与写入
接下来,我们重点讨论如何将清洗后的数据进行转换,并通过API接口写入聚水潭系统。
-
字段映射与转换:
po_id
(采购单编号):通过_findCollection
方法从金蝶系统中获取对应的po_id
。wms_co_id
(仓库):同样使用_findCollection
方法,根据仓库编号获取对应的wms_co_id
。supplier_id
(供应商ID):根据供应商代码获取对应的supplier_id
。tax_rate
(税率):使用_function round()
方法将税率转换为小数形式。items
(明细列表):包括商品编码、数量、税率和备注等字段。
-
构建请求体: 根据上述字段映射和转换结果,构建符合聚水潭API接口要求的请求体。示例如下:
{
“is_confirm”: false,
“excute_confirming”: false,
“po_id”: 123456,
“wms_co_id”: “WH001”,
“supplier_id”: 78910,
“external_id”: “PO20231001”,
“tax_rate”: 0.13,
“items”: [
{
“sku_id”: “SKU001”,
“qty”: 100,
“tax_rate”: 0.13,
“remark”: “PO20231001”
}
],
“remark”: “PO20231001”
}
- 发送请求:
使用POST方法,将构建好的请求体发送到
/open/jushuitan/purchasein/upload
接口,实现数据写入。确保在发送请求前进行必要的验证和错误处理,以提高系统稳定性和可靠性。
import requests
url = 'https://api.jushuitan.com/open/jushuitan/purchasein/upload'
headers = {'Content-Type': 'application/json'}
data = {
# 构建好的请求体
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("Data uploaded successfully")
else:
print("Failed to upload data:", response.text)
通过以上步骤,我们实现了从金蝶到聚水潭的数据ETL转换和写入。轻易云数据集成平台提供了强大的元数据配置功能,使得复杂的数据集成任务变得更加简便高效。在实际操作中,还需根据具体业务需求进行相应调整,以确保数据准确性和一致性。