ETL流程在金蝶云与易快报数据集成中的应用

  • 轻易云集成顾问-吴伟

金蝶费用应付单对应付款对接易快报费用审核帐表案例分享

在实际项目实施过程中,如何高效、准确地将金蝶云星空的费用应付单数据集成到易快报的费用审核帐表,是许多企业面临的一大挑战。在此案例中,我们重点探讨利用轻易云数据集成平台实现这一对接任务的方法论及技术细节。

第一步是通过调用金蝶云星空的API接口executeBillQuery抓取所需的数据,该步骤需要处理分页和限流的问题。为确保不漏单,每次执行查询时严格按照时间戳或标识进行筛选和分页,使得全量数据能够被全面捕获。此外,为了提高系统的可靠性,定时脚本用于定期触发数据抓取,还设置错误重试机制,以防出现任何网络波动或接口异常导致的数据丢失。

其次,在数据传输阶段,由于两套系统间存在格式差异,需要进行一系列转换和映射。对于这个环节,可以依赖ETL(Extract, Transform, Load)流程来完成属性字段、数值类型等多方面的适配。同时,通过批量处理减少写入次数,加速大量数据上传至易快报对应API /api/openapi/v2.1/datalink/add 端点,提高效率。

另外,为实时监控整个集成过程,日志记录是必不可少的一部分。它不仅便于追踪各个操作步骤,还能帮助快速定位并解决潜在问题。当某条记录未能正常写入时,即刻触发警告,并根据预设规则尝试重新发送,从而保障每条数据都准时、安全地抵达目的存储点。

总之,本技术方案聚焦于从金蝶云星空稳定获取账务信息,高效整合后导入易快报,并通过全程监控与容错机制维护业务连续性。以下章节将详细介绍具体实现步骤及代码示例…… 如何对接用友BIP接口

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

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

接口配置与调用

