采购数据ETL转换及写入金蝶云星辰V2技术详解

  • 轻易云集成顾问-叶威宏

汤臣倍健营销云数据集成到金蝶云星辰V2案例分享

在复杂的企业信息化系统中,如何高效地进行数据对接和集成是一个至关重要的问题。本文将介绍一个实际运行的方案——“采购入库同步-(Life-Space)广州闽康”,实现汤臣倍健营销云数据向金蝶云星辰V2平台的成功集成。

为了确保整个过程顺畅无误,我们利用轻易云数据集成平台提供的一系列强大工具,实现了以下几个核心功能:

  1. 定时可靠的数据抓取 使用汤臣倍健提供的API接口/erp/api/order/query/purInWarehsOrder,我们能够定时可靠地抓取所需的采购入库单据。这一过程通过预先设定好的时间间隔自动执行,并结合分页处理机制,有效应对限流问题,确保不会遗漏任何订单记录。

  2. 批量快速写入 抓取到的数据需要迅速而准确地写入金蝶云星辰V2。我们通过调用其API接口/jdy/v2/scm/pur_inbound, 实现了大规模数据传输。不仅如此,这个过程中,我们还特别注意到了两者之间的数据格式差异,通过自定义映射规则,将源数据转换为目标系统可以识别和处理的格式。

  3. 异常处理与错误重试机制 在复杂的数据传输过程中,不可避免会遇到各种异常情况,例如网络波动、API响应慢等。我们的解决方案中设计了详细的错误日志记录与重试机制,当某次请求失败时,会自动重新尝试直至成功,以最大程度保证数据一致性和完整性。

这样一套完整且高效的数据对接流程不仅满足了业务需求,同时也为后续其他类似项目积累了宝贵经验。在实践中不断优化迭代,使得跨系统、跨平台的大规模数据集成变得更加简洁高效。 钉钉与MES系统接口开发配置

调用源系统汤臣倍健营销云接口获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用汤臣倍健营销云的/erp/api/order/query/purInWarehsOrder接口,并对获取的数据进行加工处理。

接口调用配置

首先,我们需要配置元数据,以便正确调用汤臣倍健营销云的API接口。以下是元数据配置的关键字段及其含义:

  • api: /erp/api/order/query/purInWarehsOrder
  • effect: QUERY
  • method: POST
  • idCheck: true

请求参数配置如下:

