使用轻易云实现ETL转换和数据写入旺店通API的技术详解

  • 轻易云集成顾问-钟家寿

案例分析:金蝶云星空数据集成到旺店通·企业奇门

在本案例中,我们探讨了如何将金蝶云星空的数据高效、精准地集成到旺店通·企业奇门,实现组装父项入库同步。采用的方法主要涉及API接口调用、数据格式处理以及分页和限流问题的解决。

首先,通过调用金蝶云星空的executeBillQuery接口,我们能够定时且可靠地抓取所需的入库单据数据。在实现过程中,确保了对接口请求频次的有效控制,以避免超出限流限制。此外,为应对大规模数据传输需求,我们设计了一套批量集成机制,使得大量订单能迅速写入旺店通·企业奇门。

为了保证数据不漏单并能快速定位问题,我们在接收端——即旺店通·企业奇门——构建了一套异常处理与错误重试机制。该机制结合实时监控与日志记录功能,不仅提高了系统稳定性,还进一步提升了业务透明度。一旦出现异常,可以通过自动触发预设的重试逻辑来尽快恢复正常操作,其中包括使用wdt.stockin.order.push API进行再次推送,从而最大程度减少因网络波动或其他突发情况带来的影响。

此外,在具体实施过程中,对两系统之间存在的数据格式差异进行了详细分析和处理。例如,针对某些字段需要进行特殊转换或映射,这要求我们在配置阶段精细化定义每个字段对应关系,并对边界情况做好充分考虑。

每一个步骤都经过严格验证以确保最终方案的可靠性和稳定性,使得整个集成过程能顺利完成,并达到预期目标。这一技术方案不仅适用于本案例,同样也可为其他类似需求提供借鉴。 如何对接金蝶云星空API接口

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

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

接口配置与请求

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
    {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
    {"field":"FEE","label":"费用","type":"string","value":"FEE"},
    {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
    {"field":"FNote","label":"","备注"type:""string"value:""FNote""},
    // ...省略部分字段
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "TopRowCount", "label": "",返回总行数"type:""int"value:""describe:金蝶的查询分页参数""},
    // ...省略部分字段
  ]
}

请求参数解析

在上述配置中,api字段指定了要调用的接口为executeBillQuery,请求方法为POST。分页参数设置为每页500条记录,并启用了ID检查功能。

关键字段包括:

  • FID: 实体主键
  • FBillNo: 单据编号
  • FDocumentStatus: 单据状态
  • FStockOrgId_FNumber: 库存组织编码
  • FAffairType: 事务类型

这些字段将用于构建请求体,以获取所需的数据。

构建请求体

根据元数据配置,我们需要构建一个包含所有必要字段的请求体。以下是一个示例请求体:

{
  "FormId": "STK_AssembledApp",
  "FieldKeys": [
      // 列出所有需要查询的字段key集合
      // 示例:["FID", "FBillNo", ...]
  ],
  "FilterString": "{{LAST_SYNC_TIME|datetime}} and FAFFAIRTYPE = 'Assembly' and FStockOrgId.FNumber='102'",
  // 分页参数
  "Limit": "{PAGINATION_PAGE_SIZE}",
  "StartRow": "{PAGINATION_START_ROW}"
}

在这个请求体中:

  • FormId指定了业务对象表单ID。
  • FieldKeys列出了所有需要查询的字段。
  • FilterString用于过滤条件,例如根据上次同步时间、事务类型和库存组织编码进行过滤。
  • 分页参数确保我们能够处理大量数据。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以符合目标系统(如旺店通)的要求。这一步通常包括:

  1. 字段映射:将源系统字段映射到目标系统字段。例如,将金蝶云星空中的FBillNo映射到旺店通中的订单编号。
  2. 数据格式转换:例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式。
  3. 数据验证:确保所有必填字段都有值,并且值符合业务规则。

以下是一个简单的数据清洗示例:

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        cleaned_record = {
            'order_no': record['FBillNo'],
            'status': record['FDocumentStatus'],
            'org_code': record['FStockOrgId_FNumber'],
            'date': convert_date_format(record['FDate']),
            # ...其他字段处理
        }
        cleaned_data.append(cleaned_record)
    return cleaned_data