首先,我们需要配置元数据,以便正确调用金蝶云星空的executeBillQuery接口。以下是元数据配置的详细信息:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FPAYBILLSRCENTRY_FEntryID",
  "name": "FNumber",
  "idCheck": true,
  "request": [
    {"field":"FBillNo","label":"单据编码","type":"string","describe":"FSupplierId","value":"FBillNo"},
    {"field":"FSRCBILLNO","label":"应付单编码","type":"string","describe":"编码","value":"FSRCBILLNO"},
    {"field":"FAFTTAXTOTALAMOUNT","label":"应付金额","type":"string","describe":"名称","value":"FAFTTAXTOTALAMOUNT"},
    {"field":"FPLANPAYAMOUNT","label":"计划付款金额","type":"string","describe":"创建组织","value":"FPLANPAYAMOUNT"},
    {"field":"FREALPAYAMOUNT_S","label":"本次付款金额","type":"string","describe":"使用组织","value":"FREALPAYAMOUNT_S"},
    {"field":"FBankStatus","label":"银行付款状态","type":"string","value":"FBankStatus"},
    {"field":"FPAYBILLSRCENTRY_FEntryID","label":"付款单源单明细ID","type":"string","value":"FPAYBILLSRCENTRY_FEntryID"},
    {"field":"FModifyDate","label":"修改日期","type":"string","value":"FModifyDate"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "int", "describe": "金蝶的查询分页参数", "value": "2000"},
    {"field": "StartRow", "label": "开始行索引", "type": "int", "describe": "金蝶的查询分页参数"},
    {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"},
    {
      "field": "FilterString",
      "label": "过滤条件",
      "type": "string",
      "describe": 
        `示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=`,
      `value`: 
        `FModifyDate>='{{DAYS_AGO_s10|datetime}}' and FBankStatus in ('F','C') and FSRCBILLNO like 'B%' and FSETTLEORGID.fnumber = '102'`
    },
    {
      `field`: `FieldKeys`,
      `label`: `需查询的字段key集合`,
      `type`: `array`,
      `describe`: 
        `金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber`,
      `parser`: {
        `name`: `ArrayToString`,
        `params`: `,
      }
    },
    {
      `field`: `FormId`,
      `label`: `业务对象表单Id`,
      `type`: `string`,
      `describe`: 
        “必须填写金蝶的表单ID如:PUR_PurchaseOrder”,
      “value”: “AP_PAYBILL”
    }
  ],
  “buildModel”: true,
  “autoFillResponse”: true
}

数据请求与清洗

在元数据配置完成后,我们可以通过POST方法向executeBillQuery接口发送请求。请求体中包含了我们需要查询的数据字段和其他必要参数,如分页信息和过滤条件。

例如,我们可以设置过滤条件为:

"FilterString":
"FModifyDate>='{{DAYS_AGO_s10|datetime}}' and FBankStatus in ('F','C') and FSRCBILLNO like 'B%' and FSETTLEORGID.fnumber = '102'"

这将确保我们只获取最近10天内修改过且银行付款状态为‘F’或‘C’、应付单编码以‘B’开头、结算组织编号为‘102’的数据。

数据转换与写入

在成功获取数据后,下一步是对数据进行必要的转换和写入操作。轻易云平台提供了自动填充响应(autoFillResponse)功能,可以根据预先配置好的模型自动将API响应的数据填充到目标系统中。

例如,我们可以将从金蝶云星空获取到的应付单信息转换为易快报费用审核帐表所需的数据格式,并写入到相应的数据库或系统中。

技术要点总结

  1. 元数据配置:确保API调用所需的所有字段和参数都已正确配置。
  2. 请求与清洗:通过POST方法发送请求,并使用过滤条件精确获取所需数据。
  3. 转换与写入:利用平台提供的自动填充功能,将获取到的数据转换并写入目标系统。

通过以上步骤,我们能够高效地实现不同系统间的数据无缝对接,确保业务流程顺畅运行。 如何开发企业微信API接口

数据集成生命周期的第二步:ETL转换与写入易快报

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个关键步骤。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台易快报API接口所能够接收的格式,并最终写入目标平台。

数据请求与清洗

首先,我们需要从源平台获取数据,并进行必要的清洗和预处理。这一步骤确保了数据的一致性和完整性,为后续的ETL转换奠定基础。假设我们已经完成了这一阶段,现在我们进入数据转换与写入阶段。

数据转换与写入

在这一阶段,我们将使用轻易云数据集成平台提供的元数据配置,将金蝶费用应付单对应付款的数据转换为易快报费用审核帐表所需的格式,并通过API接口写入易快报。

以下是元数据配置的详细内容:

{
  "api": "/api/openapi/v2.1/datalink/add",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "1",
  "id": "1",
  "name": "1",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FSRCBILLNO",
    "bodyName": "details",
    "bodySum": ["FPLANPAYAMOUNT", "FREALPAYAMOUNT_S"],
    "header": ["FSRCBILLNO"],
    "body": ["FSRCBILLNO", "FAFTTAXTOTALAMOUNT", "FPLANPAYAMOUNT", "FREALPAYAMOUNT_S", "FModifyDate"]
  },
  "request": [
    {
      "field": "entityId",
      "label": "entityId",
      "type": "string",
      "describe": "",
      "value": "e010abc87dbfc22ae3c0"
    },
    {
      "field": "dataLinks",
      ...
    }
  ]
}

配置解析

  • API接口/api/openapi/v2.1/datalink/add,这是我们将数据写入易快报的平台接口。
  • 请求方法POST,用于发送数据。
  • 操作方法merge,表示将多个字段合并处理。
  • 主要字段
    • FSRCBILLNO: 源单编号
    • FAFTTAXTOTALAMOUNT: 税后总金额
    • FPLANPAYAMOUNT: 计划支付金额
    • FREALPAYAMOUNT_S: 实际支付金额
    • FModifyDate: 修改日期

数据映射与计算

在请求体中,我们需要对源平台的数据进行映射和计算,以满足目标平台的需求:

{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...
                                  {
                                    ...
                                    {
                                      ... 
                                      {"field":"E_e010abc87dbfc22ae3c0_Paid_Amount","label":"实付金额","type":"string","describe":"","value":"_function {{details.FAFTTAXTOTALAMOUNT}}-{{details.FPLANPAYAMOUNT}}+{{details.FREALPAYAMOUNT_S}}"},
                                      {"field":"E_e010abc87dbfc22ae3c0_付款日期","label":"付款日期","type":"string","describe":"","value":"_function UNIX_TIMESTAMP() * 1000"}
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    {"field":"editFlag","label":"editFlag","type":"string","value":"increment"}
}

在上述配置中,我们进行了以下关键操作:

  1. 实付金额计算:通过公式 _function {{details.FAFTTAXTOTALAMOUNT}}-{{details.FPLANPAYAMOUNT}}+{{details.FREALPAYAMOUNT_S}} 来计算实付金额。
  2. 付款日期生成:使用 _function UNIX_TIMESTAMP() * 1000 动态生成当前时间戳作为付款日期。

数据提交

最后,通过POST请求将处理后的数据提交到易快报API接口:

POST /api/openapi/v2.1/datalink/add HTTP/1.1
Host: [目标平台域名]
Content-Type: application/json
Authorization: Bearer [token]

{
  ... // 请求体内容
}

通过上述步骤,我们实现了从金蝶费用应付单对应付款到易快报费用审核帐表的数据ETL转换和写入。这个过程不仅确保了数据的一致性和准确性,还极大地提升了业务处理效率。 打通企业微信数据接口

更多系统对接方案