利用轻易云平台对接旺店通的ETL转换技术

  • 轻易云集成顾问-张妍琪

金蝶云星空与旺店通·企业奇门系统的委外采购入库单数据对接

在实现企业级数据集成的过程中,准确、高效地进行跨平台对接是一个关键问题,这个案例将探讨如何通过轻易云平台,实现金蝶云星空与旺店通·企业奇门之间委外采购入库单的数据集成。本文重点解析技术细节,以实战经验展示解决方案。

具体流程包括抓取金蝶云星空中的委外采购入库单,并批量写入至旺店通·企业奇门中。在数据集成过程中,通过调用金蝶云星空的API executeBillQuery 获取目标数据信息,再利用旺店通·企业奇门的API wdt.stockin.order.push 将获取到的数据传输过去。

首先,为确保从金蝶云星空接口提取的数据不漏单,我们定时可靠地调用其接口 executeBillQuery,充分考虑分页和限流策略来处理大数据量。此外,还需注意两者间的数据格式差异,通过定制化的数据映射,对原始数据进行必要转换以适应目标系统要求。

最后,应针对可能出现的异常情况制定相应的处理机制。例如,在推送到旺店通·企业奇门时,可实现错误重试和日志记录功能,以保证每次操作都有迹可循,并及时发现并修复潜在的问题。这些步骤将极大提升整个对接流程的稳定性和透明度。 数据集成平台API接口配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与调用

首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery接口。以下是元数据配置的关键部分:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FInStockEntry_FEntryId",
  "name": "FBillNo",
  "idCheck": true,
  ...
}

该配置指定了API名称、请求方法(POST)、主键字段(FInStockEntry_FEntryId)和单据编号字段(FBillNo)。这些信息是调用API时必不可少的。

请求参数构建

接下来,我们需要构建请求参数。以下是一些关键字段及其描述:

  • FormId: 表单ID,必须填写。例如:STK_InStock
  • FieldKeys: 需查询的字段集合,格式为字符串数组。
  • FilterString: 过滤条件,用于筛选特定的数据。例如:FBillTypeID.FNumber='RKD03_SYS' and FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'
  • Limit: 最大行数,用于分页。
  • StartRow: 开始行索引,用于分页。

示例请求参数如下:

