重跑数据/分销—旺店通销售出库单=>金蝶销售出库单(补货+换货)技术案例分享
在现代企业的日常运营中,不同系统之间的数据对接与集成是确保业务流程顺畅、高效运行的重要环节。本文将重点介绍如何通过轻易云数据集成平台,将旺店通·企业奇门中的销售出库单数据无缝同步到金蝶云星空,实现补货和换货功能。
背景描述 在该项目中,我们需要解决一个常见且具有挑战性的需求:如何确保来自旺店通·企业奇门的大量销售出库单能够准确、及时地写入到金蝶云星空系统中,并在过程中实现高吞吐量的数据处理,保证不漏单、不重单。
技术细节
-
接口调用与数据抓取:
- 首先,通过调用
wdt.stockout.order.query.trade
API 接口,从旺店通·企业奇门获取最新的销售出库单。这一步骤需要考虑接口的分页和限流问题,以避免影响源系统性能。
- 首先,通过调用
-
数据转换与映射:
- 旺店通·企业奇门和金蝶云星空系统在数据结构上可能存在差异。因此,利用轻易云平台提供的自定义数据转换逻辑,对抓取到的数据进行必要的格式化处理,使其符合目标系统
batchSave
API 的要求。
- 旺店通·企业奇门和金蝶云星空系统在数据结构上可能存在差异。因此,利用轻易云平台提供的自定义数据转换逻辑,对抓取到的数据进行必要的格式化处理,使其符合目标系统
-
批量写入与监控机制:
- 通过轻易云平台强大的高吞吐量数据写入能力,将大量已转换的数据快速而可靠地导入至金蝶云星空。此外,为确保整个过程无误,还设置了实时监控和告警机制,对每一次数据传输任务进行跟踪并记录日志,便于及时发现并处理异常情况。
-
错误重试与异常处理:
- 在实际操作中,由于网络波动或服务端限制等原因,可能会遇到部分请求失败的情况。对此,我们设计了健壮的错误重试机制,通过捕获具体异常类型后自动重新发送请求,以最大程度提高整体成功率,减少人为干预工作量。
-
集中管理API资产:
- 同时,为帮助运维人员全面掌握API使用情况,我们利用统一视图控制台功能,对所有涉及此次对接项目中的API资产进行集中管理,实现资源优化配置,提高整体运作效率。
以上步骤涵盖了从初始配置、接口调用,到最后的数据存储及监控等全生命周期的重要环节。这种基于实际案例的方法不仅增强了理解,也为类似场景提供了可行性参考。在下一部分内容里,我们将深入探讨这些步骤
使用旺店通·企业奇门接口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"},
{"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":"分页大小","type":"string","describe":"每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40,使用举例单击这里","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"page_no","label":"页号","type":"string","describe":"不传值默认从0页开始","value":"{PAGINATION_START_PAGE}"}
],
"autoFillResponse": true,
"condition":[
[{"field": "trade_type", "logic": "in", "value": "2,3,7,101,8"},
{"field": "shop_name", "logic": "eqv2", "value": "'系统分销店铺ae89e42'"}]
]
}
请求参数详解
- start_time 和 end_time:用于增量获取数据,这两个字段分别表示开始时间和结束时间。
- status:状态码为110表示已完成的订单。
- src_order_no、src_tid、stockout_no:这些字段用于标识订单和出库单的相关信息。
- shop_no 和 warehouse_no:分别表示店铺编号和仓库编号,用于区分不同的店铺和仓库。
- FSaleDeptID:销售部门,通过
ConvertObjectParser
解析为具体的部门编号。
分页参数包括:
- page_size:每页返回的数据条数。
- page_no:当前请求的页号。
数据请求与清洗
在调用接口时,我们需要注意以下几点:
- 增量同步机制:通过
start_time
和end_time
字段实现增量同步,这样可以确保每次只获取最新的数据。 - 状态过滤:通过
status
字段过滤出已完成的订单,这样可以减少无效数据的处理。 - 分页处理:由于接口返回的数据可能较多,我们需要通过分页参数来控制每次请求的数据量。
示例请求体如下:
{
“start_time”: “2023-10-01 00:00:00”,
“end_time”: “2023-10-01 23:59:59”,
“status”: “110”,
“page_size”: “50”,
“page_no”: “0”
}
数据转换与写入
在获取到原始数据后,需要对其进行初步清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括:
- 字段映射与重命名:将源系统中的字段映射到目标系统中的相应字段,并进行必要的重命名。
- 数据类型转换:确保所有字段的数据类型符合目标系统的要求,例如日期格式、数字精度等。
- 异常数据处理:过滤掉不符合业务规则或存在异常的数据记录。
例如,将源系统中的出库单号映射到目标系统中的订单号,并将日期格式转换为标准格式:
{
“order_id”: “{{stockout_no}}”,
“order_date”: “{{stockout_date|date('yyyy-MM-dd')}}”
}
通过以上步骤,我们可以高效地从旺店通·企业奇门接口中获取并加工所需的数据,为后续的数据集成工作打下坚实基础。
利用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,并最终写入目标平台——金蝶云星空。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。
API接口配置
我们需要配置一个名为batchSave
的API接口,使用POST方法进行数据传输。以下是具体的元数据配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"value": "_function CASE {trade_type} WHEN '2' THEN 'ZYD-017' WHEN '3' THEN 'ZYD-104' WHEN '7' THEN 'ZYD-105' WHEN '8' THEN 'ZYD-105' WHEN '101' THEN 'ZYD-103' END",
"parser": {
"name": "ConvertObjectParser",
"params": "FNUMBER"
}
},
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{order_no}"
},
{
...
}
],
...
}
数据字段解析与转换
-
单据类型 (FBillTypeID):
- 使用条件语句根据
trade_type
字段的值确定单据类型。 - 示例:当
trade_type
为2
时,单据类型为ZYD-017
。 - 使用
ConvertObjectParser
解析器,将其转换为金蝶系统识别的编码格式。
- 使用条件语句根据
-
单据编号 (FBillNo):
- 直接映射源数据中的
order_no
字段。
- 直接映射源数据中的
-
日期 (FDate):
- 映射源数据中的
consign_time
字段。
- 映射源数据中的
-
销售组织 (FSaleOrgId):
- 根据不同的店铺编号(如E0029、E0030等)映射到相应的销售组织编码。
- 使用条件语句和解析器进行转换。
-
客户 (FCustomerID):
- 映射源数据中的
fenxiao_nick
字段,并通过解析器将其转换为金蝶系统识别的编码格式。 - 配置了正向映射,确保目标系统能正确识别该客户信息。
- 映射源数据中的
-
发货组织 (FStockOrgId):
- 类似于销售组织,根据店铺编号映射到相应的发货组织编码,并使用解析器进行转换。
-
销售部门 (FSaleDeptID):
- 映射源数据中的
fenxiao_nick
字段,通过解析器和正向映射确保目标系统识别。
- 映射源数据中的
-
物料明细 (FEntity):
- 包含多个子字段,如物料编码、仓库、计价数量、价税合计、总毛重和批次号等。
- 每个子字段都需要进行相应的数据映射和解析。例如,物料编码(FMaterialID)使用源数据中的
spec_no
字段,通过解析器转换为金蝶系统识别的编码格式。
其他请求参数配置
除了主要的数据字段外,还需要配置一些其他请求参数:
{
...
"otherRequest": [
{
...
},
{
...
}
],
...
}
这些参数包括表单ID(FormId)、操作类型(Operation)、是否自动提交和审核(IsAutoSubmitAndAudit)等。这些参数确保了在写入目标平台时,能够正确执行相应的操作。
操作方法
最后,我们定义操作方法为批量保存(batchArraySave),每次处理20条记录:
{
...
"operation": {
...
"rowsKey": "array",
...
"rows": 20,
...
...
}
}
通过上述配置,我们可以实现从源平台到金蝶云星空的数据ETL转换,并成功写入目标平台。这不仅提高了数据处理效率,也确保了各个系统间的数据一致性和准确性。