轻易云数据集成平台助力吉客云对接用友BIP

  • 轻易云集成顾问-吕修远

吉客云数据集成到用友BIP的技术案例分享

在本文中,我们将深入探讨通过轻易云数据集成平台实现吉客云与用友BIP的系统对接。本项目具体涉及吉客云中的“其他出库单”数据写入到用友BIP,方案名为"吉客云-其他出库---> YS-其他出库单-OK"。

项目背景

整合吉客云与用友BIP两个系统的数据,是为了实现高效、无缝的数据流转。借助轻易云的平台,我们不仅能支持高吞吐量的数据写入,还具备实时监控和异常处理能力,从而确保整个数据集成过程平稳进行。

技术要点

1. 数据获取及分页处理

通过调用吉客云提供的API erp.storage.goodsdocout.v2,我们可以获取需要同步的“其他出库单”数据。由于该接口存在分页和限流限制,我们设计了一套可靠的定时抓取机制,以确保每次请求都完整无误地获取所需数据。在此过程中,实现了精准掌控分页参数以及限流策略的灵活调整。

2. 数据转换逻辑

为了使得从吉客云提取出来的数据能够适配用友BIP接收格式,我们利用平台提供的自定义转换功能,对源数据进行必要的清洗和重构。这样处理后,再通过API /yonbip/scm/othoutrecord/single/save 将整理后的“其他出库单”批量、安全地提交至用友BIP系统。

3. 实时监控与告警

在整个流程中,通过全透明可视化操作界面和集中监控系统,我们可以实时跟踪每一个任务执行情况。一旦出现任何异常,如接口超时或响应错误,告警机制会立刻通知相关人员并触发自动重试策略,从而提高任务成功率。

以上是本项目实施的一些关键技术点,下文将详细介绍相关配置步骤与实施细节,并包括如何利用轻易云平台优化这些流程以达到最佳性能表现。

金蝶与WMS系统接口开发配置

调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将详细探讨如何通过调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据。

接口配置与请求参数

根据元数据配置,我们需要向吉客云接口发送一个POST请求。以下是该接口的主要配置参数:

  • API: erp.storage.goodsdocout.v2
  • Method: POST
  • Pagination: 每页50条记录
  • ID Check: 启用ID检查
  • Auto Fill Response: 自动填充响应

请求参数包括分页信息、出库单号、更新时间范围、创建时间范围、出库类型等。以下是具体的请求参数及其含义:

{
  "pageIndex": "1",
  "pageSize": "50",
  "goodsDocNo": "",
  "gmtModifiedStart": "_function from_unixtime(({LAST_SYNC_TIME}-86400),'%Y-%m-%d %H:%i:%s')",
  "gmtModifiedEnd": "_function from_unixtime(({CURRENT_TIME}),'%Y-%m-%d %H:%i:%s')",
  "startDate": "",
  "endDate": "",
  "inouttype": "204",
  "warehouseCode": "",
  "outBillNo": "",
  "vendCode": "",
  "billNo": "",
  "userName": "",
  "selelctFields": "recId,goodsdocNo,billNo,inOutDate,gmtCreate,inouttype,inouttypeName,vendCustomerName,currencyCode,currencyRate,userName,warehouseCode,warehouseName,comment,memo,logisticName,logisticNo,companyId,companyName,logisticType,logisticCode,inOutReason,sourceBillNo,channelId,channelCode,channelName,redStatus,field1,field2,field3,field4,field5,financeBillStatus,vendCustomerId,applyDepartId,applyDepartName,outBillNo,companyCode,deliveryNo,..."
}

数据清洗与转换

在接收到吉客云的数据后,需要进行清洗和转换,以便后续处理和写入目标系统。以下是几个关键步骤:

  1. 分页处理:由于每次请求只能获取50条记录,因此需要循环调用接口,直到获取所有数据。

  2. 时间格式转换:将gmtModifiedStartgmtModifiedEnd字段的Unix时间戳转换为标准时间格式,确保数据的一致性。

  3. 字段映射与重命名:根据业务需求,将吉客云返回的数据字段映射到目标系统所需的字段。例如,将goodsDocDetailList.goodsId映射为目标系统中的商品ID。

  4. 数据过滤与校验:根据业务规则过滤无效或重复的数据。例如,过滤掉仓库编号为"03"的数据。

实际案例

假设我们需要获取过去一天内所有“其他出库”的记录,并将其写入目标系统。具体步骤如下:

  1. 初始化请求参数

    {
     "pageIndex": "1",
     "pageSize": "50",
     ...
     "gmtModifiedStart": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d %H:%i:%s')",
     ...
    }
  2. 循环调用接口,获取所有分页数据

    all_data = []
    page_index = 1
    while True:
       response = call_api(api="erp.storage.goodsdocout.v2", method="POST", params={"pageIndex": page_index})
       data = response["data"]
       if not data:
           break
       all_data.extend(data)
       page_index += 1
  3. 清洗与转换数据

    cleaned_data = []
    for record in all_data:
       if record["warehouseCode"] != "03":
           cleaned_record = {
               # 映射字段
               ...
           }
           cleaned_data.append(cleaned_record)
  4. 写入目标系统

    for record in cleaned_data:
       write_to_target_system(record)

