吉客云数据集成到金蝶云星空:其他入库-翻新入库案例
在进行吉客云与金蝶云星空的系统对接中,针对"其他入库-翻新入库"这一具体业务场景,我们采用了轻易云数据集成平台来完成整个集成过程。在这个案例中,核心技术点集中在数据高效传输、异常处理和接口调用等方面。
为了确保从吉客云获取的数据完整无误地传输到金蝶云星空,我们选择使用erp.storage.goodsdocin.v2
API从吉客云拉取数据,并通过batchSave
API将批量数据写入到金蝶云星空。以下列出了一些关键问题及其解决方案:
-
高吞吐量的数据写入能力: 使用轻易云提供的高吞吐量功能,使得大量来自吉客云的库存信息能够快速且可靠地导入至金蝶云系统。这极大提升了整个业务流程的数据处理时效性。
-
定时抓取与分页限流处理: 由于吉客云接口有分页和限流机制限制,我们设计了一套可靠的定时调度程序,能够按设定频率自动抓取最新的数据。同时,通过适应性的分页策略,有效避免接口请求超载的问题,从而保障了数据采集任务的顺利执行。
-
自定义数据转换逻辑: 为了解决两者之间因业务逻辑或数据结构差异产生的不兼容问题,对所有获取到的数据进行了必要的清洗和转换。我们使用可视化工具直观创建并管理这些转化规则,以确保每一条记录都能以符合目标系统要求的格式存储。
-
实时监控与告警系统: 在整个过程中,通过集中式监控和告警机制,可以实时跟踪各项任务状态。当出现错误或异常情况(如网络故障、API响应失败)时,及时触发预警并采取重试措施,从而保证了整体操作流程的健壮性和连贯性。
-
质量监控与日志记录: 实现了对每一步骤的数据质量监控,并保留详细日志,一旦发现任何不一致或错误,都可以迅速定位原因并加以修正。这不仅提升了最终结果的一致性,同时也为后续优化提供了宝贵的信息依据。
接下来的内容将详细介绍如何通过实际配置步骤,将上述技术要素融汇于具体操作之中,以及在面对复杂业务需求时所采取的一系列有效措施。
调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的环节。本文将详细探讨如何通过轻易云数据集成平台调用吉客云接口erp.storage.goodsdocin.v2
,并对获取的数据进行初步加工。
接口配置与请求参数
为了从吉客云获取入库数据,我们需要配置相应的API接口及其请求参数。以下是元数据配置的详细说明:
- API:
erp.storage.goodsdocin.v2
- 请求方法:
POST
- 主要字段:
pageIndex
: 分页页码,类型为整数。pageSize
: 分页页数,类型为整数,默认值为50。startDate
: 创建时间的起始时间,类型为字符串,使用模板变量{{LAST_SYNC_TIME|datetime}}
。endDate
: 创建时间的结束时间,类型为字符串,使用模板变量{{CURRENT_TIME|datetime}}
。selelctFields
: 返回字段列表,包括goodsdocNo
,inOutDate
,gmtCreate
,inouttype
,vendCustomerCode
,warehouseCode
,warehouseName
,redStatus
,goodsDocDetailList.goodsNo
,goodsDocDetailList.estCost
,goodsDocDetailList.quantity
, 和goodsDocDetailList
。inouttype
: 入库类型,固定值为108(翻新入库)。
请求示例
以下是一个具体的请求示例:
{
"pageIndex": 1,
"pageSize": 50,
"startDate": "{{LAST_SYNC_TIME|datetime}}",
"endDate": "{{CURRENT_TIME|datetime}}",
"selelctFields": "goodsdocNo,inOutDate,gmtCreate,inouttype,vendCustomerCode,warehouseCode,warehouseName,redStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.estCost,goodsDocDetailList.quantity,goodsDocDetailList",
"inouttype": 108
}
数据清洗与初步加工
在获取到原始数据后,需要对数据进行清洗和初步加工,以确保其质量和一致性。以下是几个关键步骤:
-
自动填充响应: 配置中设置了
autoFillResponse:true
,这意味着系统会自动处理并填充响应中的字段,无需手动解析。 -
条件过滤: 使用条件过滤机制来筛选符合业务需求的数据。例如,通过配置条件:
{ "field":"inouttype", "logic":"eqv2", "value":"101" }, { "field":"goodsDocDetailList.quantity", "logic":"gt", "value":"0" }
可以确保只处理入库类型为101且数量大于0的数据。
-
分页处理: 为了高效处理大批量数据,通过分页机制逐页请求和处理数据。每次请求时更新
pageIndex
以获取下一页的数据。 -
缺失补救: 配置了定时任务(crontab)来定期检查和补救可能遗漏的数据。例如,每天凌晨2点执行一次任务:
{ "crontab":"1 2 * * *", "takeOverRequest":[ { "field":"startDate", "value":"_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )" } ] }
这将确保即使某些数据在首次请求时未能成功获取,也能在后续任务中被补救。
数据转换与写入
经过上述步骤清洗和初步加工后的数据,将进入下一阶段:数据转换与写入。这一阶段通常涉及将清洗后的数据转换为目标系统所需的格式,并写入目标数据库或系统中。在此过程中,可以利用轻易云平台提供的丰富工具和功能,实现高效、可靠的数据转换和写入操作。
通过以上步骤,我们可以高效地调用吉客云接口获取并加工所需的数据,为后续的数据集成流程打下坚实基础。
使用轻易云数据集成平台将数据转换并写入金蝶云星空API接口的技术案例
在本案例中,我们将详细探讨如何使用轻易云数据集成平台将源平台的数据进行ETL转换,并最终写入目标平台金蝶云星空API接口。我们将重点关注元数据配置和API接口的技术细节。
元数据配置解析
元数据配置是实现数据转换和写入的关键。以下是一个详细的元数据配置示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "goodsDocDetailList_ownerName,inOutMonth",
"bodyName": "Fentity",
"bodySum": ["goodsDocDetailList_quantity"],
"header": ["goodsDocDetailList_ownerName", "inOutMonth", "goodsDocDetailList_ownerName"],
"body": ["goodsDocDetailList_goodsNo", "warehouseCode", "goodsDocDetailList_quantity"]
},
"request": [
{"field":"FJKYNo","label":"吉客云单号","type":"string","describe":"单据编号"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD94_SYS"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{goodsDocDetailList_ownerName}","mapping":{"direction":"positive","target":"6441f0214af70a2f240adb22"}},
{"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"GENERAL"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{inOutMonth}"},
{"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000029"},
{"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
{"field":"FOwnerIdHead","label":"货主","type":"","describe":"","parser":{"name":"","params":""},"value":"","mapping":{"target":"","direction":""}},
{"field":"","label":"","type":"","children":[{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","parent":""},{"parent":"","label":"","field":"","type":"","value":"","parser":{"name":"","params":""}},{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":"","parent":""},{"field":"","label":"","type":"","describe":"",
主要字段解析
api
:指定调用的API名称,此处为batchSave
。method
:HTTP请求方法,通常为POST
。idCheck
:是否进行ID检查,布尔值。operation
:定义了操作方式、字段及其映射关系。method
:操作方法,此处为merge
。field
:用于合并的字段。bodyName
:主体名称。bodySum
:需要汇总的字段。header
和body
:分别定义了请求头和请求体中的字段。
请求参数解析
request
数组中的每个对象代表一个请求参数:field
:参数名称。label
:参数标签,用于描述该参数。type
:参数类型,如字符串(string)、数组(array)等。describe
:对参数的描述。parser
:用于解析参数值的方法及其参数,例如,使用ConvertObjectParser
解析带有编号的对象。value
:参数值,可以是静态值或动态映射值。
数据转换与写入流程
-
数据请求与清洗: 首先,通过轻易云平台从源系统请求原始数据,并进行必要的数据清洗和预处理。这一步骤确保了数据质量,为后续的ETL过程奠定基础。
-
数据转换: 根据元数据配置,将清洗后的源数据进行格式转换,使其符合金蝶云星空API接口所需的数据格式。例如,将库存组织(FStockOrgId)映射为对应的编号,并将日期(FDate)格式化为目标系统接受的格式。
-
构建请求体: 使用元数据配置中的字段定义,构建符合金蝶云星空API要求的JSON请求体。例如,构建包含物料编码(FMATERIALID)、收货仓库(FSTOCKID)和实收数量(FQty)的明细信息数组。
-
发送请求: 使用HTTP POST方法,将构建好的JSON请求体发送到金蝶云星空API接口。确保在发送前进行必要的验证,如ID检查和基础资料有效性验证。
-
结果处理: 接收并处理金蝶云星空API返回的响应结果。如果成功,则记录成功日志;如果失败,则捕获错误信息并进行相应处理,如重试或报警。
通过上述步骤,我们实现了从源系统到目标系统的数据无缝对接,确保了业务流程的连续性和数据的一致性。