使用轻易云平台实现ETL转换并对接金蝶云星空

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

简道云与金蝶云星空采购退货单数据集成案例

在本篇技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现简道云的采购退货单数据高效无缝地对接到金蝶云星空。这一流程包含了从简道云接口的数据抓取、处理及转换,到最后批量写入金蝶云星空的全周期操作。

首先,集成方案需要确保简道云的数据不漏单,并能够定时可靠地抓取简道云接口提供的数据。为此,我们使用了/api/v2/app/{app_id}/entry/{entry_id}/data接口,设置合理的分页和限流策略以防止请求频率过高导致的问题。同时,通过实时监控和日志记录来维护全程可追溯性,一旦出现异常能够迅速进行错误重试。

另一方面,在将大量数据快速写入到金蝶云星空过程中,同样需要考虑多方面因素,包括数据格式差异、批量操作性能以及对接异常处理等。我们使用了金蝶提供的batchSave API 接口不仅能实现大规模并发写入,还能够灵活配置定制化的数据映射,以应对不同字段结构之间的不一致性。

如下图所示,即是一个典型的数据从简道云端获取并转移至金蝶系统中的过程:

  1. Step 1: 简道云API调用
    调用 /api/v2/app/{app_id}/entry/{entry_id}/data 获取最新的采购退货单数据。

  2. Step 2: 数据转换与处理
    将获取到的数据进行必要的格式调整和验证,例如日期格式校准、不符合规范字符过滤等。

  3. Step 3: 批量写入金蝶
    使用 batchSave 接口一次性将整理后的综合数据信息存储到金蝶数据库,并开启错误重试机制。

  4. Step 4: 日志记录与监控
    实时监控每个步骤状态,并详细记录日志,以便后续分析与问题排查。

这样一种统一而清晰的方法带来了极大的效率提升和准确度保证。不但解决了两个系统之间复杂繁琐的信息传递问题,同时也为企业运行运营提供了一种稳定可靠的信息手段。 企业微信与OA系统接口开发配置

调用简道云接口获取并加工数据

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用简道云接口/api/v2/app/{app_id}/entry/{entry_id}/data来获取并加工数据。

接口配置与请求参数

首先,我们需要了解该接口的基本配置和请求参数。以下是元数据配置的详细说明:

  • API路径: /api/v2/app/{app_id}/entry/{entry_id}/data
  • 请求方法: POST
  • 主要字段:
    • appId: 应用ID,固定值为642307c010703500087839ac
    • entryId: 表单ID,固定值为64a3bbf547e99400094a8c66
    • fields: 需要查询的字段,多个字段以逗号隔开,默认不传入则输出所有字段
    • limit: 每页返回数量,范围1~100,默认值为10
    • filter: 过滤参数,包括逻辑关系(如andor)和自定义字段过滤条件

请求示例

根据上述配置,我们可以构建一个具体的请求示例:

{
    "appId": "642307c010703500087839ac",
    "entryId": "64a3bbf547e99400094a8c66",
    "fields": "_widget_1688538495090,_id",
    "limit": "100",
    "filter": {
        "rel": "and",
        "cond_1": {
            "field": "updateTime",
            "type": "datetime",
            "method": "range",
            "value": "{{LAST_SYNC_TIME|datetime}},{{CURRENT_TIME|datetime}}"
        }
    }
}

数据清洗与转换

获取到数据后,我们需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的各种工具和功能。

  1. 数据清洗:

    • 确保所有必需字段都存在且格式正确。
    • 去除重复记录或无效数据。
    • 转换日期格式、数值单位等。
  2. 数据转换:

    • 将简道云的数据结构转换为金蝶系统所需的数据结构。
    • 映射字段名称,例如将简道云中的_widget_1688538495090映射为金蝶中的相应字段。

自动填充响应

在元数据配置中,有一个重要属性是autoFillResponse,设置为true。这意味着轻易云平台会自动处理响应数据,并将其填充到相应的目标系统中。这一步骤极大地简化了开发工作量,使得整个集成过程更加高效。

实时监控与调试

