金蝶采购订单(委外)同步至旺店通采购订单-P:技术案例分享
在企业信息系统的集成中,数据的无缝对接和可靠传输是确保业务流程顺畅的重要一环。本文将详细探讨如何通过使用轻易云数据集成平台实现金蝶云星空与旺店通·企业奇门之间的数据同步,以“金蝶采购订单(委外)同步至旺店通采购订单-P”方案为例,揭示全生命周期管理和实时监控在此任务中的具体应用。
确保数据不漏单
为了保证从金蝶云星空获取到的每一个采购订单都准确地写入到旺店通·企业奇门,我们采用定时可靠抓取机制,通过调用金蝶云星空接口executeBillQuery
来定期收集新生成或更新的采购订单,并使用轻易云内置的日志记录功能,对整个过程进行全面跟踪。此外,还设计了异常处理与错误重试机制,一旦发现数据漏失或处理失败,即可立即触发重试任务,确保所有数据无遗漏地成功写入目标系统。
快速、大量的数据写入
针对大量数据快速写入的问题,我们利用批处理技术,将多个订单合并后调用旺店通·企业奇门API wdt.purchase.order.push
进行一次性批量提交。这种方法不仅大幅提升了传输效率,还能够有效降低API请求频率,从而减小网络延迟带来的影响。同时,通过分页策略解决了接口限流问题,在避免请求过载导致服务拒绝方面发挥了重要作用。
数据格式差异及映射
在不同系统间的数据对接过程中,通常会遇到字段定义及格式标准不统一等问题。我们借助轻易云灵活的自定义脚本功能,对获得的数据进行了预处理,将其转换为符合目标系统要求的格式。例如,在将金蝶云星空返回的数据归一化为适配于旺店通·企业奇门所需结构前,应特别关注日期、金额、数量等敏感字段以防止误差累积。另外,为了一步到位,实现了复杂字段(如JSON嵌套对象)的精确映射与解析。
以上几点展示了此次系统对接案例中的核心技术要点。在随后的部分中,将继续深入介绍该项目具体实施步骤以及相关代码实例。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是调用源系统接口获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取采购订单数据,并对其进行初步加工。
接口配置与请求
首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置的主要内容:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FPOOrderEntry_FEntryId",
"pagination": {
"pageSize": 100
},
"request": [
{"field":"FPOOrderEntry_FEntryId","label":"FPOOrderEntry_FEntryId","type":"string","value":"FPOOrderEntry_FEntryId"},
{"field":"FID","label":"FID","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FSourceBillNo","label":"源单编号","type":"string","value":"FSourceBillNo"},
{"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
{"field":"FBusinessType","label":"业务类型","type":"string","value":"FBusinessType"},
{"field":"FSupplierId_FNumber","label":"供应商","type":"string","value":"FSupplierId.FNumber"},
{"field":"FSettleModeId_FNumber","label":"结算方式","type":"string","value":"FSettleModeId.FNumber"},
{"field":"FPayConditionId_FNumber","label":"付款条件","type":"string","value":"FPayConditionId.FNumber"},
{"field":"FDate","label":"采购日期","type":"string","value":"FDate"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
// ...省略部分字段...
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": "int"},
{
"field": "FilterString",
"label": "过滤条件",
"type": "string",
"value":
`FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and
(FBillTypeID.FNumber='CXCGDD' or FBillTypeID.FNumber='CGDD02_SYS' or FBillTypeID.FNumber='BHCGDD') and
(FPurchaseOrgId.FNumber ='100' or FPurchaseOrgId.FNumber ='200' or FPurchaseOrgId.FNumber ='400')`
},
{
"field":
`FieldKeys`,
`label`:
`需查询的字段key集合`,
`type`:
`array`,
`parser`:
{
`name`:
`ArrayToString`,
`params`:
","
}
},
{
`field`:
`FormId`,
`label`:
`业务对象表单Id`,
`type`:
`string`,
`value`:
`PUR_PurchaseOrder`
}
]
}
请求参数解析
- API和方法:
api
字段指定了要调用的API名称为executeBillQuery
,method
字段指定了HTTP请求方法为POST
。 - 分页设置:通过
pagination
字段设置每页的数据量为100条。 - 请求字段:在
request
数组中定义了需要从金蝶云星空获取的字段,包括采购订单的基本信息和明细信息,如单据编号(FBillNo)、供应商(FSupplierId_FNumber)、采购日期(FDate)等。 - 其他请求参数:
- Limit:最大行数,使用分页参数中的页面大小。
- StartRow:开始行索引,使用分页参数中的起始行。
- FilterString:过滤条件,用于筛选符合条件的数据,这里筛选了审批日期大于上次同步时间且单据类型和采购组织符合特定条件的数据。
- FieldKeys:需查询的字段key集合,通过解析器将数组转换为字符串。
- FormId:业务对象表单ID,这里指定为采购订单(PUR_PurchaseOrder)。
数据请求与处理
在轻易云数据集成平台上配置好元数据后,可以发起HTTP POST请求来获取采购订单数据。以下是一个示例请求体:
{
"FormId": "PUR_PurchaseOrder",
// 使用解析器生成FieldKeys字符串
// 示例: FieldKeys: ["FID", ...].join(",")
...
}
响应结果将包含符合条件的采购订单数据。接下来,我们可以对这些数据进行清洗和初步加工,例如:
- 数据清洗:去除重复或无效的数据记录,确保每条记录都是完整且准确的。
- 格式转换:根据目标系统的需求,将数据格式进行转换,例如日期格式、数字精度等。
实践案例
假设我们需要同步金蝶云星空中的采购订单到旺店通系统,可以按照以下步骤进行:
- 配置元数据并发起请求,从金蝶云星空获取采购订单数据。
- 对获取的数据进行清洗和格式转换,确保符合旺店通系统的要求。
- 将处理后的数据通过轻易云平台写入到旺店通系统。
以上就是通过轻易云平台调用金蝶云星空接口获取并加工采购订单数据的详细过程。通过这种方式,可以实现不同系统间的数据无缝对接,提高业务流程的自动化程度和效率。
轻易云数据集成平台生命周期的第二步:ETL转换与写入目标平台
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台能够接收的格式,最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台,将金蝶采购订单(委外)同步至旺店通·企业奇门API接口。
API接口配置与元数据解析
在本案例中,我们需要将金蝶采购订单的数据通过ETL转换,写入到旺店通·企业奇门API接口。以下是元数据配置:
{
"api": "wdt.purchase.order.push",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo,FSupplierId_FNumber",
"bodyName": "details_list",
"bodySum": ["FQty"],
"header": ["FBillNo", "FSupplierId_FNumber"],
"body": ["F_TUXM_BaseProperty3", "FQty", "FPrice"]
},
"request": [
{"field":"provider_no","label":"供应商编号","type":"string","value":"{FSupplierId_FNumber}"},
{"field":"warehouse_no","label":"仓库编号","type":"string","value":"01"},
{"field":"outer_no","label":"API单号","type":"string","value":"{FBillNo}"},
{"field":"is_use_outer_no","label":"传入ERP采购单号","type":"string","value":"1"},
{"field":"is_check","label":"自动审核","type":"string","value":"1"},
{"field":"contact","label":"收货人姓名","type":"string"},
{"field":"telno","label":"收货人联系电话","type":"string"},
{"field":"receive_address","label":"收货地址","type":"string"},
{"field":"expect_arrive_time","label":"预计到货时间","type":"string","value":"{FDeliveryDate}"},
{"field":"other_fee","label":"其他费用","type":"string"},
{"field":"post_fee","label":"邮资","type":"string"},
{
"field": "details_list",
"label": "采购明细节点",
"type": "array",
"children": [
{"field": "remark", "label": "备注", "type": "string", "value": "{FEntryNote}", "parent": "details_list"},
{"field": "prop1", "label": "自定义属性1",
![如何对接钉钉API接口](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)