吉客云数据集成到金蝶云星空: 爱尚直发仓采购入库技术案例
在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台实现吉客云与金蝶云星空的系统对接,具体应用于爱尚直发仓采购入库流程。该方案的核心是利用丰富而灵活的API接口,以及强大的数据处理能力,实现两个系统间的大量数据快速、准确且高效地传输。
首先,通过调用吉客云提供的erp.storage.goodsdocout.v2
接口来获取采购入库的数据,该过程需要解决分页和限流问题,以确保所有交易记录都能完整无误地从吉客云抽取出来。同时,为了使得大批量的数据写入到金蝶云星空,我们采用其batchSave
API,并设计了一套可靠的数据映射和转换逻辑,适配业务需求及两端不同的数据结构。
为进一步提升透明度和管理效率,集中监控与告警系统被引入实时跟踪整个数据集成任务。在遇到异常情况时,将自动触发错误重试机制,保证关键业务环节的不间断运行。此外,自定义的数据质量监控工具也为我们提供了及时发现并处理潜在问题的方法。
以下内容将结合实际操作细节,逐步剖析各个技术要点及其实现步骤,从而全面展示此集成方案如何成功运作。
调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过调用吉客云接口erp.storage.goodsdocout.v2
来获取并加工数据,以实现爱尚直发仓采购入库的集成方案。
接口配置与请求参数
在配置元数据时,我们需要定义API的基本信息和请求参数。以下是元数据配置的关键部分:
{
"api": "erp.storage.goodsdocout.v2",
"effect": "QUERY",
"method": "POST",
"number": "goodsdocNo",
"id": "goodsdocNo",
"idCheck": true,
"request": [
{"field":"pageIndex","label":"分页页码","type":"string"},
{"field":"pageSize","label":"分页页数","type":"string","value":"50"},
{"field":"goodsDocNo","label":"出库单号","type":"string"},
{"field":"startDate","label":"创建时间的起始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"endDate","label":"创建时间的结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"inouttype","label":"类型","type":"string","describe":"201-销售出库 202调拨出库 ...", "value": "201"},
{"field":"sourceBillNo","label":"来源单号","type":"string"},
{"field":"warehouseCode","label":"仓库编号","type":"string", "value": "ASCK01"},
...
],
...
}
上述配置中,api
字段指定了接口名称,method
字段指定了请求方法为POST。请求参数中,分页相关参数pageIndex
和pageSize
用于控制返回的数据量,默认每页返回50条记录。时间范围参数startDate
和endDate
分别使用上次同步时间和当前时间来限定查询范围。
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一些关键步骤:
- 自动填充响应:通过设置
autoFillResponse: true
,可以自动将响应中的字段填充到相应的数据模型中。 - 展开嵌套字段:使用
beatFlat: ["goodsDocDetailList"]
将嵌套的商品明细列表展开为平铺结构,便于后续处理。 - 条件过滤:通过设置条件过滤器,可以筛选出符合特定条件的数据。例如:
{ "condition_bk": [ [{"field": "inOutReason", "logic": "in", "value": "菜鸟"}, {"field": "userName", "logic": "notin", "value": "外部"}] ], ... }
上述配置表示仅保留出库原因包含“菜鸟”且创建人名称不包含“外部”的记录。
异常处理与补偿机制
为了确保数据集成过程的可靠性,需要设计异常处理与补偿机制。在元数据配置中,通过设置定时任务(crontab)和接管字段,可以实现自动补偿。例如:
{
...
"omissionRemedy": {
"crontab": "1 2 * * *",
...
{
"field": "startDate",
...
"value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )"
}
}
}
上述配置表示每天凌晨2点执行一次补偿任务,将起始时间设置为当前时间前3天,以确保遗漏的数据能够被重新获取。
实际应用案例
在实际应用中,通过调用吉客云接口并结合上述配置,可以高效地实现爱尚直发仓采购入库的数据集成。例如,在某次调用中,我们成功获取了过去一天内所有销售出库记录,并将其转换为标准格式后写入目标系统,实现了数据的无缝对接。
通过以上步骤,我们能够充分利用轻易云数据集成平台提供的功能,实现复杂业务场景下的数据集成需求。这不仅提升了业务透明度和效率,也确保了数据处理过程的准确性和可靠性。
使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)过程是关键的一环。本文将深入探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。
元数据配置解析
为了实现这一目标,我们需要详细了解元数据配置。以下是关键配置项及其解释:
-
API接口信息
{"api":"batchSave","effect":"EXECUTE","method":"POST","idCheck":true}
api
: 指定调用的API接口名称,这里为batchSave
。effect
: 执行效果,这里为EXECUTE
。method
: HTTP请求方法,这里为POST
。idCheck
: 是否进行ID检查,这里为true
。
-
请求参数
"request":[ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"CGDD99_SYS"}, {"field":"FDate","label":"采购日期","type":"string","describe":"日期","value":"{date}"}, {"field":"FPurchaseOrgId","label":"采购组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{goodsDocDetailList_ownerName}"}, {"field":"FSupplierId","label":"供应商","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"316"}, {"field":"FPOOrderEntry","label":"明细信息","type":"array"} ]
FBillTypeID
: 单据类型,通过ConvertObjectParser
解析,固定值为CGDD99_SYS
。FDate
: 采购日期,直接从源数据中获取。FPurchaseOrgId
: 采购组织,通过解析器获取对应的组织编号。FSupplierId
: 供应商,固定值为316
。FPOOrderEntry
: 明细信息,是一个数组类型,包含多个子字段。
-
明细信息子字段
"children":[ {"field":"FMaterialId","label":"物料编码","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{Fentity.goodsDocDetailList_goodsNo}}"}, {"field":"FQty","label":"采购数量","type":"string","describe":"数量","value":"{{Fentity.goodsDocDetailList_quantity}}"}, {"field":"FEntrySettleOrgId","label": "结算组织", "type": "string", "value": "{{Fentity.goodsDocDetailList_ownerName}}", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}}, {"field": "F_BIBA_WAREHOUSE", "label": "预计入库仓库", "type": "string", "value": "{warehouseCode}", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}} ]
FMaterialId
: 物料编码,通过解析器获取对应的物料编号。FQty
: 采购数量,从源数据中获取。FEntrySettleOrgId
: 结算组织,通过解析器获取对应的组织编号。F_BIBA_WAREHOUSE
: 预计入库仓库,通过解析器获取对应的仓库编号。
-
其他请求参数
"otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "PUR_PurchaseOrder"}, {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": bool, value: true}, {"field": Operation, label: 执行的操作, type: string, value: Save}, {"field": IsVerifyBaseDataField, label: 验证基础资料, type: bool, describe: 是否验证所有的基础资料有效性,布尔类,默认false(非必录), value: true} ]
FormId
: 金蝶表单ID,这里为PUR_PurchaseOrder
。IsAutoSubmitAndAudit
: 是否自动提交并审核,这里设置为true
。Operation
: 执行操作,这里设置为Save
。IsVerifyBaseDataField
: 是否验证基础资料有效性,这里设置为true
。
数据转换与写入流程
-
数据提取与清洗 在ETL流程中,首先需要从源系统提取原始数据,并进行必要的数据清洗和预处理。这一步通常包括去除重复记录、处理缺失值等操作。
-
数据转换 根据元数据配置,对提取的数据进行转换,使其符合目标系统(即金蝶云星空)的要求。具体步骤如下:
a. 字段映射与解析: 每个字段根据配置中的解析器进行转换,例如通过
ConvertObjectParser
将源系统中的值转换为目标系统所需格式。b. 数组处理: 对于数组类型的数据,如明细信息,需要逐条处理每个子字段,并进行相应的映射和解析。
-
构建请求体 根据配置构建最终的请求体,以JSON格式发送给金蝶云星空API接口。例如:
{ FormId: 'PUR_PurchaseOrder', FBillTypeID: { FNumber: 'CGDD99_SYS' }, FDate: '2023-10-01', FPurchaseOrgId: { FNumber: '6441f0214af70a2f240adb22' }, FSupplierId: { FNumber: '316' }, FPOOrderEntry: [ { FMaterialId: { FNumber: 'MAT001' }, FQty: '100', FEntrySettleOrgId: { FNumber: '6441f0214af70a2f240adb22' }, F_BIBA_WAREHOUSE: { FNumber: 'WH001' } } ], IsAutoSubmitAndAudit:true, Operation:'Save', IsVerifyBaseDataField:true }
-
发送请求并处理响应 最后,将构建好的请求体通过HTTP POST方法发送到金蝶云星空API接口,并处理返回的响应结果。如果成功,则表示数据已成功写入目标系统;如果失败,则需要根据返回的信息进行错误排查和修正。
通过上述步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。