旺店通销售出库单>金蝶销售出库单:系统对接集成案例分享
在本技术案例中,我们将分享如何通过轻易云数据集成平台,实现旺店通·企业奇门的销售出库单数据高效集成到金蝶云星空,具体涉及从wdt.stockout.order.query.trade
接口获取销售出库单信息,并使用batchSave
接口写入到金蝶云星空。
高吞吐量的数据写入
首先,为了应对大量订单数据的快速处理需求,轻易云提供了支持高吞吐量的数据写入能力。该特性确保我们能够在短时间内将大批量的销售出库单准确且及时地导入至金蝶云星空,有效提升整体处理效率。这对于电商业务中的实时库存管理尤为关键。
实现实时监控与日志记录
为了保证数据传输过程中的透明度和可靠性,本次方案配置了集中化的监控和告警系统,通过实时跟踪任务状态和性能指标来保障数据流动无误。此外,对每个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",
"name": "order_no",
"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:异常发货"
},
{
...
}
],
...
}
请求参数详解
- start_time 和 end_time: 用于定义增量获取数据的时间范围。
start_time
为上次同步时间,而end_time
为当前时间。这两个参数确保我们只获取在此期间内发生变化的数据。 - status: 用于过滤订单状态。根据业务需求,我们可能只需要特定状态的订单,例如已发货(95)和已完成(110)的订单。
- shop_no 和 warehouse_no: 分别用于指定店铺和仓库。这些字段帮助我们精确定位需要的数据来源。
数据请求与清洗
在发送请求后,我们会收到一个包含多个销售出库单信息的响应。接下来,我们需要对这些原始数据进行清洗和加工,以便后续的数据转换与写入步骤。
{
...
{
field: 'is_by_modified',
label: 'is_by_modified',
type: 'string',
describe: 'is_by_modified',
value: '1'
}
}
该字段用于标识是否按修改时间进行筛选,为1时表示按修改时间筛选,这有助于确保我们获取的是最新修改过的数据。
分页处理
由于一次请求可能返回大量数据,因此我们需要实现分页处理。元数据中的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页开始'
}
}
通过设置合理的分页大小和页码,可以有效地管理大批量数据,提高系统性能。
数据过滤条件
为了进一步精确地获取所需的数据,我们可以使用条件过滤。例如,通过设置特定店铺编号和订单状态来筛选符合条件的销售出库单:
{
...
condition_bk:[
[
{"field":"shop_no","logic":"neqv2","value":"HBJBT"}
]
],
condition:[
[
{"field":"shop_no","logic":"notin","value":"HBJBT01,hbxrg01,hbmy,bjjbtxfp.hbtcgdsc0101,bjjbtdnbg01,hblyd01,HBJBT,hbyu01,hbmybg,hnjbtxfp,hnjbtdzjsy,PDD-888,BJCHX001,ydkj01,mydsc,.bjjbtxfp01hbtcgdsc01,tcgfsqpl,bjjbtxfp01,hbtcgdsc01,jbtdjk0001"},
{"field":"status","logic":"in","value":"95,110"}
]
]
}
上述配置确保了我们只获取不属于特定店铺且状态为已发货或已完成的订单。
数据清洗与转换
在成功获取到原始数据后,需要对其进行清洗与转换,以满足目标系统(如金蝶)的要求。这一步通常包括字段映射、格式转换等操作。例如,将旺店通中的order_no
映射到金蝶中的相应字段,并确保日期格式符合目标系统要求。
通过以上步骤,我们可以高效地调用旺店通·企业奇门接口获取并加工销售出库单数据,为后续的数据转换与写入奠定坚实基础。
使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并最终写入目标平台——金蝶云星空API接口。本文将详细介绍如何利用轻易云数据集成平台的元数据配置,实现这一过程。
元数据配置解析
我们使用的元数据配置如下所示:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
...
},
...
],
...
}
该配置文件定义了如何将源平台的数据映射到金蝶云星空API所需的格式。下面我们逐一解析各个字段及其转换逻辑。
API接口与请求方法
首先,api
字段定义了目标API接口为batchSave
,method
字段指定了HTTP请求方法为POST
。这意味着我们将通过POST请求向金蝶云星空提交批量保存操作。
操作方法与行数
operation
字段中定义了操作方法为batchArraySave
,并且每次提交的数据行数为1。这表示我们将在一次请求中处理一个数组形式的数据。
请求参数映射
接下来是关键的请求参数映射部分:
-
单据类型 (
FBillTypeID
):{ "field": "FBillTypeID", ... "value": "XSCKD01_SYS" }
此字段固定为“XSCKD01_SYS”,表示销售出库单类型。
-
单据编号 (
FBillNo
):{ "field": "FBillNo", ... "value": "{order_no}" }
单据编号直接从源数据的订单编号(
order_no
)中获取。 -
日期 (
FDate
):{ "field": "FDate", ... "value": "{consign_time}" }
日期字段映射到源数据中的发货时间(
consign_time
)。 -
发货组织 (
FStockOrgId
):{ ... "parser": {"name":"ConvertObjectParser","params":"FNumber"}, ... "value":"{warehouse_no}", ... }
发货组织通过仓库编号(
warehouse_no
)进行转换,使用了ConvertObjectParser
来确保格式符合金蝶要求。 -
销售组织 (
FSaleOrgId
):{ ... "parser":{"name":"ConvertObjectParser","params":"FNumber"}, ... "value":"{shop_no}", ... }
销售组织同样通过店铺编号(
shop_no
)进行转换。 -
客户 (
FCustomerID
):{ ... "parser":{"name":"ConvertObjectParser","params":"FNumber"}, ... "value":"{shop_name}", ... }
客户信息通过店铺名称(
shop_name
)进行转换。 -
货主 (
FOwnerIdHead
):{ ... "_function case when '{warehouse_no}' in ('047','048','051') then '105' when '{warehouse_no}' in ('050','052','049','053','055','057') then '114' else '100' end" ... }
货主信息根据仓库编号进行条件判断和转换。
-
销售员 (
FSalesManID
):{ "_mongoQuery cccd77b8-cea5-3862-99c0-c3cc6815a86a findField=content.FNumber where={\"content.FName\":{\"$eq\":\"{fullname}\"}}" ... }
销售员信息通过MongoDB查询来获取对应的编号。
-
备注 (
FNote
)、快递单号 (F_ora_Text2
)、原始单号 (F_USQR_TEXT
) 等其他字段也都进行了相应的映射和转换。
明细信息处理
明细信息部分采用数组形式处理,每个明细项包含以下字段:
-
物料编码 (
FMaterialID
):{ ... "{{details_list.goods_no}}" ... }
-
实发数量 (
FRealQty
):{ "{{details_list.goods_count}}" ... }
-
含税单价 (
FTaxPrice
):{ "_function ({{details_list.total_amount}}+{{details_list.share_post}})/{{details_list.goods_count}}" ... }
-
是否赠品 (
FIsFree
):{ "_function CASE WHEN {{details_list.sell_price}}>0 THEN 'false' ELSE 'true' END" ... }
-
税率 (
FEntryTaxRate
), 仓库 (FStockId
), 库存状态 (FStockStatusID
), 分摊运费 (F_USQR_AMOUNT
)等字段也进行了相应的映射和转换。
提交与验证
最后,通过以下配置确保所有基础资料有效性,并自动提交和审核:
{
{"field":"IsVerifyBaseDataField","type":"bool","value":"true"},
{"field":"IsAutoSubmitAndAudit","type":"bool","value":"true"}
}
以上即为整个ETL过程中的关键步骤和技术细节,通过这些配置,我们能够高效地将源平台的数据转化为金蝶云星空API所需的格式,并成功写入目标平台。