在实际操作中,通过轻易云平台的实时监控功能,可以随时查看数据流动和处理状态。一旦出现问题,可以快速定位并解决。例如,如果发现某些记录未能成功写入金蝶系统,可以通过日志和监控界面查找原因,并进行相应调整。

总结

通过调用简道云接口获取并加工数据,是轻易云数据集成平台生命周期中的关键步骤之一。本文详细介绍了如何配置和使用该接口,以及如何进行数据清洗与转换。利用轻易云平台强大的功能,可以显著提升数据集成的效率和可靠性。 打通钉钉数据接口

轻易云数据集成平台ETL转换与金蝶云星空API接口对接技术案例

在数据集成过程中,ETL(Extract, Transform, Load)转换是关键的一环。本文将详细介绍如何使用轻易云数据集成平台,将简道云的采购退货单数据进行ETL转换,最终通过金蝶云星空的API接口写入目标平台。

数据请求与清洗

在本案例中,我们首先从简道云获取采购退货单的数据。这些数据包括单据编号、退料日期、退料组织、供应商、结算组织、结算币别、付款组织、货主类型和货主等信息。同时,还包含了物料编码、实退数量、仓库、批号、货主类型和含税单价等明细信息。

数据转换与写入

接下来,我们将这些数据进行必要的转换,以符合金蝶云星空API接口所需的格式。以下是具体的元数据配置及其解析:

  1. 基本字段配置

    • FBillNo(单据编号):直接映射为简道云中的{_widget_1688538495090}
    • FDate(退料日期):使用{{updateTime|datetime}}进行日期格式转换。
    • FStockOrgId(退料组织):通过ConvertObjectParser解析为金蝶需要的格式,映射为{_widget_1704936392418}
    • FSupplierID(供应商):通过MongoDB查询语句获取对应的供应商编号,并使用ConvertObjectParser进行解析。
    • FSettleOrgId(结算组织):同样使用ConvertObjectParser解析为金蝶需要的格式,映射为{_widget_1704936392418}
    • FSettleCurrId(结算币别):直接设置为固定值PRE001
    • FPayOrgId(付款组织):使用相同的解析方法,映射为{_widget_1704936392418}
    • FOwnerTypeIdHead(货主类型):设置为固定值BD_OwnerOrg
    • FOwnerIdHead(货主):同样通过解析器映射为对应值。
  2. 明细信息配置 明细信息是一个数组,每个元素包含以下字段:

    • FMATERIALID(物料编码):通过解析器映射为简道云中的物料编码字段{_widget_1682144495853}
    • FRMREALQTY(实退数量):直接映射为简道云中的实退数量字段{_widget_1689121484431}
    • FSTOCKID(仓库):固定映射为仓库编码MD000
    • FLot(批号):固定映射为批次号123,并通过解析器进行处理。
    • FOWNERTYPEID(货主类型):设置为固定值BD_OwnerOrg
    • FOWNERID(货主):通过解析器映射为对应值。
    • FTAXPRICE(含税单价):直接映射为简道云中的含税单价字段{_widget_1689379240653}
  3. 其他请求参数 这些参数用于控制API调用行为:

    • FormId: 设置业务对象表单ID,如采购退货单的ID PUR_MRB
    • Operation: 设置执行操作类型 batchSave
    • IsAutoSubmitAndAudit: 设置是否自动提交并审核,布尔值 true
    • IsVerifyBaseDataField: 设置是否验证基础资料有效性,布尔值 true
    • SubSystemId: 设置系统模块 ID 为 21
    • InterationFlags: 设置允许负库存标识 STK_InvCheckResult

