从钉钉到金蝶云:ETL转换与批量数据写入解决方案

  • 轻易云集成顾问-蔡威

钉钉数据集成到金蝶云星空的解决方案分享

在企业财务管理场景中,如何高效地对接和处理不同系统之间的数据,是一个亟待解决的问题。本文将分享一个具体的技术案例:通过轻易云数据集成平台,将钉钉中的备用金【核销】记录快速、准确地集成到金蝶云星空的报销单中。

数据抓取与接口调用

首先,我们需要从钉钉获取备用金【核销】相关的数据。为此,使用了钉钉API topapi/processinstance/get 接口来定时可靠地抓取最新的数据。这一过程不仅确保了数据不漏单,还有效应对了接口分页和限流问题。

# 示例代码:调用钉钉接口获取流程实例详情
def fetch_dingtalk_data(process_instance_id):
    url = "https://oapi.dingtalk.com/topapi/processinstance/get"
    params = {
        "access_token": ACCESS_TOKEN,
        "process_instance_id": process_instance_id
    }
    response = requests.post(url, data=params)

    if response.status_code == 200:
        return response.json()
    else:
        raise Exception("Error fetching data from DingTalk API")

data = fetch_dingtalk_data('<Process_Instance_ID>')

数据格式转换与映射

由于来自于不同系统的数据结构可能存在差异,因此需要进行数据格式转换。在这一层面上,通过自定义脚本或使用内置工具实现精确的字段映射,将原始数据转化为适合写入金蝶云星空报销单所需的格式。同时,对于数据信息中的异常情况,也设计了一套错误重试机制,以保证整个流程的顺畅运行。

# 示例代码:简单示范如何映射字段并处理异常
def map_fields(dingtalk_data):
    mapped_data = {
        "bill_no": dingtalk_data["result"]["business_id"],
        # 其他必要字段映射省略...
    }

    try:
        save_to_kingdee(mapped_data)
    except Exception as e:
        log_error(e)

def save_to_kingdee(data):
   url = "https://api.kingdee.com/batchSave"
   headers = {'Content-Type': 'application/json'}
   response = requests.post(url, json=data, headers=headers)

   if response.status_code != 200:
       raise Exception("Failed to save data to Kingdee")

大量数据快速写入与实时监控

为了应对大量备份资料,需要频繁且高效地向金蝶云星空写入数据。利用其 batchSave 接口,可以批量插入多条记录,大大提升了 金蝶与WMS系统接口开发配置

调用钉钉接口topapi/processinstance/get获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用钉钉接口topapi/processinstance/get来获取并加工数据,以实现与金蝶报销单的无缝对接。

接口调用配置

首先,我们需要配置元数据以便正确调用钉钉接口。以下是我们使用的元数据配置:

{
  "api": "topapi/processinstance/get",
  "effect": "QUERY",
  "method": "POST",
  "number": "name",
  "id": "id",
  "idCheck": true,
  "autoFillResponse": true
}

该配置定义了以下几个关键参数:

  • api: 指定了要调用的API路径,即topapi/processinstance/get
  • effect: 设置为QUERY,表示这是一个查询操作。
  • method: 使用POST方法进行请求。
  • number: 对应于返回数据中的某个字段,这里设置为name
  • id: 对应于返回数据中的唯一标识字段,这里设置为id
  • idCheck: 设置为true,表示需要对ID进行校验。
  • autoFillResponse: 设置为true,表示自动填充响应结果。

数据请求与清洗

在实际操作中,我们首先需要发送一个POST请求到钉钉接口以获取所需的数据。以下是一个示例请求体:

{
  "process_instance_id": "<your_process_instance_id>"
}

发送请求后,我们会收到如下格式的响应:

{
  "errcode": 0,
  "errmsg": "ok",
  "process_instance": {
    "title": "<title>",
    "create_time": "<create_time>",
    "finish_time": "<finish_time>",
    "originator_userid": "<originator_userid>",
    // 更多字段...
  }
}

在这里,我们重点关注的是process_instance对象中的各个字段。这些字段将被进一步清洗和转换,以便后续写入金蝶系统。

数据转换与写入

在完成数据清洗后,我们需要将这些数据转换成符合金蝶报销单格式的数据结构。假设金蝶报销单需要以下几个字段:标题、创建时间、完成时间、发起人ID。

我们可以通过轻易云平台提供的数据转换工具,将上述响应中的字段映射到目标格式。例如:

{
  "title": "<title>",
  "createTime": "<create_time>",
  "finishTime": "<finish_time>",
  "originatorUserId": "<originator_userid>"
}

通过这种方式,我们确保了从钉钉获取的数据能够无缝地转换并写入到金蝶系统中。

自动化处理

为了提高效率和准确性,轻易云平台支持自动化处理整个流程。通过设置元数据中的autoFillResponse: true,我们可以自动填充响应结果,并根据预定义的规则进行数据清洗和转换。这极大地减少了手动干预的需求,提高了整体流程的效率和可靠性。

