如何将数据转换并加载到金蝶云星辰V2:实践案例

  • 轻易云集成顾问-卢剑航

系统对接集成案例分享:旺店通·企业奇门数据集成到金蝶云星辰V2

在实施企业信息化系统集成时,数据流的无缝对接是确保业务顺畅运行的关键。本文将详细探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据高效、准确地导入至金蝶云星辰V2中。在这个过程中,我们选用的实际运行方案为“其他出库(委外)V2.0”,旨在优化订单处理流程,提高系统一致性。

首先,要从旺店通·企业奇门获取出库订单的相关数据,我们调用了其API wdt.stockout.order.query。为了避免因分页和限流问题导致的数据遗漏或重复读取,我们采用了定时可靠的数据抓取机制,并实时监控接口返回结果,确保所有订单都能被完整抓取并妥善记录。

下一个挑战是处理从旺店通获取到的大量数据。在这一步中,我们专注于快速、高效地将这些数据写入金蝶云星辰V2,通过批量写入功能 /jdy/v2/scm/inv_other_out 大幅度缩短了同步时间。同时,为应对两大平台之间存在的数据格式差异,在映射过程中特别进行了定制化调整,以保证目标数据库能够正确识别和存储各类字段信息。

值得注意的是,整个集成过程不仅需要关注正常情况下的数据传输,还必须构建一套完善的异常处理与错误重试机制。当遇到网络抖动或者第三方API响应异常时,这些机制能够自动检测并采取相应措施进行重试操作,最大程度上降低因意外情况引起的数据丢失风险。

通过上述步骤及技术手段,不仅实现了旺店通·企业奇门与金蝶云星辰V2系统间稳定、高效、安全的数据交互,还提升了整体业务运维效率,为后续更多跨系统协同打下坚实基础。 系统集成平台API接口配置

调用旺店通·企业奇门接口获取并加工数据

在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取原始数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口 wdt.stockout.order.query,并对返回的数据进行处理。

接口配置与请求参数

首先,我们需要配置API接口的元数据。以下是我们使用的元数据配置:

{
  "api": "wdt.stockout.order.query",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_id",
  "pagination": {
    "pageSize": 30
  },
  "condition": [
    [
      {
        "field": "warehouse_no",
        "logic": "neq",
        "value": "WH2024052601"
      }
    ]
  ],
  "idCheck": true,
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "string",
      "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "string",
      "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "order_type",
      "label": "出库单类型",
      "type": "string",
      "describe":"2调拨出库,3采购退货出库,4盘亏出库,5生产出库,7其他出库,8多发出库,9纠错出库,10保修配件出库,11初始化出库,12jit拣货出库,13委外出库",
      "value":"13"
    },
    {
      "field":"status",
      ...

请求参数解析

  1. 时间参数start_timeend_time 用于按最后修改时间增量获取数据。start_time 使用上次同步时间,end_time 使用当前时间。
  2. 订单类型order_type 固定为 13,表示委外出库。
  3. 订单状态:默认查询已发货和已完成的单据,即状态为 95110
  4. 仓库编号排除条件:排除仓库编号为 WH2024052601 的记录。

数据请求与分页处理

为了确保高效的数据传输,我们使用分页机制。每次请求返回最多30条记录,通过调整 page_no 参数逐页获取所有符合条件的数据。

{
  ...
  ,"otherRequest":[
    {
      ...
    },
    {
      ...
    }
  ]
}

数据清洗与转换

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

  1. 字段映射:将API返回的数据字段映射到目标系统所需的字段。例如,将 order_no 映射为目标系统中的订单编号。
  2. 数据过滤:根据业务需求过滤掉不需要的记录。例如,只保留状态为已发货和已完成的记录。
  3. 格式转换:将日期、金额等字段转换为目标系统所需的格式。

实际案例分析

假设我们从API返回了以下部分数据:

{
  ...
}

我们需要对这些数据进行如下处理:

  1. order_no 转换为目标系统中的订单编号。
  2. 将日期字段从字符串格式转换为日期对象。
  3. 根据业务规则过滤掉不符合条件的记录。

通过上述步骤,我们可以确保从源系统获取的数据经过清洗和转换后,能够无缝对接到目标系统中,从而实现高效的数据集成。

以上就是调用旺店通·企业奇门接口获取并加工数据的详细过程。在实际操作中,根据具体业务需求可能还需要进行更多定制化处理。 轻易云数据集成平台金蝶集成接口配置

数据集成与转换:将数据写入金蝶云星辰V2 API接口

在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并最终写入目标平台。在本案例中,我们将探讨如何使用轻易云数据集成平台,将数据转换为金蝶云星辰V2 API接口所能接收的格式,并写入目标平台。

元数据配置解析

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

{
  "api": "/jdy/v2/scm/inv_other_out",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {
      "field": "bill_date",
      "label": "单据日期",
      "type": "string",
      "value": "{consign_time}"
    },
    {
      "field": "bill_no",
      "label": "单据编码",
      "type": "string",
      "value": "{order_no}"
    },
    {
      "field": "trans_type_id",
      "label": "业务类型id",
      "type": "string",
      "value": "13"
    },
    {
      "field": "operation_key",
      "label": "操作类型",
      "type": "string",
      "value": "audit"
    },
    {
      ...
    }
  ]
}
  • api: 接口路径 /jdy/v2/scm/inv_other_out
  • method: HTTP请求方法 POST
  • number, id, name: 标识字段
  • request: 请求体字段配置