实际操作步骤

  1. 配置请求参数和元数据:

    {
       "api": "batchSave",
       "effect": "EXECUTE",
       "method": "POST",
       "idCheck": true,
       "request": [
           {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{_widget_1688538495090}"},
           {"field":"FDate","label":"退料日期","type":"string","describe":"日期","value":"{{updateTime|datetime}}"},
           {"field":"FStockOrgId","label":"退料组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704936392418}"},
           {"field":"FSupplierID","label":"供应商","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery 209a5c25-4dbf-3123-9a2b-47396a1c52fd findField=content.FNumber where={\"content.FName\":{\"$eq\":\"{_widget_1602489532994}\"},\"content.FUseOrgId_FNumber\":{\"$eq\":\"{_widget_1704936392418}\"}}"},
           {"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704936392418}"},
           {"field":"FSettleCurrId","label":"结算币别","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
           {"field":"FPayOrgId","label":"付款组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value\":\"{_widget_1704936392418}"},
           {"field\":\"FOwnerTypeIdHead\",\"label\":\"货主类型\",\"type\":\"string\",\"describe\":\"多类别基础资料列表\",\"value\":\"BD_OwnerOrg\"},
           {"field\":\"FOwnerIdHead\",\"label\":\"货主\",\"type\":\"string\",\"describe\":\"多类别基础资料\",\"parser\":{\"name\":\"ConvertObjectParser\",\"params\":\"FNumber\"},\"value\":\"{_widget_1704936392418}\"},
           {"field\":\"FPURMRBENTRY\",\"label\":\"明细信息\",\"type\":\"array\",\"describe\":\"明细信息\",\"value\":\"{ _widget:1602213743268 }\", \"children\":[
               {\"field\": \"FMATERIALID\", \"label\": \"物料编码\", \"type\": \"string\", \"describe\": \"基础资料\", \"parser\": {\"name\": \"ConvertObjectParser\", \"params\": \"FNumber\"}, \"value\": \"{ _widget:1682144495853 }\"},
               {\"field\": \"FRMREALQTY\", \"label\": \"实退数量\", \"type\": \"float\", \"describe\": \"数量\", \"value\": \"{ _widget:1689121484431 }\"},
               {\"field\": \"FSTOCKID\", \"label\": \"仓库\", \"type\": \"string\", \"describe\": \"基础资料\",  parser: { name: ConvertObjectParser, params: FNumber }, value: MD000 },
               { field: FLot, label: 批号, type: string, describe: 批次, value: 123, parser: { name: ConvertObjectParser, params: FNumber } },
               { field: FOWNERTYPEID, label: 货主类型, type: string, describe: 多类别基础资料列表, value: BD_OwnerOrg },
               { field: FOWNERID, label: 货主, type: string, describe: 多类别基础资料, parser:{ name : ConvertObjectParser , params : FNumber }, value : {_ widget : 1704936392418 }},
               { field : FTAXPRICE , label : 含税单价 , type : float , describe : 单价 , value : {_ widget : 1689379240653 }}
            ]}
        ],
        otherRequest:[
            { field : FormId , label : 业务对象表单 Id , type : string , describe : 必须填写金蝶的表单 ID 如:PUR_PurchaseOrder , value : PUR_MRB },
            { field : Operation , label : 执行的操作 , type : string , describe : 执行的操作 , value : batchSave },
            { field : IsAutoSubmitAndAudit , label : 提交并审核 , type : bool , describe : 提交并审核 , value:true},
            { field:IsVerifyBaseDataField,label:"验证基础资料",type:"bool",describe:"是否验证所有的基础资料有效性,布尔类,默认false(非必录)",value:true},
            { field:"SubSystemId",label:"系统模块",type:"string",describe:"默认仓库模块",value:"21"},
            { field:"InterationFlags",label:"允许负库存",type:"string",describe:"允许负库存",value:"STK_INVCheckResult"}
        ],
        operation:{
            rowsKey:'array',
            rows:'1',
            method:'batchArraySave'
        }
    }
  2. 调用API接口: 使用上述配置,通过HTTP POST方法调用金蝶云星空的API接口,实现数据写入。确保每个字段都经过正确转换,并符合目标平台的数据格式要求。

总结

本文详细介绍了如何利用轻易云数据集成平台,将简道云中的采购退货单数据经过ETL转换后,通过金蝶云星空API接口写入目标平台。在实际操作中,需要特别注意各个字段的数据格式和转换规则,以确保数据能够正确无误地传输到目标系统。 如何开发企业微信API接口

更多系统对接方案