金蝶销售出库单更新业务系统发货消息-ok案例分析
在现代数据集成项目中,如何高效、安全地完成跨平台的数据对接与整合成为必不可少的技能。本文将分享一个具体的技术案例:金蝶云星空数据集成到云水聚——特别是如何通过executeBillQuery接口获取销售出库单,并利用/Kingdee/UpdateSaleOrderLogistics接口实现信息同步更新。
数据抓取与集成方案概述
首先,为确保每一次从金蝶云星空抓取的数据不漏单,我们采用定时任务机制,通过合理配置轻易云平台的调度功能,实现稳定可靠的数据获取。执行时调用了金蝶API接口executeBillQuery,从而能够获取完整且及时的销售出库单数据信息。在解决高速、大量数据传输问题方面,我们使用批量处理机制,将大量从金蝶抓取的数据快速写入到云水聚。
接口调用及分页处理
在实际操作过程中,由于金蝶云星空API存在分页和限流的问题,我们配置了自动分页逻辑,每次请求控制在合理范围内,以避免触碰限流阈值。同时,确保所有分页数据都能顺利地被完整获取并进行后续处理。
数据格式映射及异常处理
两个系统间往往存在数据结构差异,因此我们设计了一套灵活的映射规则,使得金蝶返回的数据可以无缝转换为符合云水聚要求的新格式。在此过程中,还配备了实时监控和日志记录功能,对每一次成功或失败的操作进行详细追踪。当发生异常时,比如网络抖动或者接口响应超时等,会自动触发重试机制,提高整体对接流程的鲁棒性和可靠性。
这一技术方案不仅涵盖了从源头到目标端各个环节的信息捕获、转换和存储,更有效衡量并提升了不同系统之间协同工作的效率及稳定性。以下章节将进一步深入探讨每一步骤中的关键细节,以及轻易云如何助力实现这样的高效整合。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成生命周期的第一步中,我们需要从源系统金蝶云星空中获取数据,并对其进行初步加工。本文将详细探讨如何通过调用金蝶云星空的executeBillQuery
接口来实现这一过程。
接口配置与请求参数
根据元数据配置,executeBillQuery
接口采用POST方法进行调用,主要用于查询操作。以下是该接口的关键配置参数:
- api:
executeBillQuery
- method:
POST
- effect:
QUERY
- number:
FBillNo
- id:
FBillNo
- idCheck:
true
请求参数包含多个字段,以下是部分关键字段及其描述:
{
"request": [
{"field": "FBillNo", "label": "FBillNo", "type": "string", "value": "FBillNo"},
{"field": "FDate", "label": "FDate", "type": "string", "value": "FDate"},
{"field": "FStockID_FNumber", "label": "FStockID_FNumber", "type": "string", "value": "FStockID.FNumber"},
{"field": "FLogComId", "label": "FLogComId", "type": "string", "value": "FLogComId"},
{"field": "FMaterialID_FNumber", "label": "FMaterialID_FNumber", "type": "string", "value": "FMaterialID.FNumber"},
{"field": "FMaterialID_FName", "label": "FMaterialID_FName",
![如何对接钉钉API接口](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image)
### 将金蝶销售出库单数据转换并写入云水聚平台
在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将金蝶销售出库单数据转换为云水聚API接口所能接收的格式,并最终写入目标平台。
#### 数据请求与清洗
在进行数据转换之前,首先需要从源系统(金蝶)中提取销售出库单的数据。该过程通常涉及到对原始数据的清洗和预处理,以确保数据的准确性和一致性。假设我们已经完成了这一阶段,现在我们将重点放在如何将这些清洗后的数据进行转换和写入目标平台。
#### 数据转换与写入
我们使用的元数据配置如下:
```json
{
"api": "/Kingdee/UpdateSaleOrderLogistics",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo",
"bodyName": "items",
"bodySum": ["FRealQty"],
"header": ["FBillNo", "FDate", "FStockID_FNumber", "FLogComId", "FSoorDerno", "F_WDZN__YSJ_Logbillno", "F_WDZN__YSJ_Logcompany"],
"body": ["FMaterialID_FNumber", "FMaterialID_FName", "FRealQty"]
},
"request": [
{"field": "orderNum", "label": "业务单号", "type": "string", "value": "{FSoorDerno}"},
{"field": "kingdeeCKCode", "label": "金蝶出库单号", "type": "string", "value": "{FBillNo}"},
{"field": "wareHouseDate", "label": "日期", "type": "string", "value": "{FDate}"},
{"field": "wareHouseName", "label": "仓库名称", "type": "string",
"value":"{FStockID_FNumber}"},
{"field":"outWareHousePerson","label":"发货人名称","type":"string"},
{"field":"expressName","label":"物流公司名称","type":"string","value":"{F_WDZN__YSJ_Logcompany}"},
{"field":"expressCode","label":"物流单号","type":"string","value":"{F_WDZN__YSJ_Logbillno}"},
{"field":"productItems","label":"Arraylis(产品明细)","type":"array","value":"items","children":[
{"field":"productId","label":"产品编码","type":"string","value":"{{items.FMaterialID_FNumber}}"},
{"field":"productName","label":"产品名称","type":"string","value":"{{items.FMaterialID_FName}}"},
{"field":"applyNumer","label":"数量","type":"string","value":"{{items.FRealQty}}"},
{"field":"deviceNo","label":"设备号(多个逗号拼接,)","type":"string"}
]}
]
}
接口配置解析
-
API路径:
/Kingdee/UpdateSaleOrderLogistics
- 用于更新销售订单物流信息的接口路径。
-
请求方法:
POST
- 使用HTTP POST方法提交数据。
-
ID检查:
idCheck: true
- 确保每条记录都有唯一标识,以避免重复提交。
-
操作配置:
method: merge
:合并操作,基于字段FBillNo
进行合并。bodyName: items
:表示请求体中的数组字段名为items
。bodySum: ["FRealQty"]
:对字段FRealQty
求和。header
: 包含头部信息字段列表。body
: 包含详细信息字段列表。
-
请求参数映射:
- 将源系统中的字段映射到目标API接口所需的字段。例如,将金蝶中的
FBillNo
映射为目标系统中的kingdeeCKCode
。
- 将源系统中的字段映射到目标API接口所需的字段。例如,将金蝶中的
实际案例应用
假设我们从金蝶系统中提取了一条销售出库单,其结构如下:
{
FBillNo: 'SO20231001',
FDate: '2023-10-01',
FStockID_FNumber: 'WH001',
FLogComId: 'LOG001',
FSoorDerno: 'ORD123456',
F_WDZN__YSJ_Logbillno: 'EXP20231001',
F_WDZN__YSJ_Logcompany: 'ExpressCo',
items: [
{ FMaterialID_FNumber: 'P001', FMaterialID_FName: 'Product1', FRealQty: 10 },
{ FMaterialID_FNumber: 'P002', FMaterialID_FName: 'Product2', FRealQty: 20 }
]
}
根据元数据配置,我们需要将其转换为以下格式,并通过API接口提交:
{
orderNum: 'ORD123456',
kingdeeCKCode: 'SO20231001',
wareHouseDate: '2023-10-01',
wareHouseName: 'WH001',
outWareHousePerson: '',
expressName: 'ExpressCo',
expressCode: 'EXP20231001',
productItems: [
{ productId: 'P001', productName: 'Product1', applyNumer: '10', deviceNo:'' },
{ productId: 'P002', productName: 'Product2', applyNumer:'20', deviceNo:'' }
]
}
通过轻易云数据集成平台,我们可以轻松实现上述转换,并确保数据准确无误地传输到目标平台(云水聚)。这一过程不仅提高了业务效率,还保证了数据的一致性和完整性。