从销售出库到发货单:轻易云集成平台的实际应用

  • 轻易云集成顾问-李国敏

案例分享:旺店通·企业奇门数据集成到用友U8的解决方案

在本文中,我们将探讨如何通过轻易云数据集成平台,将旺店通·企业奇门(以下简称“奇门”)的数据高效地集成到用友U8系统。具体案例是将A oms销售出库单转换为u8发货单,方案名称为"A oms销售出库单 => u8发货单_211"。

我们的任务是利用wdt.stockout.order.query.trade API接口从奇门获取数据,并通过/apilink/u8api接口向用友U8写入数据。在实施过程中,需要关注以下几个关键技术点:

  1. 高吞吐量的数据写入能力: 在大量订单处理场景下,高效的数据写入能力至关重要。我们必须确保系统能够实时响应,并能快速批量导入到用友U8中,而不影响业务连续性。

  2. 集中监控和告警系统: 实时跟踪每个数据集成任务的状态和性能,这样可以及时发现并解决潜在问题。例如,当某一批次的订单未成功写入时,可迅速触发告警机制以进行人工干预或自动重试。

  3. 分页与限流处理: 由于API接口可能对查询结果进行分页且有访问频率限制,所以需要实现稳定可靠的抓取逻辑,以保证全量、无遗漏地获取所有必要的数据。这包括动态调整分页参数及管理请求频率,避免触碰API调用上限。

  4. 自定义数据转换逻辑: 奇门和用友U8之间存在不同的数据格式与结构差异。我们需要设计特定的映射规则来适应各种复杂需求,例如字段重命名、类型转化等,以确保两者间的数据准确匹配。

  5. 异常处理与错误重试机制: 在实际运行过程中,不可避免会遇到网络波动或服务不可达等情况。因此,需要一个健壮的异常处理框架,包括详细日志记录及智能化重试机制,以最高程度保障系统鲁棒性。

  6. 可视化操作界面支持: 利用轻易云提供的可视化设计工具,可以直观展示整个流程,使得配置调整更加简便,同时提升运维效率。这种透明度帮助技术团队全面掌握各个环节状态,从而更好定位并解决问题。

接下来,我们将详细介绍此方案具体实施步骤以及代码示例,旨在为类似需求提供实战参考依据。 金蝶与外部系统打通接口

调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据

在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取销售出库单数据,并进行初步的数据加工。

接口概述

接口wdt.stockout.order.query.trade用于查询销售出库单信息,支持多种查询条件和分页功能。该接口采用POST请求方式,返回的数据包括订单状态、时间区间、店铺编号、仓库编号等信息。

请求参数配置

根据元数据配置,以下是请求参数的详细说明:

  • status: 订单状态,类型为字符串。例如:5已取消,55已审核,95已发货等。
  • start_time: 开始时间,用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss
  • end_time: 结束时间,用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss
  • src_order_no: 系统订单编号,可以单独按照系统单号查询。
  • src_tid: 原始单号,可以单独按照原始单号查询。
  • stockout_no: 出库单号,可以单独按照出库单号查询。
  • is_by_modified: 时间查询条件,当指定状态字段后,传0按照原销售出库单接口规则返回,传1按照出库单的最后修改时间进行返回。
  • shop_nos: 店铺编号,用于获取指定店铺的单据数据信息。
  • warehouse_no: 仓库编号,用于获取指定仓库的单据数据信息(不支持一次推送多个仓库编号)。
  • page_size: 每页返回的数据条数,默认值为40。
  • page_no: 页号,从0开始。

请求示例

以下是一个完整的请求示例:

{
  "status": "95",
  "start_time": "2024-01-30 23:59:59",
  "end_time": "2024-01-31 23:59:59",
  "shop_nos": "100001,100002,100003,100004,100005,100006,100010,020709",
  "warehouse_no": "100010",
  "page_size": "50",
  "page_no": "0"
}

数据加工

在获取到销售出库单数据后,需要对数据进行初步加工,以便后续的数据转换与写入。主要的加工步骤包括:

  1. 字段映射与转换:将源系统中的字段映射到目标系统所需的字段。例如,将order_no映射到U8发货单中的订单编号字段。

  2. 数据清洗:过滤掉无效或不符合业务规则的数据。例如,只保留状态为“已发货”的订单。

  3. 增量更新处理:根据时间戳或其他标识符处理增量更新的数据。例如,通过start_timeend_time参数获取最近一天内的新订单或更新订单。

示例代码

以下是一个简单的数据加工示例代码:

import requests
import json

