使用轻易云平台实现每刻数据与金蝶云的转换与写入

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

每刻股东->金蝶股东: 系统对接集成案例分享

在本案例中,我们探讨了如何有效地将每刻的数据集成到金蝶云星空,聚焦于一个具体的系统对接方案——每刻股东数据向金蝶股东数据的转移。本次项目主要面临的问题包括:确保数据不漏单,大量数据快速写入,以及定时可靠地抓取每刻接口数据。

首先,每刻提供了丰富且详细的API接口供我们调用,其中 /api/openapi/reference/data/detail/query 是获取需要处理及转移的核心数据。为了应对大量复杂的数据,一方面我们通过实时监控和日志记录确保过程透明;另一方面,为避免分页和限流带来的影响,我们设计了一套稳健的批量处理机制。这些措施共同保障了整个过程中的高效与稳定。

进入实际操作阶段,通过调度进程定时调用上述API接口,从每刻平台中抓取最新的数据。同时,在处理这些原始数据时,我们特别注意解决它们与金蝶云星空之间的数据格式差异,以保证无缝转换。在这里,创建自定义映射规则,并利用ETL(提取、转换、加载)工具,对不同字段进行合并和格式化,以适配目标系统需求。

下一步是将清洗后的大量数据批量写入到金蝶云星空,这里使用的是其官方提供的 batchSave API 接口。为进一步提高效率,我们采取多线程并发的方法来加快写入速度,同时设计异常处理机制以及错误重试策略,使得可能存在的不确定因素被最小化覆盖。

综合来看,本次方案不仅成功实现了从每刻到金蝶云星空的数据平滑过渡,而且备受期待的是其强大的扩展性,可以轻松复制应用于其他类似场景。 如何对接用友BIP接口

调用每刻接口获取并加工数据的技术案例

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用每刻接口/api/openapi/reference/data/detail/query,并对获取的数据进行加工处理。

接口调用配置

首先,我们需要配置元数据以正确调用每刻的API接口。以下是具体的元数据配置:

{
  "api": "/api/openapi/reference/data/detail/query",
  "method": "POST",
  "number": "name",
  "id": "bizCode",
  "idCheck": true,
  "request": [
    {"field": "referenceDataBizCode", "label": "档案编码", "type": "string", "value": "gd"},
    {"field": "keyword", "label": "根据选项名称和选项编码模糊查询", "type": "string"},
    {"field": "offset", "label": "分页起始", "type": "string", "describe": "默认值0"},
    {"field": "pageSize", "label": "分页条数", "type": "string", "describe": "默认值50,最大值是100", "value":"50"},
    {"field": "updatedStartAt", 
        "label":"最近修改时间,时间戳","type":"string","describe":"查询在此时间及之后修改的数据","value":"{LAST_SYNC_TIME}000"},
    {"field":"updatedEndAt","label":"最近修改时间,时间戳","type":"string","describe":"查询在此时间及之前修改的数据","value":"{CURRENT_TIME}000"}
  ]
}

请求参数详解

  • referenceDataBizCode: 固定值为gd,表示档案编码。
  • keyword: 用于模糊查询选项名称和选项编码。
  • offset: 分页起始位置,默认为0。
  • pageSize: 每页返回的数据条数,默认为50,最大值为100。
  • updatedStartAt: 查询在此时间及之后修改的数据,使用时间戳格式。
  • updatedEndAt: 查询在此时间及之前修改的数据,同样使用时间戳格式。

这些参数确保了我们能够精准地获取所需数据,并且支持分页和按时间段查询。

数据请求与清洗

通过上述配置,我们可以向每刻系统发送POST请求以获取股东信息。以下是一个示例请求体:

{
  "referenceDataBizCode": "gd",
  "keyword": "",
  "offset": 0,
  "pageSize": 50,
  "updatedStartAt": "{LAST_SYNC_TIME}000",
  "updatedEndAt": "{CURRENT_TIME}000"
}

在接收到响应后,我们需要对数据进行清洗。清洗过程包括但不限于以下步骤:

  1. 字段映射:将每刻系统返回的字段映射到目标系统所需的字段。例如,将bizCode映射为目标系统中的id
  2. 数据过滤:根据业务需求过滤掉不必要的数据。例如,只保留最近更新的记录。
  3. 格式转换:将日期、数字等字段转换为目标系统所需的格式。