数据请求与清洗

在此阶段,我们从源系统提取原始数据,并进行必要的清洗和预处理。假设我们已经获得了如下格式的源数据:

{
  "_id":"12345abcde",
  "_source":{
    ...
    "_details_list":[
        {"goods_no":"1001",...},
        {"goods_no":"1002",...}
    ]
  }
}

数据转换与写入

接下来,我们将源数据转换为目标平台所需的格式。以下是关键步骤:

  1. 提取并映射字段

    • consign_time映射到bill_date
    • order_no映射到bill_no
    • 固定值13赋给trans_type_id
    • 固定值audit赋给operation_key
  2. 处理商品分录

    • 对于每个商品分录(即数组中的每个对象),需要查询MongoDB以获取相关信息,如商品ID、单位ID等。
    • 使用 _mongoQuery_findCollection 方法进行查询和映射。

例如,对于商品编号为 1001 的商品,执行以下查询:

{
  "_mongoQuery d476a55d-acc7-3156-9c7f-b9f9dce596b5 findField=content.id where={\"content.number\": {\"$eq\":\"1001\"}}"
}
  1. 构建请求体: 最终构建的请求体应符合API要求,例如:
{
  ...
  {
    field: 'material_entity',
    label: '商品分录',
    type: 'array',
    value: 'details_list',
    children: [
        {
            field: 'material_id',
            label: '商品',
            type: 'string',
            value: '_mongoQuery d476a55d-acc7-3156-9c7f-b9f9dce596b5 findField=content.id where={"content.number":{"$eq":"{{details_list.goods_no}}"}}'
        },
        ...
    ]
  }
}

最终请求示例

最终生成的请求体可能如下:

{
  ...,
  {
    bill_date: '2023-10-01',
    bill_no: 'ORD12345',
    trans_type_id: '13',
    operation_key: 'audit',
    material_entity: [
        {
            material_id: 'MAT001', // 从MongoDB查询结果
            qty: '10', // 从 details_list 中提取
            unit_id: 'UNIT001', // 从MongoDB查询结果
            stock_id: 'STOCK001' // 从 findCollection 查询结果
        },
        ...
    ]
  }
}

通过上述步骤,我们成功地将源平台的数据转换为金蝶云星辰V2 API接口所能接收的格式,并准备好发送POST请求以完成数据写入。 钉钉与MES系统接口开发配置

更多系统对接方案