# 设置请求URL和头部信息
url = 'https://api.wangdian.cn/openapi2/wdt.stockout.order.query.trade'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    "status": "95",
    "start_time": "2024-01-30 23:59:59",
    "end_time": "2024-01-31 23:59:59",
    "shop_nos": "100001,100002,100003,100004,100005,100006,100010,020709",
    "warehouse_no": "100010",
    "page_size": "50",
    "page_no": "0"
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与转换
    processed_data = []
    for order in data['orders']:
        if order['status'] == '95': # 保留已发货订单
            processed_order = {
                'order_id': order['order_no'],
                'order_type': order['order_type_name'],
                # 添加更多需要映射和转换的字段
            }
            processed_data.append(processed_order)

    # 输出处理后的数据
    print(json.dumps(processed_data, indent=4))
else:
    print(f"请求失败,状态码:{response.status_code}")

通过上述步骤,我们能够有效地调用旺店通·企业奇门接口获取销售出库单数据,并进行初步的数据加工,为后续的数据转换与写入打下坚实基础。 金蝶云星空API接口配置

用友U8API接口数据转换与写入技术案例

在轻易云数据集成平台中,将源平台的OMS销售出库单数据转换并写入到目标平台用友U8的发货单,需要经过ETL(提取、转换、加载)过程。本文将详细探讨如何配置和使用元数据,将源数据转换为用友U8API接口所能接收的格式,并最终成功写入目标系统。

数据请求与清洗

首先,我们需要确保从源平台OMS获取的数据是完整且干净的。通过轻易云平台的数据请求功能,可以提取所需的销售出库单数据,并进行必要的清洗操作,以确保数据的一致性和准确性。

数据转换

在数据转换阶段,我们需要根据用友U8API接口的要求,对数据进行相应的格式化和映射。以下是关键字段及其对应关系的详细配置:

  1. 单据信息

    • 单据模版:固定值 "单据模版"
    • 红蓝标记:固定值 "蓝"
  2. 单据头

    • 发货单号:映射至 {order_no}
    • 发货日期:映射并格式化至 {{consign_time|datetime}}
    • 销售类型:固定值 "国内零售"
    • 客户简称:映射至 {shop_name},并通过元数据配置进行正向映射
    • 销售部门:同样映射至 {shop_name},并通过元数据配置进行正向映射
    • 税率:固定值 "13"
    • 交易编号:映射至 {src_tids}
    • 备注:组合字段,包含 {logistics_name} {receiver_area}-{receiver_address}
    • 制单人:映射至 {operator_name}
    • 订单号:映射至 {trade_no}
    • 客户地址:组合字段,包含 {receiver_area}-{receiver_address}
    • 货运公司:映射至 {logistics_name}
    • 业务员:固定值 "林鑫贵"
    • 审核日期:映射并格式化至 {{consign_time|datetime}}
  3. 单据体 每个“行”对象包含以下字段:

    • 仓库名称:映射至 {warehouse_no},并通过元数据配置进行反向映射
    • 存货编码:映射至 {{details_list.goods_no}}
    • 数量:映射至 {{details_list.goods_count}}
    • 税率:固定值 "13"
    • 含税单价:使用函数计算 _function round({{details_list.share_amount}}/{{details_list.goods_count}},4)

数据写入

完成上述转换后,即可将处理好的数据通过POST方法发送到用友U8API接口。以下是具体的API调用配置:

  • 接口URL: /apilink/u8api
  • 方法: POST
  • 执行效果: EXECUTE
  • ID检查: true

具体请求体结构如下:

{
    "data": {
        "单据信息": {
            "单据模版": "单据模版",
            "红蓝标记": "蓝"
        },
        "单据头": {
            "发货单号": "{order_no}",
            "发货日期": "{{consign_time|datetime}}",
            "销售类型": "国内零售",
            "客户简称": "{shop_name}",
            "销售部门": "{shop_name}",
            "税率": "13",
            "交易编号": "{src_tids}",
            "备注": "{logistics_name} {receiver_area}-{receiver_address}",
            "制单人": "{operator_name}",
            "订单号": "{trade_no}",
            "客户地址": "{receiver_area}-{receiver_address}",
            "货运公司": "{logistics_name}",
            "业务员": "林鑫贵",
            "审核日期": "{{consign_time|datetime}}"
        },
        "单据体": [
            {
                "行": {
                    "仓库名称": "{warehouse_no}",
                    "存货编码": "{{details_list.goods_no}}",
                    "数量": "{{details_list.goods_count}}",
                    "税率": "13",
                    "_function round({{details_list.share_amount}}/{{details_list.goods_count}},4)"
                }
            }
        ]
    },
    ...
}

最后,通过调用consignment/createconsignment/audit两个接口,实现发货单的创建和审核。

小结

本文详细介绍了如何利用轻易云平台将OMS销售出库单的数据转换为用友U8API接口所能接收的格式,并成功写入目标系统。通过精确的元数据配置和ETL过程管理,确保了整个集成过程高效、可靠。 轻易云数据集成平台金蝶集成接口配置

更多系统对接方案