def convert_date_format(date_str):
    # 假设源日期格式为YYYY-MM-DD,目标格式为DD/MM/YYYY
    return datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y')

通过上述步骤,我们可以确保从金蝶云星空获取的数据经过清洗和转换后,能够无缝对接到目标系统中。

总结

本文详细介绍了如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,并对获取的数据进行清洗和转换。通过合理配置元数据和构建请求体,可以高效地实现不同系统间的数据集成。 用友与SCM系统接口开发配置

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

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台——旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。以下是具体的技术实现过程。

元数据配置解析

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

  • api: wdt.stockin.order.push,表示调用的API接口。
  • effect: EXECUTE,表示执行操作。
  • method: POST,表示使用HTTP POST方法。
  • idCheck: true,表示需要进行ID检查。
  • request: 包含具体请求参数的数组,每个参数都有详细的字段说明。

请求参数解析与映射

请求参数包括以下几个主要部分:

  1. 外部单号 (outer_no):

    • 字段:outer_no
    • 类型:string
    • 映射值:{FBillNo},即源数据中的单据编号。
  2. 仓库编号 (warehouse_no):

    • 字段:warehouse_no
    • 类型:string
    • 映射值:{FStockID_FNumber},即源数据中的仓库编号。
  3. 备注 (remark):

    • 字段:remark
    • 类型:string
    • 固定值:组装单父项入库
  4. 是否审核 (is_check):

    • 字段:is_check
    • 类型:string
    • 固定值:1
  5. 货品明细节点 (goods_list):

    • 字段:goods_list
    • 类型:array
    • 映射值:{FEntity},即源数据中的货品明细列表。

货品明细节点解析

货品明细节点包含多个子字段,每个子字段都需要进行相应的映射:

  1. 商家编码 (spec_no):

    • 字段:spec_no
    • 类型:string
    • 映射值:{FMaterialID_FNumber},即源数据中的物料编码。
  2. 入库数量 (stockin_num):

    • 字段:stockin_num
    • 类型:string
    • 映射值:{FQty},即源数据中的数量。
  3. 原价 (src_price)入库价 (stockin_price):

    • 字段分别为 src_price, stockin_price
    • 类型均为 string
    • 固定值均为 1

其他请求参数

此外,还有一个额外的请求参数:

  • stockin_info:
    • 字段:stockin_info
    • 类型:string
    • 描述信息
    • 固定值为 1

实现ETL转换

在轻易云平台上,我们可以通过可视化界面配置上述元数据,将源平台的数据按需提取、清洗并转换为目标格式。具体步骤如下:

  1. 提取(Extract): 从源系统中提取相关的数据字段,如单据编号、仓库编号、物料编码和数量等。

  2. 转换(Transform): 根据元数据配置,将提取的数据映射到目标格式。例如,将 {FBillNo} 映射到 outer_no, 将 {FStockID_FNumber} 映射到 warehouse_no, 等等。同时,对于固定值字段如 remark, is_check, src_price, 和 stockin_price, 直接赋予预定义的固定值。

  3. 加载(Load): 将转换后的数据通过HTTP POST方法提交到旺店通·企业奇门API接口,实现数据写入。确保每个请求参数都符合API要求,以保证数据能够正确接收和处理。

数据写入示例

以下是一个示例请求体,通过POST方法提交到API接口:

{
  "outer_no": "123456",
  "warehouse_no": "WH001",
  "remark": "组装单父项入库",
  "is_check": "1",
  "goods_list": [
    {
      "spec_no": "MAT001",
      "stockin_num": "100",
      "src_price": "1",
      "stockin_price": "1"
    },
    {
      "spec_no": "MAT002",
      "stockin_num": "200",
      "src_price": "1",
      "stockin_price": "1"
    }
  ],
  "stockin_info": "1"
}

通过上述步骤和配置,我们成功地将源平台的数据进行了ETL转换,并将其写入了旺店通·企业奇门API接口。这一过程不仅确保了数据的一致性和准确性,还大大提升了业务处理效率。 用友与MES系统接口开发配置

更多系统对接方案