数据转换与写入

经过清洗后的数据需要进一步转换,以符合目标系统(如金蝶股东)的要求。转换过程可能涉及复杂的逻辑处理,例如:

  • 合并多个字段
  • 根据特定规则生成新的字段
  • 数据类型转换

最终,将处理好的数据写入目标系统。这一步通常通过调用目标系统的API接口实现。在轻易云平台上,可以配置相应的写入任务,以实现自动化的数据同步。

实时监控与错误处理

轻易云平台提供了实时监控功能,可以监控整个数据集成过程中的各个环节。一旦出现错误,例如API调用失败或数据格式不匹配,可以及时捕获并处理。这种透明化和可视化的管理极大提升了业务效率和可靠性。

通过上述步骤,我们实现了从每刻系统到金蝶股东系统的数据无缝对接。这不仅提高了数据集成效率,还确保了数据的一致性和准确性。 数据集成平台可视化配置API接口

使用轻易云数据集成平台将每刻股东数据转换并写入金蝶云星空API接口

在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL转换,并最终写入目标平台。在本案例中,我们将详细探讨如何使用轻易云数据集成平台,将每刻股东的数据转换为金蝶云星空API接口所能够接收的格式,并成功写入目标平台。

元数据配置解析

首先,我们需要理解元数据配置,以便正确地进行ETL转换。以下是元数据配置的详细内容:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FNumber","label":"编码","type":"string","value":"{bizCode}"},
    {"field":"FDataValue","label":"名称","type":"string","value":"{name}"},
    {"field":"FId","label":"类别","type":"string","value":"GD","parser":{"name":"ConvertObjectParser","params":"FNumber"}}
  ],
  "otherRequest": [
    {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"},
    {"field":"Operation","label":"执行的操作","type":"string","value":"BatchSave"},
    {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
    {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}
  ]
}

数据请求与清洗

在这个阶段,我们从每刻股东系统请求到原始数据。假设我们获取到的数据如下:

{
  "bizCode": "SH12345",
  "name": "张三"
}

数据转换与写入

接下来,我们需要将这些原始数据转换为金蝶云星空API所能接受的格式。根据元数据配置中的request部分,我们可以看到需要映射的字段如下:

  • FNumber 对应 {bizCode}
  • FDataValue 对应 {name}
  • FId 固定值 "GD"

我们可以通过轻易云的数据转换功能来实现这一过程。具体步骤如下:

  1. 字段映射

    • 将原始数据中的 bizCode 映射到 FNumber
    • 将原始数据中的 name 映射到 FDataValue
    • 固定设置 FId"GD"
  2. 构建请求体: 根据元数据配置中的 otherRequest 部分,我们需要构建一个包含业务对象表单ID、操作类型等信息的请求体。

最终构建出的请求体应如下所示:

{
  "FormId": "BOS_ASSISTANTDATA_DETAIL",
  "Operation": "BatchSave",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "array": [
    {
      "FNumber": "SH12345",
      "FDataValue": "张三",
      "FId": {
        "ConvertObjectParser": {
          "params": ["SH12345"]
        }
      }
    }
  ]
}

调用API接口

最后一步是通过HTTP POST方法调用金蝶云星空的API接口,将构建好的请求体发送过去。代码示例如下:

import requests
import json

url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
    'FormId': 'BOS_ASSISTANTDATA_DETAIL',
    'Operation': 'BatchSave',
    'IsAutoSubmitAndAudit': True,
    'IsVerifyBaseDataField': False,
    'array': [
        {
            'FNumber': 'SH12345',
            'FDataValue': '张三',
            'FId': {
                'ConvertObjectParser': {
                    'params': ['SH12345']
                }
            }
        }
    ]
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    print("Data successfully written to Kingdee Cloud")
else:
    print("Failed to write data:", response.text)

通过上述步骤,我们成功地将每刻股东的数据转换为金蝶云星空API接口能够接受的格式,并完成了数据写入。这一过程充分利用了轻易云提供的数据处理和集成功能,实现了不同系统间的数据无缝对接。 用友与CRM系统接口开发配置

更多系统对接方案