案例分享:吉客云数据集成到金蝶云星空——采购退料对接
在企业的采购退料管理中,高效、准确的数据流转至关重要。本次案例聚焦于使用轻易云数据集成平台,将吉客云中的采购退料信息高效地同步到金蝶云星空,实现系统间无缝对接。具体方案名称为“采购退料对接--正数--已测试”。
1. 系统概述与技术要点
为了实现这一目标,我们利用了多个核心特性:
-
API接口调用:通过
erp.storage.goodsdocout.v2
从吉客云获取采购退料数据,再通过batchSave
接口将处理后的数据写入金蝶云星空。 -
批量集成与快速写入:支持高吞吐量的数据写入能力,使得大量数据能够快速被集成,明显提升了整体时效性。
-
实时监控与日志记录:确保每个环节都能透明可视,并提供集中监控和告警系统以追踪任务状态和性能。
2. 数据获取与转换逻辑
首先,通过调用吉客云的erp.storage.goodsdocout.v2
API接口,抓取需要处理的采购退料数据。在这个过程中,需要特别关注分页及限流问题,以确保大规模数据提取过程中的稳定性。获取到原始数据后,还需根据业务需求进行格式转换,以适应金蝶云星空的数据结构。
3. 数据质量控制与异常处理机制
为了保证传输过程中不漏单、不出错,每条记录都会经过严格的数据质量检测。同时,当遇到异常情况或者错误时,会有相应的重试机制以及详细的日志记录,这不仅方便调试,也保障了业务持续不中断。
4. 数据写入操作优化
通过自定义批量提交策略,使得大量采集来的订单可以一次性批量写入至金蝶云星空,大幅降低API调用次数,提高效率。此外,在实际运行中会根据业务需求定制化映射字段,确保每一条记录都精准无误地映射至对应表单字段,从根本上提高了录入正确率和一致性。这套方案成功证明,无论是技术实现还是实际应用效果,都达到了预期目标,为企业在数字化管理方面提供了强有力支撑。
下一部分将继续深入分析具体实现步骤,包括代码实例及相关配置细节,请保持关注。
调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统获取数据并进行初步加工。本文将详细探讨如何通过调用吉客云的erp.storage.goodsdocout.v2
接口来实现这一目标,并分享具体的技术实现案例。
接口配置与请求参数
首先,我们需要配置接口及其请求参数。根据元数据配置,erp.storage.goodsdocout.v2
接口采用POST方法进行数据查询,主要参数如下:
pageIndex
: 分页页码,类型为字符串。pageSize
: 分页页数,类型为字符串,默认值为50。goodsDocNo
: 入库单号,类型为字符串。startDate
: 创建时间的起始时间,类型为字符串,使用动态变量{{LAST_SYNC_TIME|datetime}}
。endDate
: 创建时间的结束时间,类型为字符串,使用动态变量{{CURRENT_TIME|datetime}}
。inouttype
: 出库类型,类型为字符串,此处固定值为205(退料入库)。selelctFields
: 返回参数列表,以逗号分隔。
以下是一个典型的请求示例:
{
"pageIndex": "1",
"pageSize": "50",
"goodsDocNo": "",
"startDate": "{{LAST_SYNC_TIME|datetime}}",
"endDate": "{{CURRENT_TIME|datetime}}",
"inouttype": "205",
"selelctFields": "goodsdocNo,inOutDate,inouttype,vendCustomerCode,vendCustomerName,warehouseCode,warehouseName,inOutReason,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.goodsName,goodsDocDetailList.estCost,goodsDocDetailList.estPrice,goodsDocDetailList.quantity,goodsDocDetailList"
}
数据过滤与条件设置
为了确保获取的数据符合业务需求,我们需要设置一些过滤条件。根据元数据配置中的条件部分,我们将应用以下逻辑:
goodsDocDetailList.quantity > 0
warehouseName 不包含 'VMI'
这些条件可以在请求处理后,通过代码或平台内置功能进行过滤。
数据平铺与自动填充
元数据配置中提到需要对返回的数据进行平铺处理,即将嵌套的goodsDocDetailList
展开成平铺结构。这一步骤可以通过编写相应的数据处理逻辑来实现。例如:
def flatten_goods_doc_detail(response_data):
flat_data = []
for record in response_data:
for detail in record.get('goodsDocDetailList', []):
flat_record = {**record}
flat_record.update(detail)
flat_record.pop('goodsDocDetailList', None)
flat_data.append(flat_record)
return flat_data
此外,自动填充响应(autoFillResponse)功能可以简化数据处理过程,使得返回的数据结构更加一致和易于使用。
异常处理与补偿机制
在实际操作中,不可避免地会遇到各种异常情况,如网络中断、接口超时等。为了确保数据集成过程的稳定性和可靠性,我们需要设计相应的异常处理和补偿机制。
元数据配置中提供了一个补偿机制示例,通过定时任务(crontab)来接管请求,并重新拉取过去三天的数据:
{
"crontab": "1 2 * * *",
"takeOverRequest": [
{
"field": "startDate",
"value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )"
}
]
}
该配置表示每天凌晨2:01执行一次任务,从当前时间往前推三天重新拉取数据,以确保没有遗漏。
实际应用案例
假设我们需要集成采购退料数据,并且已经完成了上述配置和准备工作。以下是一个实际应用案例:
- 初始化请求参数:根据当前时间和上次同步时间生成请求参数。
- 调用接口:通过POST方法向吉客云接口发送请求。
- 处理响应:接收并解析响应数据,根据条件进行过滤和平铺处理。
- 异常处理:捕获可能出现的异常情况,并触发补偿机制重新拉取数据。
通过这种方式,我们可以高效地从吉客云获取所需的数据,并进行初步加工,为后续的数据转换与写入做好准备。
轻易云数据集成平台:采购退料对接至金蝶云星空API接口的ETL转换
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和元数据配置。
API接口与元数据配置解析
在本次集成方案中,我们使用了金蝶云星空的batchSave
API接口。该接口通过POST方法提交请求,支持批量保存采购退料单据。以下是关键元数据配置项及其技术解析:
-
API基本信息
{ "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true }
api
: 指定调用的API接口名称。effect
: 操作类型,这里为执行操作。method
: HTTP请求方法,这里为POST。idCheck
: 是否进行ID校验。
-
操作定义
{ "operation": { "method": "merge", "field": "goodsDocDetailList_ownerName,goodsdocNo", "bodyName": "Fentity", "header": ["goodsdocNo", "inOutDate", "vendCustomerCode", "warehouseCode", "goodsDocDetailList_ownerName"], "body": ["goodsDocDetailList_goodsNo", "goodsDocDetailList_quantity", "goodsDocDetailList_estPrice", "goodsDocDetailList_estCost"] } }
method
: 操作方法,这里为合并(merge)。field
: 合并依据字段。bodyName
: 主体名称。header
和body
: 定义了请求头和请求体中的字段映射关系。
-
请求参数映射 请求参数映射用于将源平台的数据字段转换为目标平台所需的格式。例如:
{ "field": "FJKYNo", "label": "吉客云单号", "type": "string", "describe": "单据编号", "value": "{goodsdocNo}", ... }
该配置将源平台中的
goodsdocNo
字段映射为金蝶云星空中的FJKYNo
字段。 -
基础资料解析器 在处理基础资料时,我们使用了自定义解析器,例如:
{ ... "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, ... }
该解析器将源平台中的基础资料编码转换为目标平台所需格式。
-
明细信息处理 明细信息通过嵌套数组结构进行处理:
{ ... { ... “children”: [ { “field”: “FMATERIALID”, “label”: “物料编码”, “type”: “string”, “describe”: “基础资料”, “parser”: {“name”: “ConvertObjectParser”,“params”:“FNumber”}, “value”:“{{Fentity.goodsDocDetailList_goodsNo}}” }, ... ] } ... }
这里定义了物料编码、实退数量、仓库、含税单价、价税合计等明细信息的映射关系和解析方式。
-
其他请求参数
{ ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_MRB"}, {"field":"Operation","label":"执行的操作","type":"string","value":"batchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}, {"field":"SubSystemId","label":"系统模块","type":"string","describe":"默认仓库模块","value":"21"}, {"field":"InterationFlags","label":"允许负库存","type":"string","value":"STK_InvCheckResult"} ... }
这些参数用于控制API调用过程中的特定行为,例如自动提交并审核、验证基础资料有效性等。
数据转换与写入流程
-
数据提取与清洗
-
数据转换
-
数据写入
在实际操作中,通过上述元数据配置,可以实现从源平台到金蝶云星空的数据无缝对接。每个字段的映射和解析都经过精心设计,以确保数据准确无误地传输到目标系统中。