聚水潭数据集成到金蝶云星空:盘亏同步方案
在现代企业的复杂业务环境中,系统间的数据对接和集成始终是一个难题。本文将聚焦于一个具体案例:如何高效地将聚水潭的数据集成到金蝶云星空。在本次案例中,我们实施了名为“盘亏同步”的解决方案,以实现精确、快速且可靠的业务信息传递。
使用轻易云数据集成平台,为“盘亏同步”方案提供了强大的支持,其核心操作包括从聚水潭接口实时抓取库存数据,并通过自定义转换逻辑,将这些数据批量写入金蝶云星空。关键在于我们确保了每个环节中的数据不漏单,不失真,并能够适应两套系统不同的数据格式要求。
首先,通过调用聚水潭提供的API接口/open/inventory/count/query
,我们定时且可靠地抓取最新的库存变动信息。这些信息在经过清洗与处理后,需要批量写入至金蝶云星空的数据库,这一步由batchSave
API完成。其中,高吞吐量的数据写入能力发挥了重要作用,使得庞大业务量下的数据也能迅速被导入,实现零延迟更新。
此外,整个过程受到了严格监控,包括分页处理和限流策略,以保证任何异常都能及时发现并自动重试。同时,对于潜在的数据质量问题及API资产管理,也有详细记录和告警机制,保障系统平稳运行。
以上步骤不仅提升了企业整体效率,还有效降低人工干预所带来的风险,为实现无缝衔接、高效运转奠定基础。
调用聚水潭接口获取并加工数据
在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用聚水潭接口 /open/inventory/count/query
获取盘亏数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置元数据以便正确调用聚水潭的API接口。以下是该接口的元数据配置:
{
"api": "/open/inventory/count/query",
"method": "POST",
"number": "io_id",
"id": "io_id",
"idCheck": true,
"request": [
{"field":"page_index","label":"开始页码","type":"string","describe":"第几页,从第一页开始,默认1","value":"1"},
{"field":"page_size","label":"每页条数","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}}"},
{"field":"io_ids","label":"盘点单号","type":"string","describe":"指定盘点单号,多个用逗号分隔,最多50,和时间段不能同时为空"},
{"field":"status","label":"单据状态","type":"string","describe":"单据状态,Confirmed=生效,WaitConfirm待审核,Creating=草拟,Archive=归档,Cancelled=作废","value":"Confirmed"}
],
"condition_bk":[[{"field": "items.qty", "logic": "lt", "value": 0}]],
"condition":[[{"field": "items.qty", "logic": "lt", "value": 0}]],
"omissionRemedy":{
"crontab": "2 10 * * *",
"takeOverRequest":[
{
"field": "modified_begin",
"label": "修改开始时间",
"type": "string",
"is_required": false,
"describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
"value": "{{DAYS_AGO_3|datetime}}",
"id": "modified_beginESNnj"
}
]
}
}
请求参数详解
- page_index: 开始页码,从第一页开始。
- page_size: 每页条数,默认30条记录。
- modified_begin: 修改开始时间,用于筛选最近更新的数据。
- modified_end: 修改结束时间,与
modified_begin
一起使用。 - io_ids: 指定盘点单号,可以指定多个,用逗号分隔。
- status: 单据状态,此处我们只获取已生效的记录(Confirmed)。
这些参数确保我们能够准确地获取到所需的数据,并且可以根据业务需求灵活调整。
数据过滤与条件设定
在获取数据后,我们需要对数据进行过滤,以确保只处理符合条件的数据。本文中的条件是:items.qty < 0
。这意味着我们只关心数量小于零的记录,即盘亏的数据。
"condition":[[{"field": "items.qty", "logic": "lt", "value": 0}]]
此外,还设置了一个备用条件 condition_bk
,以防主条件失效时使用。
异常处理与补救措施
为了确保数据同步过程的可靠性,我们还配置了异常处理机制。在这里,通过定时任务(crontab)来执行补救措施:
"omissionRemedy":{
...
}
该机制会在每天10点02分执行一次补救任务,以确保遗漏的数据能够被及时捕获和处理。
实际调用示例
以下是一个实际的API调用示例:
{
"page_index": 1,
"page_size": 50,
"modified_begin": "{{LAST_SYNC_TIME|datetime}}",
"modified_end": "{{CURRENT_TIME|datetime}}",
// 可选字段,根据需要填写
}
通过这种方式,我们可以高效地从聚水潭系统中获取到最新的盘亏数据,并为后续的数据转换与写入做好准备。
小结
本文详细介绍了如何通过轻易云数据集成平台调用聚水潭接口 /open/inventory/count/query
获取并加工盘亏数据。通过合理配置元数据、设置请求参数、应用过滤条件以及异常处理机制,可以确保数据集成过程的高效性和可靠性。这为后续的数据转换与写入奠定了坚实基础。
盘亏同步:轻易云数据集成平台到金蝶云星空的ETL转换
在数据集成过程中,将源平台的数据转换为目标平台可接受的格式是关键步骤。本文将详细探讨如何利用轻易云数据集成平台将盘亏数据转换并写入金蝶云星空API接口。
元数据配置解析
我们首先来看一下元数据配置,这里主要涉及到金蝶云星空的batchSave
API接口。该接口采用POST方法,支持批量保存操作,并且需要进行ID检查。
以下是元数据配置的主要字段及其解析方式:
- 单据编号(FBillNo):直接从源数据中获取
io_id
。 - 单据类型(FBillTypeID):固定值
PKCKD
,通过ConvertObjectParser
解析为目标系统所需格式。 - 库存组织(FStockOrgId)和领用组织(FPickOrgId):均为固定值
100
,同样使用ConvertObjectParser
进行解析。 - 库存方向(FStockDirect):固定值为
GENERAL
。 - 日期(FDate):从源数据中获取
io_date
。 - 领料部门(FDeptId):固定值为
BM000001
,通过解析器进行转换。 - 领料人(FPickerId):需要通过基础资料中的名称进行匹配和转换。
- 货主类型(FOwnerTypeIdHead)和货主(FOwnerIdHead):分别为固定值
BD_OwnerOrg
和100
,通过解析器进行转换。 - 备注(FNote):从源数据中获取备注信息。
明细信息处理
明细信息部分是一个数组,需要特别注意每个字段的处理:
- 物料编码(FMaterialId):通过MongoDB查询获取物料编码,查询条件是SKU ID与源数据中的SKU ID匹配。
- 实发数量(FQty):计算公式为源数据中的数量乘以-1,以表示盘亏数量。
- 发货仓库(FStockId):固定值为
CK
,通过解析器进行转换。 - 总成本(FAmount)、成本价(FPrice)、货主类型(FOwnerTypeId)、货主(FOwnerId)、备注(FEntryNote)等字段根据实际需求进行配置。
其他请求参数
除了上述字段外,还需要设置一些其他请求参数:
- 业务对象表单ID (FormId):必须填写金蝶的表单ID,这里为
STK_MisDelivery
。 - 提交并审核 (IsAutoSubmitAndAudit):设置为
true
, 表示自动提交并审核。 - 验证基础资料 (IsVerifyBaseDataField):设置为
true
, 表示验证所有基础资料的有效性。 - 执行操作 (Operation):设置为
Save
, 表示保存操作。
数据转换与写入流程
- 数据请求与清洗阶段完成后,将清洗后的数据传递给ETL模块。
- 在ETL模块中,根据元数据配置对各个字段进行转换:
- 使用解析器将基础资料字段转换为目标系统所需格式;
- 通过计算公式处理数值型字段;
- 利用MongoDB查询获取关联信息,如物料编码等。
- 将处理后的数据按照目标API接口要求的格式组织成JSON对象:
{ "FormId": "STK_MisDelivery", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": true, "Operation": "Save", "InterationFlags": "STK_InvCheckResult", "Model": { "FBillNo": "{io_id}", "FBillTypeID": {"FNumber": "PKCKD"}, ... "FEntity": [ { "FMaterialId": {"FNumber": "_mongoQuery ..."}, ... } ] } }
- 将JSON对象通过HTTP POST方法发送至金蝶云星空的API接口,实现数据写入。
以上步骤确保了盘亏同步过程中每个环节的数据准确性和一致性,从而实现了高效、无缝的数据集成。