[
    {"field":"tenantId","label":"经销商id","type":"string","describe":"经销商id(必填,营销云id)如:08e2fd9d074f4ef7b5e6416b74d006d6","value":"xxx"},
    {"field":"yxyNumber","label":"营销云销售订单号","type":"string","describe":"如:lzwhy0121012002,传此参数时,其他时间状态等条件无效"},
    {"field":"number","label":"系统订单号","type":"string","describe":"如:CGDD00000003744,传此参数时,其他时间状态等条件无效"},
    {"field":"status","label":"订单状态","type":"string","describe":"0:未审核1:已审核(已出库)","value":"1"},
    {"field":"beginTime","label":"开始时间","type":"string","describe":"timeType为空或者0,基于创建时间查询,timeType为1,基于更新时间查询,格式:0000-00-00或0000-00-0000:00:00,如果不传单号此字段必填","value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field":"endTime","label":"结束时间","type":"string","describe":"timeType为空或者0,基于创建时间查询,timeType为1,基于更新时间查询,格式:0000-00-00或0000-00-0000:00:00,如果不传单号此字段必填","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"pageNo","label":"页码","type":"string","describe":"默认1","value":"1"},
    {"field":"pageSize","label":"每页条数","type":"string","describe":"默认30","value":"30"},
    {"field":"timeType","label":"时间段标志","type":"string","describe":"查询时间段标识,0:创建时间(默认),1:最后更新时间","value": "1"}
]

数据请求与清洗

在请求数据时,需要确保参数的准确性和完整性。特别是tenantIdbeginTimeendTime这些必填字段。通过POST方法发送请求后,我们将得到一个包含采购入库订单信息的响应。

为了确保数据的准确性和一致性,我们需要对响应数据进行清洗。例如,根据业务需求过滤掉物料编号中包含"F.A"的记录:

"condition":[[{"field": "itemList.materialNumber", "logic": "notlike", "value": "F.A"}]]

这种条件过滤可以在元数据配置中直接设置,使得在获取数据时就能自动排除不符合条件的数据。

数据转换与写入

在清洗完毕后,需要对数据进行转换,以便写入目标系统。在这个过程中,可以利用轻易云平台提供的自动填充响应功能:

"autoFillResponse": true

这意味着平台会根据预设规则自动将API响应中的字段映射到目标系统所需的格式和字段名,从而简化了开发工作量。

实践案例

假设我们需要同步广州闽康的采购入库订单信息。首先,通过设置合适的请求参数,例如:

{
    "tenantId": "08e2fd9d074f4ef7b5e6416b74d006d6",
    "beginTime": "{{LAST_SYNC_TIME|datetime}}",
    "endTime": "{{CURRENT_TIME|datetime}}",
    "status": "1",
    "pageNo": "1",
    "pageSize": "30",
    "timeType": "1"
}

然后,通过POST方法调用API接口获取数据,并根据上述条件进行清洗和转换。最终,将处理后的数据写入目标系统,实现采购入库信息的同步。

以上过程展示了如何利用轻易云数据集成平台高效地调用源系统API接口,并对获取的数据进行清洗和转换,以满足业务需求。这不仅提高了数据处理效率,也确保了数据的一致性和准确性。 金蝶与WMS系统接口开发配置

轻易云数据集成平台:采购入库同步至金蝶云星辰V2 API接口的ETL转换

在数据集成生命周期的第二步中,关键任务是将已从源平台获取并清洗的数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台——金蝶云星辰V2 API接口的要求,并最终写入目标平台。本文将详细探讨这一过程中的技术细节,特别是API接口相关的配置和实现。

API接口配置

根据元数据配置,我们需要将数据写入金蝶云星辰V2的/jdy/v2/scm/pur_inbound接口。该接口采用POST方法,并且需要特定格式的数据请求体。以下是主要字段及其对应关系:

  • bill_date: 单据日期,格式为字符串,通过模板引擎将auditTime字段转换为日期格式。
  • bill_no: 单据编码,直接映射。
  • transtype: 业务类型,固定值为"2"。
  • supplier_id: 供应商编码,固定值为"1537061352428816384"。
  • remark: 备注,通过模板引擎拼接字符串,包括来自营销云的备注和营销云单号。
  • custom_field: 自定义字段,其中包含营销云单号。
  • material_entity: 商品分录,是一个数组,每个元素包含商品的详细信息。

数据转换

在数据转换过程中,需要特别注意以下几点:

  1. 日期格式转换

    {"field":"bill_date","label":"单据日期","type":"string","describe":"单据日期","value":"{{auditTime|date}}"}

    使用模板引擎将auditTime字段转换为符合API要求的日期格式。

  2. 固定值映射

    {"field":"transtype","label":"业务类型","type":"string","describe":"数量","value":"2"}
    {"field":"supplier_id","label":"供应商编码","type":"string","describe":"供应商编码","value":"1537061352428816384"}

    某些字段需要设置为固定值,如业务类型和供应商编码。

  3. 字符串拼接

    {"field":"remark","label":"备注","type":"string","describe":"商品编码","value":"{remark}-来自营销云-{yxyNumber}"}

    通过模板引擎拼接字符串,将备注字段与营销云单号结合。

  4. 自定义字段处理

    {"field":"custom_field__1__2uvhrxiedyh3hl45","label":"营销云单号","type":"string","value":"{number}"}

    自定义字段中嵌套了多个子字段,需要逐一映射和赋值。

  5. 数组处理

    "material_entity":[{"field":...}]

    商品分录是一个数组,需要对每个商品项进行相应的字段映射和赋值。特别注意的是商品编码、仓库编码、数量、单位等关键字段。

数据加载

在完成数据转换后,将生成的数据请求体通过POST方法发送至金蝶云星辰V2 API接口。以下是一个示例请求体:

{
    "bill_date": "2023-10-01",
    "bill_no": "PO123456",
    "transtype": "2",
    "supplier_id": "1537061352428816384",
    "remark": "采购订单-来自营销云-YX123456",
    "custom_field": {
        "custom_field__1__2uvhrxiedyh3hl45": "YX123456"
    },
    "material_entity": [
        {
            "material_number": "MAT001",
            "stock_id": "1537061721468863488",
            "is_free": false,
            "qty": "100",
            "unit_id": "_findCollection find base_unit_id from 498e7562-ac4a-3ba3-a3bb-ccdacd6dc8f0 where number=MAT001",
            "batch_no": "BATCH001",
            "kf_date": "2023-09-01",
            "kf_period": "2",
            "valid_date": "2023-11-01",
            "kf_type": "3",
            "tax_price": "_function {{itemList.taxlastmoney}}/{{itemList.opernumber}}",
            "cess": "",
            "all_amount": "{{itemList.taxlastmoney}}"
        }
    ]
}

技术要点总结

  1. 模板引擎应用:通过模板引擎实现动态值的替换和计算,如日期格式转换、字符串拼接等。
  2. 固定值设定:确保某些必要字段具有固定值,以满足目标系统的要求。
  3. 嵌套结构处理:对于复杂嵌套结构的数据,需要逐层解析和映射,确保每个子字段都正确赋值。
  4. 数组处理:对于数组类型的数据,需要循环处理每个元素,并进行相应的字段映射。

通过上述技术手段,可以高效地将源平台的数据转换为金蝶云星辰V2 API接口所需的格式,并成功写入目标平台。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 如何对接用友BIP接口

更多系统对接方案