销售出库单对接销售订单(线上)-(测试金额)技术案例分享
在企业信息化建设中,数据集成是实现业务流程自动化和高效管理的关键环节。本文将重点介绍如何通过轻易云数据集成平台,将旺店通·企业奇门的数据无缝对接到用友BIP系统,实现销售出库单与销售订单的高效集成。
背景概述
在本次案例中,我们需要将旺店通·企业奇门中的销售出库单数据,通过API接口wdt.stockout.order.query.trade
获取,并批量写入到用友BIP系统的销售订单模块,使用其API接口/yonbip/sd/voucherorder/singleSave
进行数据保存。该过程不仅要求高吞吐量的数据写入能力,还需确保数据质量和实时监控。
技术要点
-
高吞吐量的数据写入:为了应对大量的销售出库单数据,我们采用了轻易云平台提供的高吞吐量数据写入能力,使得大规模数据能够快速、安全地传输至用友BIP系统。
-
实时监控与告警:通过轻易云平台的集中监控和告警系统,我们可以实时跟踪每个数据集成任务的状态和性能,及时发现并处理潜在问题,确保整个集成过程顺畅无误。
-
自定义数据转换逻辑:由于旺店通·企业奇门与用友BIP之间的数据结构存在差异,我们利用轻易云平台支持自定义转换逻辑的特性,对获取的数据进行必要的格式转换,以满足目标系统的需求。
-
分页与限流处理:在调用旺店通·企业奇门接口时,为了避免因大量请求导致服务不稳定,我们设计了合理的分页机制和限流策略,确保每次请求都能稳定返回所需的数据。
-
异常处理与重试机制:为保证数据传输过程中的可靠性,我们实现了完善的异常处理与错误重试机制。一旦发生错误,可以自动重试或记录日志以便后续人工干预。
-
定制化映射对接:针对用友BIP系统特有的数据格式要求,我们进行了定制化的数据映射配置,确保每条记录都能准确无误地写入目标数据库中。
通过以上技术手段,本方案成功实现了从旺店通·企业奇门到用友BIP系统间销售出库单与销售订单的数据集成,不仅提升了业务效率,也增强了整体运营透明度。在接下来的章节中,将详细介绍具体实施步骤及技术细节。
调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade
,并对获取的数据进行加工处理。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是主要的配置项:
- API:
wdt.stockout.order.query.trade
- 请求方法:
POST
- 分页大小: 每页返回100条记录
- 增量获取时间范围:
- 开始时间:
{{LAST_SYNC_TIME|datetime}}
- 结束时间:
{{CURRENT_TIME|datetime}}
- 开始时间:
此外,为了确保数据完整性和准确性,我们设置了定时任务,每天凌晨1点2分执行一次,以增量方式抓取前一天的数据。
数据请求与清洗
在请求参数中,我们需要传递多个字段,包括开始时间、结束时间、状态、系统订单编号等。这些字段用于过滤和定位我们所需的数据。例如:
{
"start_time": "{{LAST_SYNC_TIME|datetime}}",
"end_time": "{{CURRENT_TIME|datetime}}",
"status": "95", // 已发货状态
"page_size": "{PAGINATION_PAGE_SIZE}",
"page_no": "{PAGINATION_START_PAGE}"
}
为了避免重复和遗漏,我们还设置了一系列条件来排除特定店铺编号的数据,这些条件通过逻辑运算符实现,例如:
[
{"field":"shop_no","logic":"neq","value":"063"},
{"field":"shop_no","logic":"neq","value":"064"},
...
]
数据转换与格式化
获取到原始数据后,需要对其进行一定的转换和格式化处理。例如,将原始的发货时间字段consign_time
重新命名为consign_time_new
,并将其格式化为标准日期格式:
{
"old": "consign_time",
"new": "consign_time_new",
"format": "date"
}
这种转换不仅有助于统一数据格式,还能提高后续处理和分析的效率。
异常处理与重试机制
在实际操作中,可能会遇到网络波动或接口限流等问题。为了保证数据抓取过程的稳定性,我们设计了异常处理与重试机制。一旦出现错误,可以根据日志记录的信息进行重试,从而确保每一条数据都能被成功获取。
实时监控与告警
轻易云平台提供了强大的监控和告警功能,可以实时跟踪每个数据集成任务的状态。一旦发现异常情况,如接口响应超时或返回错误码,会立即触发告警通知相关人员进行处理。这种机制极大地提升了系统运行的可靠性。
自定义转换逻辑
针对不同业务需求,我们可以自定义数据转换逻辑。例如,在某些情况下,需要将多层嵌套结构的数据展平(beatFlat),以便于后续处理:
"beatFlat":["details_list"]
这种灵活性使得我们能够更好地适应复杂多变的业务场景。
总结
通过上述步骤,我们实现了从旺店通·企业奇门接口获取销售出库单数据,并进行了必要的数据清洗和转换。在这个过程中,充分利用轻易云平台提供的各种特性,如高吞吐量写入能力、实时监控、异常检测等,有效提升了整个集成过程的效率和可靠性。
数据转换与写入用友BIP
在数据集成生命周期的第二步,我们重点关注将已经集成的源平台数据进行ETL转换,转为目标平台用友BIP API接口所能够接收的格式,并最终写入目标平台。以下是具体操作步骤和技术细节。
数据请求与清洗
首先,我们从旺店通·企业奇门系统中获取销售出库单数据。通过调用wdt.stockout.order.query.trade
接口,可以定时可靠地抓取需要的数据,并确保数据不漏单。该接口支持分页和限流处理,保证了大批量数据的稳定传输。
数据转换
将获取到的源数据进行清洗和转换,以适应用友BIP API接口的数据结构要求。我们需要根据元数据配置进行字段映射和数据转换。
字段映射与计算
在元数据配置中,定义了多个字段的映射规则和计算逻辑。例如:
salesOrgId
:销售组织,通过shop_no映射到相应的销售组织ID。transactionTypeId
:交易类型,直接赋值为固定值SO021
。vouchdate
:单据日期,从源数据中的consign_time_new字段映射。orderDetails
:销售订单子表,对应多个子字段,需要逐一进行映射和计算。
示例字段转换
{
"field": "salesOrgId",
"label": "销售组织",
"type": "string",
"describe": "销售组织,传id或者code",
"value": "_findCollection find mapping_sale_org from 4769a428-14c4-33b8-91fd-e8da3b39d5cb where shop_no={shop_no}"
}
上述配置表示通过shop_no查找对应的销售组织ID并赋值给salesOrgId
字段。
对于复杂计算逻辑,例如本币含税金额、本币无税金额等,可以使用函数进行计算:
{
"field": "orderDetailPrices!natSum",
"label": "本币含税金额",
"type": "string",
"describe": "本币含税金额",
"value": "_function round({{details.details_list_total_amount}},2)"
}
这里使用了round函数对details_list_total_amount进行四舍五入,保留两位小数。
数据写入用友BIP
在完成所有字段映射和数据转换后,将整理好的数据通过POST请求写入用友BIP。API接口为/yonbip/sd/voucherorder/singleSave
,需要确保请求的幂等性,即每次请求都具有唯一标识符resubmitCheckKey。
请求示例
{
"api": "/yonbip/sd/voucherorder/singleSave",
"method": "POST",
"request": [
{
"field": "resubmitCheckKey",
"value": "{random}"
},
{
"field": "salesOrgId",
"value": "_findCollection find mapping_sale_org from ... where shop_no={shop_no}"
},
...
{
"field": "_status",
"value": "Insert"
}
]
}
以上请求示例展示了如何构建POST请求体,其中包含了必要的字段和值。注意每个字段都需要根据元数据配置进行正确赋值和计算。
异常处理与监控
为了确保数据集成过程的稳定性,我们需要实现异常处理与错误重试机制。当出现网络故障或服务器错误时,可以通过重试机制来保证请求成功。同时,通过实时监控与日志记录,可以及时发现并处理异常情况,保障整体集成流程顺畅运行。
总结
通过上述步骤,我们成功实现了将源平台的数据经过ETL转换后写入到目标平台用友BIP。在这个过程中,需要特别注意字段映射、数据转换、异常处理以及实时监控等关键环节,以确保数据集成过程高效、准确、可靠。