金蝶云星空数据集成至聚水潭案例分享:实现拆卸单至其他出库单的对接
在当今复杂多变的业务环境中,企业普遍面临着如何高效管理和优化各类数据流的问题。本篇文章将重点解析一个实际系统集成案例:金蝶云星空的数据通过executeBillQuery接口获取,并成功对接到聚水潭系统生成相应的其他出库单。
1. 技术背景和核心问题
该集成方案旨在解决以下几个关键技术问题:
- 确保数据不漏单:利用定时可靠抓取金蝶云星空接口数据。
- 处理接口分页和限流:合理分配API调用,避免超负荷请求。
- 自定义数据转换逻辑:适应不同的数据结构,实现两端系统间的数据兼容。
- 批量快速写入聚水潭:支持大规模数据传输,提高处理效率。
轻易云平台提供了高效的可视化操作界面,使得整个配置过程透明且易于监控。针对本案例,我们需要特别关注以下几点:
2. 数据获取与预处理
首先,通过金蝶云星空提供的executeBillQuery API接口,以特定条件筛选拆卸单(父项)进行初次抓取。由于该API存在分页限制,需要设计合理的分页拉取策略。同时,为了解决可能出现的数据异常或丢失情况,必须引入增量更新机制及错误重试机制,以确保每一条重要记录均被准确捕捉。
{
"apiName": "executeBillQuery",
"queryParameters": {
"documentType": "DisassemblyOrder",
// Other query parameters
}
}
3. 数据转换与映射
后续,将从金蝶云星空抓取到的原始JSON格式数据进行必要的信息提炼与转换,这一步是为了解决两种系统之间的数据格式差异。在此过程中,可以利用轻易云平台提供的数据质量监控功能,以及灵活定义转换逻辑以保证输出结果符合目标系统所需标准。目前,该方案采用自定义脚本完成字段映射并生成符合聚水潭要求的新JSON对象。
{
// Example of the transformed data ready for 聚水潭 upload
{
"billType": "OTHER_OUT_ORDER",
...
}
}
4. 数据提交与实时监控
最终,通过调用聚水潭侧开放API /open/jushuitan/otherinout/upload 实现批量写入,在发送前会经过一次校验流程。如有任何上传失败或响应异常,则根据其返回码触发重试机制
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取并加工拆卸单(父项)数据,并将其集成到聚水潭的其他出库单中。
接口配置与请求参数
首先,我们需要配置元数据,以便正确调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
{"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
{"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
{"field":"FEE","label":"费用","type":"string","value":"FEE"},
{"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
{"field":"FNote","label":"","type":"","value":""},
// ...省略部分字段
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "", "type": "", ""},
{"field": "", "", "", ""},
// ...省略部分字段
]
}
请求示例
在实际调用中,我们需要构建一个HTTP POST请求,包含必要的请求参数。以下是一个示例请求体:
{
"FormId": "STK_AssembledApp",
"FieldKeys": [
// 字段列表,使用逗号分隔
...
],
// 分页参数
{
...
},
// 查询条件
{
...
}
}
数据清洗与转换
在获取到原始数据后,需要进行清洗和转换,以便适配目标系统的数据格式。以下是几个关键步骤:
- 字段映射:将金蝶云星空的数据字段映射到聚水潭系统所需的字段。例如,将
FBillNo
映射为聚水潭中的订单编号。 - 数据过滤:根据业务需求过滤掉不必要的数据。例如,只保留状态为已审核(
FDocumentStatus='C'
)的记录。 - 格式转换:将日期格式、数值格式等进行转换,使其符合目标系统要求。
实际案例
假设我们需要从金蝶云星空获取所有状态为已审核且事务类型为拆卸(Dassembly)的拆卸单,并将其转换为聚水潭的其他出库单。以下是一个具体案例:
-
配置请求参数:
{ ... // 查询条件 { ... // 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", // value: FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FAFFAIRTYPE = 'Dassembly' and FDocumentStatus='C' } }
-
发送请求并获取响应:
import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} data = { # 填充上述JSON结构体中的内容 } response = requests.post(url, headers=headers, json=data) result = response.json()
-
处理响应数据:
for record in result['data']: # 数据清洗与转换逻辑 processed_record = { 'order_no': record['FBillNo'], 'status': record['FDocumentStatus'], # 更多字段映射... } # 将处理后的记录写入目标系统,如聚水潭 write_to_jushuitan(processed_record)
通过上述步骤,我们实现了从金蝶云星空获取拆卸单数据,并将其成功集成到聚水潭系统中。这一过程不仅确保了数据的一致性和准确性,还大大提升了业务流程的自动化程度。
使用轻易云数据集成平台实现金蝶拆卸单到聚水潭其他出库单的ETL转换
在数据集成生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL转换,转为目标平台聚水潭API接口所能够接收的格式,并最终写入目标平台。以下将详细介绍如何通过轻易云数据集成平台实现这一过程。
1. API接口配置
在本案例中,我们需要将金蝶系统中的拆卸单(父项)数据转换为聚水潭系统中的其他出库单。首先,我们需要配置聚水潭API接口的元数据。根据提供的元数据配置,我们可以看到API接口路径为/open/jushuitan/otherinout/upload
,请求方法为POST。
{
"api": "/open/jushuitan/otherinout/upload",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field": "is_confirm", "label": "是否确认单据", "type": "string", "value": "_function IF({F_POKM_JSTSTOCKNUMBER} = 10816570 , 1 , 0 )"},
{"field": "excute_confirming", "label": "是否审核单据", "type": "string", "value": "false"},
{"field": "wms_co_id", "label": "仓库编号", "type": "int", "value": "{F_POKM_JSTSTOCKNUMBER}"},
{"field": "type", "label": "出入库类型", "type": "string", "value": "out"},
{"field": "external_id", "label": "外部单号", "type": "string", "value":"F{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}"},
{"field": "remark", "label":"备注","type":"string","value":"金蝶拆卸单单据推送,单号:{FBillNo}"},
{"field":"items","label":"items","type":"array","value":"list","children":[
{"field":"sku_id","label":"商品编码","type":"string","value":"{{list.FMaterialID_FNumber}}"},
{"field":"qty","label":"入库数量","type":"string","value":"{{list.FQty}}"}
]},
{"field":"lc_id","label":"物流公司编码","type":"string"},
{"field":"l_id","label":"物流单号","type":"string"},
{"field":"logistics_company","label":"物流公司名称","type":"string"},
{"field":"drp_co_name","label":"出库类型","type":"string","value":"成品拆卸出库"},
{"field":"warehouse","label":"分仓","type":"string","value":"{F_POKM_JSTSTOCKNUMBER2}"}
],
...
}
2. 数据清洗与转换
在进行数据清洗与转换时,我们需要确保从金蝶系统获取的数据能够符合聚水潭API接口的要求。例如:
is_confirm
字段需要根据仓库编号F_POKM_JSTSTOCKNUMBER
进行判断,如果等于10816570则设为1,否则设为0。external_id
字段需要由多个字段拼接而成,包括FBillNo
、F_POKM_JSTSTOCKNUMBER
和F_POKM_JSTSTOCKNUMBER2
。items
字段是一个数组,需要包含商品编码和数量信息,这些信息来自于金蝶系统的物料编码和数量字段。
具体的转换逻辑可以通过轻易云平台提供的可视化操作界面进行配置,无需编写复杂代码即可实现。
3. 数据写入目标平台
完成数据清洗与转换后,我们需要将处理后的数据通过POST请求写入聚水潭系统。以下是一个示例请求体:
{
"is_confirm": 1,
"excute_confirming": false,
...
}
其中,各个字段值已经根据前面的配置进行了相应的转换和拼接。
4. 操作方法配置
在元数据配置中,还包括了操作方法的定义,例如合并(merge)操作:
"operation":{
...
}
这部分配置确保了在处理过程中,能够正确地合并来自不同来源的数据,并按照指定规则进行处理。
通过以上步骤,我们可以高效地将金蝶系统中的拆卸单数据转换并写入到聚水潭系统,实现不同系统间的数据无缝对接。轻易云数据集成平台提供了全生命周期管理和可视化操作界面,使得这一过程更加透明和高效。