通过上述步骤,我们可以高效地从吉客云获取所需的出库记录,并进行必要的数据清洗和转换,为后续的数据处理打下坚实基础。 用友BIP接口开发配置

用友BIPAPI接口数据集成技术案例:ETL转换与写入

在使用轻易云数据集成平台进行数据处理的全生命周期管理中,第二步是将已经集成的源平台数据进行ETL转换,转为目标平台用友BIPAPI接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中的关键技术细节和实现方法。

1. API接口配置

在本案例中,我们需要将吉客云的“其他出库”数据转换并写入用友BIP系统。根据提供的元数据配置,我们使用的API接口为/yonbip/scm/othoutrecord/single/save,请求方法为POST。以下是该API接口的主要字段及其配置:

  • 单据编号 (code):此字段接受系统编码规则配置,示例值为QTCK0000001。在实际操作中,我们将其映射到源数据中的goodsdocNo
  • 库存组织 (org)会计主体 (accountOrg):这两个字段都接受ID或代码,示例值为wzyqzn,映射到源数据中的warehouseCode
  • 单据日期 (vouchdate):日期格式为yyyy-MM-dd,示例值为2021-03-05,映射到源数据中的inOutDate
  • 交易类型 (bustype):固定值为A10001
  • 仓库 (warehouse):接受ID或代码,示例值为ck01,映射到源数据中的warehouseCode
  • 部门 (department)业务员 (operator)备注 (memo)等字段也需要根据实际需求进行配置。

2. 子表及孙表配置

对于子表“其他出库单子表”(字段名为 othOutRecords),我们需要处理以下字段:

  • 物料 (product):传入ID或代码,示例值为 PD0817000001,映射到源数据中的 goodsNo.
  • 批次号 (batchno):通过 _function case _findCollection find detail.batchManage from 7aed2c28-cc02-35c8-aa6a-2d750373f9e1 where code={goodsNo} _endFind when false then '' else '001' end 函数来确定是否需要填写批次号。
  • 应发数量 (contactsQuantity)数量 (qty) 等字段均映射到源数据中的 quantity.

此外,对于孙表“序列号孙表”(字段名为 othOutRecordsSNs),我们需要处理以下字段:

  • 序列号id (id)
  • 序列号 (sn)

这些字段在更新操作时必填,并且需要确保每个序列号的唯一性。

3. 数据转换与写入实现

在轻易云平台上,我们可以通过以下步骤实现数据转换与写入:

  1. 定义元数据模型:根据提供的元数据配置文件定义目标平台的数据模型。这一步确保了所有必要字段都被正确识别和映射。

  2. 编写ETL脚本

    • 使用轻易云平台提供的可视化工具或编写自定义脚本,将源平台的数据提取出来。
    • 对提取的数据进行清洗和转换,使其符合目标API接口所需的格式。例如,将日期格式从原始格式转换为 yyyy-MM-dd, 将数量等数值字段进行必要的单位换算等。
  3. 调用API接口

    • 使用HTTP POST方法,将转换后的数据发送到用友BIP系统的 /yonbip/scm/othoutrecord/single/save 接口。
    • 确保每个请求都包含必要的幂等性检查键(如 resubmitCheckKey: {goodsdocNo}_1),以防止重复提交。
  4. 错误处理与日志记录

    • 捕获并处理API调用过程中可能出现的错误,如网络故障、验证失败等。
    • 记录每次API调用的请求和响应,以便后续审计和问题排查。

4. 示例代码片段

以下是一个简化版的Python代码片段,用于展示如何调用用友BIP API接口:

import requests
import json

url = "https://api.yonyoucloud.com/yonbip/scm/othoutrecord/single/save"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}

data = {
    "code": "QTCK0000001",
    "org": "wzyqzn",
    "accountOrg": "wzyqzn",
    "vouchdate": "2021-03-05",
    "bustype": "A10001",
    "warehouse": "ck01",
    # ... other fields ...
    "_status": "Insert",
    "othOutRecords": [
        {
            "product": "PD0817000001",
            # ... other fields ...
            "_status": "Insert",
            "othOutRecordsSNs": [
                {
                    "id": 123,
                    "sn": "SN01",
                    "_status": "Insert"
                }
            ]
        }
    ],
    # ... other fields ...
}

response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
    print("Data successfully written to Yonyou BIP")
else:
    print(f"Failed to write data: {response.text}")

通过上述步骤和技术实现,我们可以高效地将吉客云的数据转换并写入用友BIP系统,实现不同系统间的数据无缝对接。 数据集成平台API接口配置

更多系统对接方案