{
  "FormId": "STK_InStock",
  "FieldKeys": [
    "FInStockEntry_FEntryId", 
    "FID", 
    "FBillNo", 
    ...
  ],
  "FilterString": "FBillTypeID.FNumber='RKD03_SYS' and FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='2023-01-01'",
  "Limit": 100,
  "StartRow": 0
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作:

  1. 字段映射:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将FInStockEntry_FEntryId映射为目标系统中的entry_id
  2. 数据类型转换:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。
  3. 缺失值处理:处理缺失值或默认值,以确保数据完整性。

示例代码如下:

def clean_and_transform(data):
    cleaned_data = []
    for entry in data:
        transformed_entry = {
            'entry_id': entry['FInStockEntry_FEntryId'],
            'bill_no': entry['FBillNo'],
            'approve_date': parse_date(entry['FApproveDate']),
            ...
        }
        cleaned_data.append(transformed_entry)
    return cleaned_data

def parse_date(date_str):
    # 将日期字符串转换为标准日期格式
    return datetime.strptime(date_str, '%Y-%m-%d')

数据写入

最后,将清洗和转换后的数据写入目标系统。这一步通常涉及调用目标系统的API接口,并根据其要求提交数据。

示例代码如下:

def write_to_target_system(cleaned_data):
    for entry in cleaned_data:
        response = requests.post('https://target-system/api/endpoint', json=entry)
        if response.status_code != 200:
            log_error(response.text)

# 调用整个流程
raw_data = call_execute_bill_query()
cleaned_data = clean_and_transform(raw_data)
write_to_target_system(cleaned_data)

通过以上步骤,我们实现了从金蝶云星空获取、清洗、转换并写入目标系统的全流程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 用友与外部系统接口集成开发

利用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。以下是详细的技术步骤和配置示例。

元数据配置解析

首先,我们需要理解元数据配置中的各个字段及其含义:

  • api: wdt.stockin.order.push 表示调用旺店通·企业奇门的入库单推送接口。
  • method: POST 表示使用HTTP POST方法提交数据。
  • idCheck: true 表示需要进行ID校验。
  • request: 包含具体的数据字段映射关系。

数据字段映射

元数据配置中的字段映射关系如下:

  1. 外部单号(outer_no)

    • 来源字段:FBillNo
    • 类型:string
    • 描述:外部单号
  2. 仓库编号(warehouse_no)

    • 来源字段:FStockId_FNumber
    • 类型:string
    • 描述:仓库编号
  3. 备注(remark)

    • 固定值:委外入库
    • 类型:string
    • 描述:备注
  4. 是否审核(is_check)

    • 固定值:1
    • 类型:string
    • 描述:是否审核
  5. 入库原因(reason)

    • 类型:string
    • 描述:入库原因
  6. 货品明细节点(goods_list) 包含多个子字段:

    a. 商家编码(spec_no)

    • 来源字段:FMaterialId_FNumber
    • 类型:string
    • 描述:商家编码

    b. 入库数量(stockin_num)

    • 来源字段:FRealQty
    • 类型:string
    • 描述:入库数量

    c. 原价(src_price)

    • 来源字段:FPrice
    • 类型:string
    • 描述:原价

    d. 入库价(stockin_price)

    • 来源字段:FTaxPrice
    • 类型:string
    • 描述:入库价

    e. 批次(batch_no)

    • 类型:string
    • 描述:批次

    f. 税率(tax)

    • 类型:string
    • 描述:“对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16”

数据转换与写入过程

在实际操作中,ETL过程可以分为以下几个步骤:

  1. 提取数据(Extract)

    从源系统(金蝶系统)提取相关的数据,如订单号、仓库编号、货品明细等。

  2. 转换数据(Transform)

    使用轻易云数据集成平台,将提取的数据根据元数据配置进行转换。具体操作如下:

    {
        "outer_no": "{FBillNo}",
        "warehouse_no": "{FStockId_FNumber}",
        "remark": "委外入库",
        "is_check": "1",
        "reason": "",
        "goods_list": [
            {
                "spec_no": "{FMaterialId_FNumber}",
                "stockin_num": "{FRealQty}",
                "src_price": "{FPrice}",
                "stockin_price": "{FTaxPrice}",
                "batch_no": "",
                "tax": ""
            }
        ]
    }
  3. 加载数据(Load)

    将转换后的数据通过HTTP POST方法提交到旺店通·企业奇门API接口。请求体示例如下:

    {
        "api": "wdt.stockin.order.push",
        "effect": "EXECUTE",
        "method": "POST",
        "idCheck": true,
        "request": [
            {
                "field":"outer_no",
                "value":"SO20231001"
            },
            {
                "field":"warehouse_no",
                "value":"WH001"
            },
            {
                "field":"remark",
                "value":"委外入库"
            },
            {
                "field":"is_check",
                "value":"1"
            },
            {
                "field":"reason",
                ...
            },
            {
                ...
            }
        ],
        ...
    }

实施注意事项

  1. 字段校验

    确保所有必填字段都已正确映射,并且数据类型匹配。

  2. 异常处理

    在ETL过程中,需对可能出现的异常情况进行处理,例如网络异常、数据格式错误等。

  3. 日志记录

    对每一次ETL操作进行日志记录,便于后续问题排查和审计。

通过上述步骤,我们成功地将金蝶系统中的委外采购入库单数据转换为旺店通·企业奇门API接口所需的格式,并顺利写入目标平台。这不仅提高了系统间的数据一致性,还大大提升了业务流程的自动化程度。 用友与CRM系统接口开发配置

更多系统对接方案