聚水潭数据集成到金蝶云星空案例分享
在本技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现聚水潭采购入库单数据同步至金蝶云星空。该方案于实际运行中的名称为:[自动]-采购入库单同步[关联]-V1.0。本文重点关注以下几个方面的技术实现和优化:
确保集成过程中的准确性与高效性
为了保证聚水潭的数据能够精准无误地写入到金蝶云星空,我们首先需要有效调用其开放API接口 /open/purchasein/query
,从而获取采购入库单的详细信息。在这个过程中,需要特别注意处理分页与限流问题,确保抓取的数据不漏单且符合业务需求。
批量数据快速写入
当大量的数据被成功抓取后,下一个关键环节是如何高效地批量写入到金蝶云星空。这通过使用 batchSave
API 接口来实现,该接口支持同时保存多个记录,从而显著提升了数据写入的效率。然而,在此过程中对接可能会遇到多种异常情况,因此我们还引入了错误重试机制,以确保稳定可靠的数据传输。
数据格式差异处理
聚水潭与金蝶云星空之间存在着一定的数据格式差异,这就要求我们在数据映射上进行定制化处理。例如,不同字段之间可能存在命名或类型上的不一致,通过轻易云平台提供的可视化配置界面,可以直观清晰地完成这些映射操作,大大减少了开发和调试时间。
实时监控与日志管理
整个集成流程结束后,为了进一步保障系统对接的稳健运行,还需设置实时监控和日志记录功能。这样可以及时发现并解决潜在的问题,例如网络波动导致的数据丢失或延迟。通过详尽的日志记录,每个步骤都能追踪溯源,有问题可第一时间回顾分析并采取补救措施。
以上几大技术要点勾勒出了本次系统对接项目的重要脉络。在随后的具体实施部分,将进一步探讨每一个细节及代码实例,以供深度参考和借鉴。
调用聚水潭接口/open/purchasein/query获取并加工数据的技术案例
在数据集成生命周期的第一步,我们需要从源系统获取数据。本文将详细探讨如何使用轻易云数据集成平台调用聚水潭接口/open/purchasein/query
,并对获取的数据进行加工处理。
接口调用配置
首先,我们需要了解接口的基本配置和元数据定义。以下是接口的元数据配置:
{
"api": "/open/purchasein/query",
"effect": "QUERY",
"method": "POST",
"number": "io_id",
"id": "io_id",
"idCheck": true,
"request": [
{
"field": "page_index",
"label": "第几页,从1开始",
"type": "string",
"describe": "第几页,从1开始",
"value": "1"
},
{
"field": "page_size",
"label": "默认30,最大不超过50",
"type": "string",
"describe": "默认30,最大不超过50",
"value": "50"
},
{
"field": "modified_begin",
"label": "修改起始时间",
"type": "string",
"describe":
"
修改起始时间,起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空
",
"
value
": "{{LAST_SYNC_TIME|datetime}}"
},
{
"
field
": "
modified_end
",
"
label
": "
修改结束时间
",
"
type
": "
string
",
"
describe
":
"
修改起始时间,起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空
",
"
value
": "{{CURRENT_TIME|datetime}}"
}
],
"
omissionRemedy
": {
"
crontab
":
"
2 6-7 * * *
",
"
takeOverRequest
": [
{
"
field
":
"
modified_begin
",
"
value
": "{{DAYS_AGO_2|datetime}}",
"
type
":
"
string
",
"
label
":
"
接管字段
",
"
formModel
": {
enable: false},
tableModel: {enable: false},
physicalModel: {enable: false}
}
]
},
condition: [[{"field":"wms_co_id","logic":"neqv2","value":"10404759"}]]
}
请求参数解析
在调用该接口时,我们需要传递以下几个关键参数:
page_index
: 表示请求的页码,从1开始。page_size
: 每页返回的数据条数,默认值为30,最大不超过50。modified_begin
: 数据修改的起始时间。modified_end
: 数据修改的结束时间。
这些参数确保了我们能够分页获取数据,并且可以根据修改时间范围进行筛选。
时间参数动态生成
为了确保数据同步的准确性,我们使用了动态生成的时间参数:
{{LAST_SYNC_TIME|datetime}}
: 上次同步的时间。{{CURRENT_TIME|datetime}}
: 当前请求的时间。
这两个参数保证了每次请求的数据都是最新的,并且不会重复获取已经处理过的数据。
异常处理与补偿机制
为了应对可能出现的数据遗漏问题,我们配置了一个定时任务(crontab
),每天早上6点到7点之间执行一次补偿请求。补偿请求会使用两天前的日期作为modified_begin
,确保即使某次同步失败,也能在后续补偿中重新获取遗漏的数据。
条件过滤
在实际应用中,我们可能需要对返回的数据进行进一步过滤。例如,在上述配置中,我们添加了一个条件过滤:
"condition":[[{"field":"wms_co_id","logic":"neqv2","value":"10404759"}]]
这个条件表示我们只获取wms_co_id
不等于10404759
的数据。这种过滤机制可以帮助我们精确控制数据集成范围,提高数据处理效率。
数据加工与清洗
在成功获取到原始数据后,需要对其进行必要的清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括:
- 去除重复记录。
- 格式化日期和数值字段。
- 根据业务需求合并或拆分字段。
这些操作可以通过轻易云平台提供的可视化工具实现,无需编写复杂代码,大大简化了数据处理流程。
实时监控与日志记录
为了确保整个过程透明可控,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以随时查看每个步骤的执行状态,及时发现并解决问题。
综上所述,通过合理配置聚水潭接口调用参数、动态生成时间参数、设置异常处理机制以及进行必要的数据清洗和转换,可以高效地完成数据集成生命周期中的第一步,为后续的数据转换与写入奠定坚实基础。
采购入库单同步至金蝶云星空API接口的ETL转换技术案例
在轻易云数据集成平台中,生命周期的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。
元数据配置解析
在本案例中,我们需要将采购入库单的数据同步至金蝶云星空。以下是元数据配置的详细解析:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "RKD01_SYS",
...
}
],
...
}
数据字段映射与转换
-
单据类型(FBillTypeID)
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 固定值:
RKD01_SYS
-
业务类型(FBusinessType)
- 类型:字符串
- 固定值:
CG
-
单据编号(FBillNo)
- 类型:字符串
- 动态值:
{io_id}
-
货主类型(FOwnerTypeIdHead)
- 类型:字符串
- 固定值:
BD_OwnerOrg
-
货主(FOwnerIdHead)
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 动态查询:
"_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FStockOrgId_FNumber where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"}}"
嵌套对象与数组处理
-
财务信息(FInStockFin) 包含两个子字段:
-
结算组织(FSettleOrgId)
- 类型:字符串
- 转换器:
ConvertObjectParser
- 参数:
FNumber
- 动态查询:
"_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FPurOrgId where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"}}"
-
付款组织(FPayOrgId) 同上。
-
-
明细信息(FInStockEntry)
包含多个子字段,如物料编码、应收数量、实收数量等。这些字段通过动态映射和查询来获取相应的数据。例如:
- 物料编码(FMaterialId)
{ "field": "FMaterialId", ... "value": "{{items.sku_id}}" }
- 物料编码(FMaterialId)
特殊处理与关联关系
-
源单类型(FSRCBILLTYPEID) 和 源单编号(FSRCBillNo)
-
关联关系(FInStockEntry_Link)
该部分涉及源单表名、下推关系、源单ID及表体ID等信息,通过动态查询获取。例如:
{
"_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FDetailEntity_FEntryID where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"},\"content.FMaterialId\":{\"$eq\":\"{{items.sku_id}}\"}}"
}
API调用与数据提交
最终,所有字段经过转换和映射后,通过POST请求调用金蝶云星空的批量保存API接口:
{
"api": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave",
...
}
请求体包含所有映射后的数据,并设置必要的操作参数如自动提交审核等:
{
...
{
"field":"IsAutoSubmitAndAudit",
...
,"value":"true"
}
}
通过以上步骤,我们实现了从源平台到目标平台的数据ETL转换,并确保了数据格式符合金蝶云星空API接口要求。