实时监控与调试

在整个过程中,实时监控和调试是确保数据集成顺利进行的重要手段。轻易云平台提供了全透明可视化的操作界面,使得每个环节都清晰可见。用户可以实时监控数据流动和处理状态,并在必要时进行调试和调整。

通过以上步骤,我们成功地实现了从钉钉接口获取并加工数据,并将其无缝对接到金蝶报销单系统。这不仅提高了业务流程的透明度和效率,也确保了数据的一致性和准确性。 打通用友BIP数据接口

数据集成与ETL转换:从钉钉到金蝶云星空

在数据集成过程中,将来自钉钉的备用金核销数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台,是一个复杂且关键的步骤。本文将详细探讨如何使用轻易云数据集成平台进行这一过程中的ETL(提取、转换、加载)操作。

API接口配置与请求方法

首先,我们需要配置金蝶云星空的API接口。根据元数据配置,API接口为batchSave,请求方法为POST。这意味着我们将以批量保存的方式将数据提交到金蝶云星空。

{
  "api": "batchSave",
  "method": "POST"
}

数据字段映射与转换

在数据转换过程中,需要将钉钉中的字段映射到金蝶云星空对应的字段,并进行必要的格式转换。以下是一些关键字段及其配置:

  1. 单据编号 (FBillNo)

    • 来源:{{extend.business_id}}
    • 类型:字符串
  2. 申请日期 (FDate)

    • 来源:{{extend.create_time}}
    • 类型:字符串
  3. 单据类型 (FBillTypeID)

    • 固定值:FYBXD001_SYS
    • 转换器:ConvertObjectParser
    • 参数:FNumber
  4. 费用承担组织 (FExpenseOrgId)

    • 来源:{{企业主体}}
    • 转换器:ConvertObjectParser
    • 参数:FNumber
  5. 费用承担部门 (FExpenseDeptID)

    • 动态查询:
      _findCollection find FNumber from da721f4d-6c26-3cce-913a-95995e34543f where FGroup={{extend.originator_dept_name}} and FFullName={{企业主体}}
    • 转换器:ConvertObjectParser
    • 参数:FNumber
  6. 申请组织 (FOrgID)

    • 来源:{{企业主体}}
    • 转换器:ConvertObjectParser
    • 参数:FNumber
  7. 申请人 (FProposerID)

    • 动态查询:
      _findCollection find FNumber from 16c4e534-8d99-371a-bd8f-92c5149c9b1f where FName={{收款人}} and FUseOrgId_FName={{企业主体}}
    • 转换器:ConvertObjectParser
    • 参数:FSTAFFNUMBER
  8. 往来单位类型 (FCONTACTUNITTYPE)

    • 固定值:BD_Empinfo
  9. 申请部门 (FRequestDeptID)

    • 动态查询:
      _findCollection find FNumber from da721f4d-6c26-3cce-913a-95995e34543f where FGroup={{extend.originator_dept_name}} and FFullName={{企业主体}}
    • 转换器:ConvertObjectParser
    • 参数:FNumber
  10. 联系电话 (FContactPhoneNo)

    • 动态查询:
      _findCollection find FMobile from 16c4e534-8d99-371a-bd8f-92c5149c9b1f where FName={{收款人}}
  11. 报销明细 (FEntity): 报销明细是一个数组,需要处理多个子字段,包括费用项目、发票类型、费用金额等。以下是其中一个子字段的配置示例:

    {
      "field": "FExpID",
      "label": "费用项目",
      "type": "string",
      "value": "_function CASE '{{项目}}' WHEN ' ' THEN '{{备用金报销明细.费用类型}}' ELSE '{{项目}}' END",
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      },
      "mapping": {
        "target": "65795ce3f82ea526c578fd3b",
        "direction": "positive"
      }
    }

其他请求参数

除了上述字段外,还需要配置一些其他请求参数,以确保数据能够正确提交并审核:

{
  "FormId": {
    "label": "业务对象表单Id",
    "type": "string",
    "value": "ER_ExpReimbursement"
  },
  "Operation": {
    "label": "执行的操作",
    "type": "string",
    "value": "BatchSave"
  },
  "IsAutoSubmitAndAudit": {
    "label": "提交并审核",
    "type": "bool",
    "value": true
  },
  ...
}

实际应用案例

在实际应用中,我们需要按照上述配置,将钉钉中的备用金核销数据通过轻易云平台进行ETL处理,并最终写入到金蝶云星空中。例如,当我们接收到一条来自钉钉的数据记录时,首先提取相关字段,然后根据元数据配置进行格式转换和映射,最后通过API接口提交到金蝶云星空。

通过这种方式,我们能够实现不同系统间的数据无缝对接,提高业务流程的自动化程度和效率。在整个过程中,轻易云平台提供了全透明可视化的操作界面,使得每个环节都清晰可见,并实时监控数据流动和处理状态,从而确保数据集成过程顺利进行。 钉钉与CRM系统接口开发配置

更多系统对接方案