ETL转换与金蝶云星空数据写入:轻易云平台应用实例

  • 轻易云集成顾问-曹润

金蝶云星空与金蝶云星空系统对接集成案例分析:付款退款单数据集成

在本篇技术分享中,我们将深入探讨如何通过轻易云数据集成平台,实现金蝶云星空和金蝶云星空之间的付款退款单数据高效、可靠地对接。此项目旨在确保大批量交易数据能够无缝转移,并保持数据一致性和完整性。

为了实现这一目标,我们使用了如下关键技术:

  1. executeBillQuery API 调用: 该接口用于从源金蝶云星空系统定时抓取最新的付款退款单数据。通过设定合理的调用频率及分页处理逻辑,确保所有待同步的数据都能及时获取。

  2. batchSave API 写入: 在获得有效的数据后,通过调用 batchSave 接口,将这些付款退款单快速写入目标金蝶云星空系统。这一过程充分利用了高吞吐量的数据写入能力,使得大量交易记录可以迅速完成同步。

  3. 自定义转换逻辑: 不同系统的表结构和字段定义可能存在差异,因此我们设计了一套自定义的数据转换规则来适应特定业务需求,保证每条记录都能准确映射到目标系统中的相应位置。

  4. 监控与告警体系: 集中的实时监控与自动告警机制贯穿整个任务执行过程中,一旦出现异常或错误,可以立即捕捉并进行重试,以最大限度减少人为干预,提高整体效率和可靠性。

  5. 日志记录与追踪: 每次 API 调用、成功传输以及失败重试等操作均被详细记录,这不仅提升了透明度,还为后续问题排查提供了宝贵的信息支持。

结合以上方法,我们能够有效地解决以下技术挑战:

  • 确保充足的数据质量监控,在发生潜在错误时及时检测并处理。
  • 精确处理分页及限流问题,防止因请求过多导致接口性能下降。
  • 实现跨平台的一致性,包括格式差异处理以及复杂业务场景下的定制化映射需求。

这个方案展示出如何利用先进的平台功能、高效 API 管理及严密监控手段,为企业构建一个稳健而灵活的数据集成解决方案。 钉钉与CRM系统接口开发配置

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取付款退款单的数据,并进行必要的数据加工。

接口配置与请求参数

首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FREFUNDBILLENTRY_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FAFTTAXTOTALAMOUNT","label":"应退金额","type":"string","describe":"应退金额","value":"FAFTTAXTOTALAMOUNT"},
    {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
    {"field":"FSRCSETTLETYPEID","label":"结算方式","type":"string","describe":"结算方式","value":"FSRCSETTLETYPEID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","describe":"单据状态","value":"FDOCUMENTSTATUS"},
    {"field":"FREALREFUNDAMOUNT_S","label":"本次退款金额","type":"string","describe":"本次退款金额","value":"FREALREFUNDAMOUNT_S"},
    {"field":"FCreaterId","label":"创建人","type":"string","describe":"创建人","value":"FCreaterId"},
    {"field":"FSRCBILLID","label":"源单内码","type":"string","describe":"源单内码","value":"FSRCBILLID"},
    {"field":...}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field":...}
  ]
}

请求示例

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

{
  "FormId": "AP_REFUNDBILL",
  "FieldKeys": [
    ...
  ],
  "FilterString": "{{LAST_SYNC_TIME|date}} and FACCOUNTID.FNumber <> '111111'",
  ...
}

其中,FormId指定了业务对象表单ID,FieldKeys定义了需要查询的字段集合,FilterString用于过滤条件。

数据清洗与转换

在获取到原始数据后,需要对数据进行清洗和转换,以确保其符合目标系统的要求。以下是一些常见的数据清洗与转换操作:

  1. 字段映射:将源系统字段映射到目标系统字段。例如,将金蝶云星空中的FBillNo映射为目标系统中的InvoiceNumber
  2. 数据类型转换:确保所有字段的数据类型符合目标系统要求。例如,将字符串类型的日期转换为日期类型。
  3. 值替换:根据业务需求,对某些字段值进行替换或计算。例如,将货币单位从人民币转换为美元。

示例代码

以下是一个示例代码片段,用于调用接口并处理返回的数据:

import requests
import json

# 配置请求头和URL
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    'FormId': 'AP_REFUNDBILL',
    'FieldKeys': ['FBillNo', 'FID', 'FAFTTAXTOTALAMOUNT', ...],
    'FilterString': "{{LAST_SYNC_TIME|date}} and FACCOUNTID.FNumber <> '111111'",
    ...
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与转换
    cleaned_data = []
    for record in data:
        cleaned_record = {
            'InvoiceNumber': record['FBillNo'],
            'EntityKey': record['FID'],
            'RefundAmount': float(record['FAFTTAXTOTALAMOUNT']),
            ...
        }
        cleaned_data.append(cleaned_record)

    # 将清洗后的数据写入目标系统或存储
else:
    print(f"Error: {response.status_code}, {response.text}")

总结

通过轻易云数据集成平台调用金蝶云星空接口,可以高效地获取付款退款单的数据,并进行必要的数据清洗和转换。这一步骤不仅确保了数据的一致性和准确性,还为后续的数据处理和分析奠定了坚实基础。 金蝶与MES系统接口开发配置

使用轻易云数据集成平台实现付款退款单的ETL转换与写入金蝶云星空

