销售出库-火鸡仓:从旺店通·企业奇门到金蝶云星辰V2的数据集成案例分享
在这个技术案例中,我们将深入探讨如何通过高效的技术手段,将旺店通·企业奇门系统中的销售出库数据成功集成到金蝶云星辰V2平台。此方案名为“销售出库-火鸡仓”,主要聚焦于实现准确无误的数据传递和处理,确保各环节的顺畅对接。
首先,我们需要解决的是如何可靠地调用wdt.stockout.order.query.trade
接口,从旺店通·企业奇门系统中抓取销售出库数据。这涉及批量获取、分页处理及限流控制等多项技术挑战,为了保证不漏单且高效运行,需要采用定时任务以及异常重试机制。在这一过程中,自定义的数据转换逻辑至关重要,以适应不同系统间的数据格式差异,实现数据的一致性。
随后,是将获取到的大量订单数据写入到金蝶云星辰V2的API接口 /jdy/v2/scm/sal_out_bound
中,这要求我们具备强大的数据写入能力。同时,还需借助轻易云提供的集中监控和告警功能,对整个数据流动与状态进行实时跟踪,及时发现并处理潜在问题,以提升整体作业效率。
此外,在实际操作中,通过可视化的数据流设计工具,不仅能使复杂的集成流程更容易理解管理,还能有效优化配置资源,提高业务透明度。长远来看,此方案不仅实现了当前需求,更为后续扩展及调整提供了坚实基础。
调用源系统旺店通·企业奇门接口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",
"condition": [
[{"field": "status", "logic": "eq", "value": "105"}],
[{"field": "status", "logic": "eq", "value": "95"}],
[{"field": "status", "logic": "eq", "value": "110"}]
],
...
}
该配置表明我们将使用POST方法调用wdt.stockout.order.query.trade
接口,查询条件包括状态为105(部分打款)、95(已发货)和110(已完成)的订单。
请求参数详解
为了实现增量获取,我们需要设置开始时间和结束时间,这两个参数分别对应上次同步时间和当前时间:
{
"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",
...
}
此外,我们还需要指定其他关键参数,如状态、仓库编号等:
{
...
{
"field": "status",
...
{"value":"95,105,110,113"}
},
{
...
{"field":"warehouse_no","label":"仓库编号","type":"string","describe":"代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)","value":"WH2024052601"}
}
}
这些参数确保我们能够准确地过滤出所需的数据。
数据请求与分页处理
由于可能存在大量数据,我们需要实现分页处理。分页参数包括每页返回的数据条数page_size
和页号page_no
:
{
...
{
...
{"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
,这使得我们能够快速将API响应映射到目标字段中。
例如,对于订单编号和出库单号,可以直接从响应中提取并保存:
{
...
{"name":"order_no"},
{"idCheck":true},
}
此外,还可以根据业务需求对特定字段进行转换或格式化,例如日期格式转换、状态码映射等。
实时监控与错误处理
在整个过程中,通过轻易云平台的实时监控功能,可以随时查看数据流动和处理状态。如果出现错误,可以快速定位并解决问题。例如,如果某个请求失败,可以根据错误日志重新发送请求或调整参数。
通过上述步骤,我们成功地调用了旺店通·企业奇门接口获取销售出库数据,并进行了初步的数据清洗和加工,为后续的数据转换与写入奠定了基础。
将源平台数据转换为金蝶云星辰V2API接口格式并写入目标平台
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,使其符合金蝶云星辰V2API接口的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台进行这一过程。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其含义。以下是一个典型的元数据配置示例:
{
"api": "/jdy/v2/scm/sal_out_bound",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "bill_source",
"label": "单据来源,固定传入ISV",
"type": "string",
"describe": "单据来源,固定传入APP",
"value": "ISV"
},
{
"field": "bill_date",
"label": "出库日期,格式:2019-01-01",
"type": "datetime",
"describe": "出库日期,格式:2019-01-01",
"value": "{consign_time}"
},
{
"field": "bill_no",
...
}
]
}
数据请求与清洗
在ETL过程中,首先要确保从源系统获取的数据是干净且结构化的。假设我们已经完成了数据请求和清洗步骤,接下来我们将重点放在数据转换和写入阶段。
数据转换
为了使源平台的数据符合金蝶云星辰V2API接口的要求,我们需要进行以下几步操作:
-
字段映射:
bill_source
固定传入值ISV
。bill_date
从{consign_time}
转换为目标格式。bill_no
对应{order_no}
。customer_number
对应{shop_no}
。
-
嵌套对象处理:
custom_field
包含两个子字段:custom_field__4__2obgp309axx5_number
对应{shop_no}
。custom_field__1__3trygs3uh415
对应{src_trade_no}
。
-
数组处理:
material_entity
是一个数组,每个元素包含多个子字段:material_number
对应{{details_list.goods_no}}
。stock_number
对应{warehouse_no}
。qty
对应{{details_list.goods_count}}
。unit_id
使用_mongoQuery
查询获取。tax_price
使用_function round({{details_list.total_amount}}/{{details_list.goods_count}},6)
计算得出。
数据写入
完成数据转换后,我们使用HTTP POST方法将数据写入金蝶云星辰V2API接口。以下是一个示例请求:
{
"bill_source": "ISV",
"bill_date": "{consign_time}",
...
}
通过轻易云提供的全异步、多种异构系统支持,我们可以确保数据在不同系统间无缝对接,实现高效的数据流动。
实际案例应用
假设我们有一批销售出库单,需要从火鸡仓系统转移到金蝶云星辰V2。我们会按照上述步骤进行ETL转换,并通过API接口将转换后的数据写入目标系统。
- 准备请求体:
{
...
}
- 发送请求:
使用HTTP客户端(如Postman)或编程语言(如Python)发送POST请求,将准备好的JSON数据发送到 /jdy/v2/scm/sal_out_bound
接口。
import requests
url = 'https://api.kingdee.com/jdy/v2/scm/sal_out_bound'
headers = {'Content-Type': 'application/json'}
data = {
...
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
通过上述步骤,我们成功地将火鸡仓的销售出库单转移到了金蝶云星辰V2平台,实现了跨系统的数据集成与同步。