案例:重跑数据—分销旺店通销售出库单=>金蝶销售出库单(正常销售&刷单)
在企业不断扩展其信息系统的过程中,数据的无缝集成是确保业务流畅运行的重要环节。本文将分享如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据高效对接到金蝶云星空,以“重跑数据—分销旺店通销售出库单=>金蝶销售出库单(正常销售&刷单)”为具体案例,解析整个技术过程。
1. 确保集成不漏单
为了保证从旺店通获取的数据完整性,我们调用了wdt.stockout.order.query.trade
接口定时抓取旺店通·企业奇门的最新订单数据。通过设置合理的时间间隔和分页处理机制,有效避免遗漏任何一条待处理订单。同时,实时监控与日志记录功能确保每一次API调用都被详细记录,可追溯并排查潜在问题。
2. 大量数据快速写入
对于大量的订单数据,我们选择使用金蝶云星空提供的batchSave
接口进行批量写入操作。这不仅提高了写入效率,还减少了网络传输时间,提高了整体处理速度。在实施过程中,通过优化批次大小和并发数,进一步提升系统性能,使得每次重跑任务能够迅速完成。
3. 数据格式差异处理
面对不同平台之间的数据结构差异,我们采用自定义映射规则,将旺店通·企业奇门的数据字段准确转换为金蝶云星空所需格式。例如,对应字段类型、长度及必填项等细节均进行了严格校验与匹配,从而确保两端系统能够顺利交互,不产生误解或错误。
4. 异常处理与错误重试机制
为增强整个集成过程的鲁棒性,设计了一套完善的异常处理策略。一旦在向金蝶云星空提交请求时发生错误,比如网络超时或验证失败,该机制会自动进行多次重试,并记录相关日志以便后续分析。此外,为防止因短期异常导致的大规模重复提交,与主要业务逻辑分离的方法使恢复更加灵活快捷。
本篇技术文章开头部分重点介绍上述关键点,下文将深入解析各个步骤,并提供相关代码示例及配置详情。
调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是该接口的元数据配置:
{
"api": "wdt.stockout.order.query.trade",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"idCheck": true,
"request": [
{"field":"start_time","label":"开始时间","type":"datetime","describe":"增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"end_time","label":"结束时间","type":"datetime","describe":"增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{CURRENT_TIME|datetime}}"},
{"field":"status","label":"状态","type":"string","describe":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货","value":"110,95"},
{"field":"src_order_no","label":"系统订单编号","type":"string","describe":"111"},
{"field":"src_tid","label":"原始单号","type":"string","describe":"111"},
{"field":"stockout_no","label":"出库单号","type":"string","describe":"111"},
{"field":"shop_no","label":"店铺编码","type":"string","describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息"},
{"field":"warehouse_no","label":"仓库编码","type":"string","describe":"代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)"},
{"field": "FSaleDeptID", "label": "销售部门", "type": "string", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}}
],
"otherRequest": [
{"field": "page_size", "label": "page_size", "type": "string", "describe": "每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "page_no", "label": "page_no", "type": "string", "describe": "不传值默认从0页开始", "value": "{PAGINATION_START_PAGE}"}
],
"autoFillResponse": true,
"condition":[
[{"field": "trade_type", "logic": "eqv2", "value": 1}, {"field": "shop_name", "value" : "系统分销店铺ae89e42" , "logic" : "eqv2"}]
]
}
请求参数解析
-
时间参数:
start_time
和end_time
用于增量获取数据。start_time
是上次同步的时间点,而end_time
是当前时间点。- 时间格式为
yyyy-MM-dd HH:mm:ss
。
-
状态参数:
status
参数用于过滤订单状态,这里我们关注的是已发货(95)和已完成(110)的订单。
-
其他参数:
shop_no
和warehouse_no
分别代表店铺和仓库的唯一编码,用于区分不同的店铺和仓库。FSaleDeptID
使用了一个名为ConvertObjectParser
的解析器,将其转换为特定格式。
-
分页参数:
page_size
和page_no
用于控制分页,每次请求的数据条数和页码。
数据请求与清洗
在调用接口后,我们会获得一批原始数据。这些数据需要经过清洗,以确保其符合目标系统的要求。以下是清洗步骤:
-
字段映射:
- 将源系统中的字段映射到目标系统所需的字段。例如,将
stockout_id
映射到目标系统中的订单ID。
- 将源系统中的字段映射到目标系统所需的字段。例如,将
-
数据类型转换:
- 确保所有字段的数据类型符合目标系统要求。例如,将字符串类型的日期转换为日期类型。
-
过滤无效数据:
- 根据业务规则过滤掉无效或不必要的数据。例如,只保留状态为已发货和已完成的订单。
数据转换与写入
清洗后的数据需要进行转换,以便写入目标系统。在这个阶段,我们可能需要进行如下操作:
-
格式化输出:
- 将清洗后的数据格式化为目标系统所需的JSON或XML格式。
-
API调用写入:
- 使用目标系统提供的API将转换后的数据写入。例如,通过金蝶API将销售出库单信息写入金蝶系统。
以上就是通过轻易云数据集成平台调用旺店通·企业奇门接口并对数据进行初步加工的详细过程。通过合理配置元数据和精细化的数据处理,可以确保高效、准确地实现不同系统间的数据集成。
轻易云数据集成平台:ETL转换与金蝶云星空API接口集成案例
在数据集成生命周期的第二步,我们将已从源平台获取并清洗的数据进行ETL转换,最终写入目标平台——金蝶云星空API接口。本文将详细解析这一过程,重点探讨如何利用元数据配置实现数据的高效转换与传输。
数据请求与清洗
首先,我们假设已经完成了数据请求与清洗阶段,获得了结构化的源数据。接下来,我们需要将这些数据转换为金蝶云星空API能够接收的格式,并通过API接口写入目标平台。
元数据配置详解
元数据配置是ETL过程中的核心环节,它决定了如何将源数据映射到目标系统所需的数据结构中。以下是我们使用的元数据配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"value": "_function CASE '{flag_name}' WHEN '刷单' THEN 'ZYD-106' ELSE 'ZYD-017' END",
"parser": {
"name": "ConvertObjectParser",
"params": "FNUMBER"
}
},
...
],
...
}
核心字段解析
-
FBillTypeID(单据类型):
- 配置:
"value":"_function CASE '{flag_name}' WHEN '刷单' THEN 'ZYD-106' ELSE 'ZYD-017' END"
- 描述:根据
flag_name
字段的值判断单据类型。如果是“刷单”,则设置为ZYD-106
,否则为ZYD-017
。 - 转换器:使用
ConvertObjectParser
将结果转换为金蝶所需的格式。
- 配置:
-
FBillNo(单据编号):
- 配置:
"value":"{order_no}"
- 描述:直接映射源数据中的订单编号字段。
- 配置:
-
FDate(日期):
- 配置:
"value":"{consign_time}"
- 描述:映射发货时间字段。
- 配置:
-
FSaleOrgId(组织):
- 配置:
"value":"_function CASE '{shop_no}' WHEN 'E0029' THEN '3000' ... ELSE '7000' END"
- 描述:根据店铺编号映射销售组织ID。
- 转换器:使用
ConvertObjectParser
进行格式转换。
- 配置:
-
FCustomerID(客户):
- 配置:
"value":"{fenxiao_nick}"
- 描述:映射分销商昵称字段。
- 转换器及映射关系:通过
ConvertObjectParser
和指定的目标ID进行双向映射。
- 配置:
-
FEntity(实体行项目):
- 配置示例:
{ ... "children":[ { ... {"field":"FMaterialID","label":"物料编码","type":"string","value":"{spec_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FStockID","label":"仓库","type":"string","value":"_findCollection find FNumber from ... where FName={warehouse_name}"}, ... } ] }
- 描述:实体行项目包含多个子字段,如物料编码、仓库、计价数量等,每个子字段都通过特定规则和转换器进行处理。
- 配置示例:
API调用与写入
在完成所有字段的配置和映射后,通过调用金蝶云星空的API接口,将处理后的数据批量写入目标系统。具体操作如下:
- API调用方式:
- 方法:POST
- API路径:batchSave
- 请求体构建: 根据元数据配置构建请求体,将所有字段及其对应值封装成JSON对象。
- 执行写入操作: 调用API接口,将构建好的请求体发送至金蝶云星空,实现批量保存操作。
{
...
"FormId": "SAL_OUTSTOCK",
...
}
总结
通过上述步骤,我们成功地将源平台的数据进行了ETL转换,并通过金蝶云星空API接口实现了数据写入。在这个过程中,元数据配置起到了至关重要的作用,确保了每个字段都能正确地映射和转换,为高效的数据集成奠定了基础。