在数据集成过程中,ETL(Extract, Transform, Load)转换是关键的一步。本文将重点探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终通过金蝶云星空API接口将数据写入目标平台。

元数据配置解析

在本案例中,我们需要将付款退款单的数据写入金蝶云星空。以下是元数据配置的详细解析:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","value":"{FBillNo}"},
    {"field":"FSETTLEORGID","label":"结算组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"104"},
    {"field":"FEXCHANGETYPE","label":"汇率类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{FEXCHANGETYPE}"},
    {"field":"FDATE","label":"业务日期","type":"string","value":"{FDATE}"},
    {"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{FCURRENCYID}"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FKTKDLX02_SYS"},
    {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"{FCONTACTUNITTYPE}"},
    {"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FName"},"value":"{FCONTACTUNIT}"},
    {"field": "FBUSINESSTYPE", "label": "业务类型", "type": "string", "value": "{FBUSINESSTYPE}"},
    {"field": "FDepartment", "label": "部门", "type": "string", "value": "{FDepartment}", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}},
    {"field": "FPAYORGID", "label": "付款组织", "type": "string",   "parser":{"name":   "ConvertObjectParser",  "params":   "FNumber"}, "value":    "104"},
    {"field":   "FREMARK",  "label":    "备注",   "type": "string",   "value":    "{FREMARK}"},
    {
      ...
      // 省略部分字段
      ...
      }
  ],
  ...
}

数据字段解析与转换

  1. 单据编号(FBillNo)

    • 类型:字符串
    • 来源:源平台的FBillNo字段
    • 无需转换,直接映射。
  2. 结算组织(FSETTLEORGID)

    • 类型:字符串
    • 固定值:104
    • 使用ConvertObjectParser进行对象转换。
  3. 汇率类型(FEXCHANGETYPE)

    • 类型:字符串
    • 来源:源平台的FEXCHANGETYPE字段
    • 使用ConvertObjectParser进行对象转换。
  4. 业务日期(FDATE)

    • 类型:字符串
    • 来源:源平台的FDATE字段
    • 无需转换,直接映射。
  5. 币别(FCURRENCYID)

    • 类型:字符串
    • 来源:源平台的FCURRENCYID字段
    • 使用ConvertObjectParser进行对象转换。
  6. 单据类型(FBillTypeID)

    • 类型:字符串
    • 固定值:FKTKDLX02_SYS
    • 使用ConvertObjectParser进行对象转换。
  7. 往来单位类型(FCONTACTUNITTYPE)

    • 类型:字符串
    • 来源:源平台的FCONTACTUNITTYPE字段
    • 无需转换,直接映射。
  8. 往来单位(FCONTACTUNIT)

    • 类型:字符串
    • 来源:源平台的FCONTACTUNIT字段
    • 使用ConvertObjectParser进行名称转换。
  9. 业务类型(FBUSINESSTYPE)

    • 类型:字符串
    • 来源:源平台的FBUSINESSTYPE字段
    • 无需转换,直接映射。
  10. 部门(FDepartment)

    • 类型:字符串
    • 来源:源平台的FDepartment字段
    • 使用ConvertObjectParser进行对象转换。
  11. 付款组织(FPAYORGID)

    • 类型:字符串
    • 固定值:104
    • 使用 ConvertObjectParser进行对象转换。
  12. 备注( FREMAR K ): – 类 型 : 字 符 串 – 来 源 : 源 平 台 的 FREMAR K 字 段 – 无需 转 换 , 直 接 映 射 。

数组字段处理

对于数组字段如退款单明细( FREFUNDBILLENTRY),需要特别注意其子项的处理:

  ...
  {
     “ field ” : “ FREFUNDBILLENTRY ” , “ label ” : “ 退 款 单 明 细 ” , “ type ” : “ array ” , “ children ” : [
         {“ field ” : “ FSETTLETYPEID ” , “ label ” : “ 结 算 方 式 ” , “ type ” : “ string ” , “ parser ” : {“ name ” : “ ConvertObjectParser” ,“ params”:“ FNumber”},“ value”:“ { FSETTLETYPEID }”,“ parent”:“ FREFUNDBILLENTRY”},
         {“ field”:“ FREFUNDAMOUNTFOR” ,“ label”:“ 表体-应退金额”,“ type”:“ string”,“ value”:“ { FREFUNDAMOUNTFOR }”,“ parent”:“ FREFUNDBILLENTRY”},
         {“ field”:“ FNOTE” ,“ label”:“备注”,“ type”:“ string”,“ value”:“ { FNOTE }”,`` parent``:`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ``
          ...
          //省略部分子项配置...
          ...
        ]
      }
}

每个子项都需要根据其父项进行正确的映射和解析,如结算方式、应退金额等。确保每个子项都能正确地被目标系统识别和处理。

API调用与数据写入

在完成所有字段解析与映射后,通过调用金蝶云星空的API接口,将处理后的数据批量保存至目标系统:

     “ api”: batchSave,
     method:POST,
     idCheck:true,
     operation:{
         rowsKey:array,
         rows:1,
         method:batchArraySave}
}

确保请求方法为POST,并且正确配置了批量保存操作的方法和参数。在实际调用时,需要确保所有必填字段都已正确填充,并且基础资料验证通过,以保证数据能够顺利写入目标系统。

通过以上步骤,我们可以高效地完成从源平台到金蝶云星空的数据ETL转换与写入过程,实现不同系统间的数据无缝对接。 泛微OA与ERP系统接口开发配置

更多系统对接方案