ETL转换:从聚水潭盘盈入库单到畅捷通T+的最佳实践

  • 轻易云集成顾问-彭亮

聚水潭数据集成到畅捷通T+:从盘盈入库单到其他入库单的技术实现

在企业管理过程中,如何高效地进行不同系统的数据对接和集成成为一项关键任务。本文聚焦于将聚水潭平台的盘盈入库单数据成功集成至畅捷通T+系统,实现过程中的技术细节及解决方案。

首先,我们需要确保从聚水潭获取的库存计数数据不漏单。这通过调用API接口/open/inventory/count/query实现,该接口支持分页查询,同时内置了限流机制以避免过度请求。为了处理接口分页和限流问题,我们设计了一套稳健的调度逻辑,通过定时任务可靠抓取并保持请求频率在可接受范围内。

其次,大量数据快速写入到畅捷通T+是整个集成过程中的另一个难点。我们利用API /tplus/api/v2/otherReceive/Create 进行批量数据导入,并同步执行映射转换,将聚水潭的数据格式调整为畅捷通T+所需格式,其中涉及字段的对应关系、单位换算等复杂处理。同时,为了提升效率,我们优化了网络传输层次,极大缩短了每次写入操作耗时。

由于两系统间存在一定的数据格式差异,本案例还特别引入了自定义对象映射机制,以确保源数据能够无缝转化为目标格式。此外,我们实现了一系列异常处理与错误重试机制,对于出现写失败或响应超时情况,会自动触发二次尝试,并记录详细日志用于后续审查分析。

总之,通过灵活运用轻易云平台功能,以及深入理解不同系统接口特性,不仅保证了流程全透明、实时监控,还显著提高了业务流程的整体效率,为企业带来了实际价值。在后续部分,我会进一步详述具体实施步骤及代码示例,敬请期待。

如何开发企业微信API接口

调用聚水潭接口获取并加工数据的技术案例

在数据集成生命周期的第一步,我们需要调用源系统聚水潭的接口/open/inventory/count/query来获取盘盈入库单的数据,并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。

接口调用配置

首先,我们需要配置调用聚水潭接口的元数据。以下是具体的配置参数:

  • API路径/open/inventory/count/query
  • 请求方法POST
  • 主键字段io_id
  • 分页参数
    • page_index:开始页码,默认值为1。
    • page_size:每页条数,默认值为30,最大值为50。
  • 时间参数
    • modified_begin:修改开始时间,使用变量{{LAST_SYNC_TIME|datetime}}
    • modified_end:修改结束时间,使用变量{{CURRENT_TIME|datetime}}
  • 状态参数
    • status:单据状态,固定值为"Confirmed"。

请求示例如下:

{
    "page_index": "1",
    "page_size": "50",
    "modified_begin": "{{LAST_SYNC_TIME|datetime}}",
    "modified_end": "{{CURRENT_TIME|datetime}}",
    "status": "Confirmed"
}

数据过滤与条件设置

为了确保我们获取的数据是有效且符合业务需求的,我们需要设置过滤条件。在本案例中,我们只需要数量大于0的记录。因此,我们在元数据配置中添加了如下条件:

"condition": [
    [
        {
            "field": "items.qty",
            "logic": "gt",
            "value": "0"
        }
    ]
]

自动填充响应数据

轻易云平台提供了自动填充响应数据的功能,这极大简化了数据处理流程。通过设置autoFillResponse: true,我们可以自动将接口返回的数据映射到目标系统所需的格式。

数据请求与清洗

在完成上述配置后,我们可以发起数据请求,并对返回的数据进行清洗和初步加工。以下是一个简单的数据清洗示例:

def clean_data(response):
    cleaned_data = []
    for record in response['data']:
        if record['items']['qty'] > 0:
            cleaned_record = {
                'io_id': record['io_id'],
                'item_code': record['items']['item_code'],
                'quantity': record['items']['qty'],
                'warehouse': record['warehouse'],
                'modified_time': record['modified_time']
            }
            cleaned_data.append(cleaned_record)
    return cleaned_data

在这个函数中,我们遍历接口返回的数据,只保留数量大于0的记录,并提取所需字段进行格式化处理。

数据转换与写入

经过清洗后的数据,需要进一步转换为目标系统(如畅捷通)的格式,并写入到目标系统中。这一步通常涉及字段映射和格式转换,可以通过轻易云平台提供的可视化工具或自定义脚本实现。

例如,将清洗后的数据转换为畅捷通其他入库单格式:

def transform_to_target_format(cleaned_data):
    transformed_data = []
    for record in cleaned_data:
        transformed_record = {
            'entry_id': record['io_id'],
            'product_code': record['item_code'],
            'quantity_in': record['quantity'],
            'warehouse_location': record['warehouse'],
            'entry_date': record['modified_time']
        }
        transformed_data.append(transformed_record)
    return transformed_data

通过上述步骤,我们成功地完成了从聚水潭获取盘盈入库单数据并进行初步加工,为后续的数据写入和进一步处理打下了坚实基础。

以上就是调用聚水潭接口获取并加工数据的技术案例,通过详细配置和处理步骤,展示了如何利用轻易云平台高效地进行数据集成。 用友与WMS系统接口开发配置

利用轻易云数据集成平台实现聚水潭盘盈入库单到畅捷通T+其他入库单的ETL转换

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台畅捷通T+ API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

API接口配置

首先,我们需要了解畅捷通T+ API接口的具体配置。根据提供的元数据配置,API接口为/tplus/api/v2/otherReceive/Create,请求方法为POST。以下是关键字段及其对应的配置:

  • ExternalCode(外部单据号):用于防止重复提交,与外系统数据对应。配置为{io_id}
  • VoucherType(单据类型):默认值为ST1004,通过ConvertObjectParser解析。
  • VoucherDate(单据日期):配置为{io_date}
  • BusiType(业务类型):编码为13,表示其他业务类型,通过ConvertObjectParser解析。
  • Warehouse(仓库信息):配置为{wms_co_id},通过ConvertObjectParser解析,并映射到目标值。
  • Memo(表头备注):配置为{remark}
  • DynamicPropertyKeys:固定值为pubuserdefnvc3,pubuserdefnvc4,通过逗号分隔转换为数组。
  • DynamicPropertyValues:固定值为13<{io_id},通过小于号分隔转换为数组。
  • RdStyle(入库类别):编码为113,通过ConvertObjectParser解析。
  • RDRecordDetails(单据明细信息):包含多个子字段,如存货信息、主计量单位数量、成本金额、成本单价和项目。

数据转换与写入

在实际操作中,我们需要按照上述配置,将源平台的数据进行相应的ETL转换。以下是具体步骤:

  1. 字段映射与解析

    • 将源平台的字段映射到目标平台所需字段。例如,将源平台中的盘盈入库单ID映射到畅捷通T+中的外部单据号(ExternalCode)。
    • 使用解析器对某些字段进行转换。例如,使用ConvertObjectParser将业务类型编码从源平台格式转换为目标平台格式。
  2. 数组与字符串处理

    • 对于DynamicPropertyKeys和DynamicPropertyValues,需要将字符串通过特定分隔符转换为数组。这可以通过内置的解析器如StringToArray来实现。
  3. 嵌套结构处理

    • 对于复杂嵌套结构,如RDRecordDetails,需要逐一处理其子字段。例如,将存货信息、主计量单位数量等分别映射并解析。
  4. 生成请求体

    • 根据上述步骤生成符合畅捷通T+ API接口要求的JSON请求体。例如:
      {
      "ExternalCode": "12345",
      "VoucherType": {"Code": "ST1004"},
      "VoucherDate": "2023-10-01",
      "BusiType": {"Code": "13"},
      "Warehouse": {"Code": "WH001"},
      "Memo": "这是一个测试备注",
      "DynamicPropertyKeys": ["pubuserdefnvc3", "pubuserdefnvc4"],
      "DynamicPropertyValues": ["13", "12345"],
      "RdStyle": {"Code": "113"},
      "RDRecordDetails": [
       {
         "Inventory": {"Code": "INV001"},
         "BaseQuantity": 100,
         "Amount": 5000,
         "Price": 50,
         "Project": {"Code": "809"}
       }
      ]
      }
  5. 发送请求

    • 使用POST方法将生成的JSON请求体发送到畅捷通T+ API接口。确保响应正确处理,并记录任何错误以便后续排查。

技术要点总结

在整个ETL过程中,有几个关键技术点需要注意:

  • 字段映射与解析器使用:确保每个字段都正确映射,并使用合适的解析器进行转换。
  • 数组与嵌套结构处理:对于复杂结构,需要逐层处理并确保格式正确。
  • 请求体生成与发送:最终生成符合API要求的JSON请求体,并正确发送请求。

通过以上步骤,我们可以高效地将聚水潭盘盈入库单的数据转换并写入畅捷通T+其他入库单,实现不同系统间的数据无缝对接。这不仅提高了数据处理效率,也保证了数据的一致性和准确性。 打通企业微信数据接口

更多系统对接方案