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

  • 轻易云集成顾问-潘裕

易快报合同付款申请单对接金蝶其他应付单

在系统集成项目中,确保数据的准确和高效传输始终是一个关键挑战。本文将分享一个实际案例:如何通过轻易云数据集成平台实现易快报合同付款申请单与金蝶云星空的无缝对接。

集成方案概述

为了实现从易快报到金蝶云星空的数据传输,我们采用了以下核心技术手段:

  1. 抓取并处理易快报数据
    使用接口/api/openapi/v1.1/docs/getApplyList定时可靠地抓取合同付款申请单的数据,通过分页机制来解决接口限流问题,并确保数据不漏单。

  2. 批量写入到金蝶云星空
    数据经过预处理和格式转换后,利用批量API batchSave 快速且稳定地向金蝶云星空导入,极大提升了效率。

  3. 数据映射与异常处理
    在两者之间建立自定义的数据映射规则,同时搭配完善的错误重试机制,以应对可能出现的各种对接异常情况,实现平稳过渡。

  4. 实时监控与日志记录
    借助于平台提供的全透明可视化操作界面,对整个流程进行严密监控并详细记录每个环节中的日志信息,为后续的问题排查和优化维护提供依据。

技术细节

  • 调用易快报接口获取合同付款申请单

    GET /api/openapi/v1.1/docs/getApplyList

    我们在抓取过程中设置合理的分页参数,并处理返回结果中的分页标识,保证所有待同步的数据都能被完全读取。此外,还通过灵活配置调度任务,定时执行拉取动作以获取最新的数据变动。

  • 快速批量写入至金蝶云星空

    调用如下API:

    POST /k3cloud/api/batchSave

    在此步骤中,我们需特别注意字段对应及单位、货币等特殊字段值是否正确匹配,通过前期充分测试及验证来避免存储错误。同时,在遇到网络波动或服务暂不可用时,引入多次重试策略以提高成功率。

以上方法有效解决了异构系统间接口交互带来的复杂性,为企业业务运营发展奠定坚实基础。在下一部分中,将进一步详述具体实施细节以及如何进行性能优化。 金蝶与WMS系统接口开发配置

调用易快报接口获取并加工数据的技术案例

在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细探讨如何使用轻易云数据集成平台调用易快报的/api/openapi/v1.1/docs/getApplyList接口获取合同付款申请单,并对数据进行初步加工处理。

接口配置与请求参数

根据提供的元数据配置,我们需要构建一个GET请求来调用易快报的/api/openapi/v1.1/docs/getApplyList接口。以下是请求参数的详细配置:

  • type: 指定为"expense",表示我们要查询的是报销单。
  • start: 分页查询起始值,通常从0开始。
  • count: 每次查询返回的数据条数,最大不能超过100。
  • orderBy: 查询字段,设置为"updateTime",表示按更新时间排序。
  • startDate: 查询起始时间,格式为yyyy-MM-dd HH:mm:ss,使用占位符{{LAST_SYNC_TIME|datetime}}表示上次同步时间。
  • endDate: 查询结束时间,格式为yyyy-MM-dd HH:mm:ss,使用占位符{{CURRENT_TIME|datetime}}表示当前时间。
  • specificationId: 单据模板ID,不带小版本号,可以支持多个,用逗号分隔。这里设置为"ID01nLseKdJeUL"。
  • active: 是否已删除,设置为"true",表示未删除的单据。
  • state: 单据状态,包括"paying,PROCESSING,paid,archived"。

构建API请求

以下是构建API请求的示例代码:

import requests
import datetime

# 获取当前时间和上次同步时间
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
last_sync_time = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')

# 构建请求参数
params = {
    "type": "expense",
    "start": "0",
    "count": "100",
    "orderBy": "updateTime",
    "startDate": last_sync_time,
    "endDate": current_time,
    "specificationId": "ID01nLseKdJeUL",
    "active": "true",
    "state": "paying,PROCESSING,paid,archived"
}

# 发送GET请求
response = requests.get('https://api.yikuaibao.com/api/openapi/v1.1/docs/getApplyList', params=params)

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    # 处理返回的数据
else:
    print(f"Error: {response.status_code}")

数据清洗与转换

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

  • 去除无效字段:只保留必要的字段,如form.code、id等。
  • 格式转换:将日期格式统一转换为目标系统要求的格式。
  • 数据过滤:根据业务需求过滤掉不符合条件的数据。

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

def clean_data(raw_data):
    cleaned_data = []
    for item in raw_data:
        cleaned_item = {
            'form_code': item.get('form').get('code'),
            'id': item.get('id'),
            'update_time': item.get('updateTime')
        }
        cleaned_data.append(cleaned_item)
    return cleaned_data

# 清洗数据
cleaned_data = clean_data(data['data'])

写入目标系统

经过清洗和转换后的数据可以通过轻易云平台写入到目标系统中。这里我们假设目标系统是金蝶其他应付单,通过相应的API接口实现数据写入。

def write_to_target_system(cleaned_data):
    for item in cleaned_data:
        payload = {
            'form_code': item['form_code'],
            'id': item['id'],
            'update_time': item['update_time']
        }
        # 发送POST请求写入目标系统
        response = requests.post('https://target-system-api.com/api/write', json=payload)
        if response.status_code != 200:
            print(f"Failed to write data for id {item['id']}")

# 写入目标系统
write_to_target_system(cleaned_data)

通过上述步骤,我们完成了从易快报获取合同付款申请单、进行数据清洗与转换、并最终写入金蝶其他应付单的全过程。这一流程充分利用了轻易云平台的数据集成功能,实现了不同系统间的数据无缝对接。 如何对接金蝶云星空API接口

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。

元数据配置解析

我们将以一个具体的元数据配置为例,逐步解析每个字段的作用和配置方法。

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "FBillTypeID",
      "label": "单据类型",
      "type": "string",
      "describe": "单据类型",
      "value": "QTYFD01_SYS",
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      }
    },
    ...
  ],
  ...
}

请求字段配置

  1. FBillTypeID(单据类型)

    • 字段描述:表示单据类型。
    • :固定值QTYFD01_SYS
    • 解析器ConvertObjectParser用于将值转换为金蝶系统所需的格式。
  2. FBillNo(单据编号)

    • 字段描述:表示单据编号。
    • :动态值{code},从源数据中提取。
  3. FDATE(业务日期)

    • 字段描述:表示业务日期。
    • :动态值{{preNodeApprovedTime|datetime}},通过模板引擎从源数据中提取并格式化。
  4. FCONTACTUNITTYPE(往来单位类型)

    • 字段描述:表示往来单位类型。
    • :固定值BD_Supplier
  5. FCONTACTUNIT(往来单位)

    • 字段描述:表示往来单位编码。
    • :动态值{{u_供应商编码}},并使用ConvertObjectParser解析为金蝶系统所需的格式。
  6. FCURRENCYID(币别)

    • 字段描述:表示币种。
    • :动态值{FCURRENCYID},并使用映射和解析器进行转换。
  7. FSETTLEORGID、FPURCHASEORGID、FPAYORGID(结算组织、采购组织、付款组织)

    • 字段描述:分别表示不同的组织编码。
    • :固定值102,并使用解析器进行转换。
  8. FRemarks(备注)和F_VRKB_Remarks(费用详情)

    • 字段描述:备注信息。
    • :动态提取自源数据,如标题等信息。

明细信息配置

{
  ...
  "children": [
    {
      ...
      {
        "field": "FCOSTID",
        ...
        "value": "FYXM13_SYS",
        ...
      },
      {
        ...
        ...
        ...
      }
    ]
  ]
}
  1. FCOSTID(费用项目编码)

    • 固定编码 FYXM13_SYS
  2. FCOSTDEPARTMENTID(费用承担部门)

    • 动态查询 _mongoQuery ... findField=content.code where={"id":{"$eq":"{expenseDepartment}"}}
  3. FTOTALAMOUNTFOR(总金额)

    • 动态计算 _function case when '{FCURRENCYID}'='CNY' then '{{details._amount_standard}}' else '{{details._amount_foreign}}' end

其他请求参数

  1. FormId

    • 表单ID,如 AP_OtherPayable
  2. Operation

    • 执行操作,如 BatchSave
  3. IsAutoSubmitAndAudit

    • 是否自动提交和审核,布尔型 false
  4. IsVerifyBaseDataField

    • 是否验证基础资料有效性,布尔型 true

实际应用中的注意事项

  • 确保所有动态参数在源数据中存在且正确无误。
  • 使用解析器和映射器保证数据格式符合目标系统要求。
  • 配置中的固定参数应根据实际业务需求进行调整。

通过上述配置,我们可以实现从源平台到金蝶云星空API接口的数据无缝对接。轻易云数据集成平台提供了强大的可视化界面和灵活的元数据配置能力,使得复杂的数据转换过程变得直观且高效。 企业微信与OA系统接口开发配置

更多系统对接方案