数据转换与写入技巧:钉钉报销到金蝶云星空

  • 轻易云集成顾问-潘裕

案例分享:钉钉数据集成到金蝶云星空

在企业财务管理中,实现多个系统之间的数据无缝对接是提升业务效率的关键一步。本案例将详细介绍如何通过轻易云数据集成平台,实现钉钉报销【项目报销类】数据与金蝶付款单【晨丰】的高效对接。

首先,我们需要确保从钉钉获取的数据不漏单且能够快速、可靠地写入到金蝶云星空。为了实现这一目标,使用了以下几个关键API和技术方案:

  1. 定时抓取与接口调用

    • 钉钉提供了topapi/processinstance/get接口,用于获取报销流程实例的信息。通过配置定时任务,平台可以在预设时间点自动调用该接口,从而保证数据及时抓取。
  2. 分页和限流处理

    • 当读取大量记录时,为避免超过API调用限制,对返回结果进行分页处理,同时遵循限流机制,确保不会触发API访问上限。
  3. 批量写入到金蝶云星空

    • 将从钉钉采集到的数据批量写入至金蝶云星空,提高操作效率。这里主要用到了batchSave接口,该接口支持一次性提交多条记录,有效减少网络请求次数,加快整体操作速度。
  4. 格式差异化处理与映射

    • 由于两大平台的数据结构存在差异,在读入数据后,需要进行适当的格式转换和映射。例如,将不同字段名及其对应值平滑过渡,以符合目标系统要求。此外,还执行必要的数据校验步骤以提高成功率。
  5. 异常处理与重试机制:

    • 在整个过程中,对于可能出现的任何异常情况(如网络中断或第三方服务端问题),我们设计了一套完善的错误捕捞和重试机制。这包括实时监控每次操作日志,当检测到失败时自动尝试重新执行相应步骤,并记录所有相关信息供进一步分析。

本案例展示了如何借助轻易云平台,一步步解决从初始需求分析,到具体实施过程中的各项挑战,最终实现两个重要系统间高效、安全、稳定的数据同步。在接下来的部分,将更深入探讨上述每个环节所涉及的实际配置细节及代码示例。 系统集成平台API接口配置

调用钉钉接口topapi/processinstance/get获取并加工数据的技术案例

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

接口调用配置

首先,我们需要配置调用钉钉接口的元数据。根据提供的元数据配置,可以看到我们需要使用POST方法来调用topapi/processinstance/get接口,并且需要传递特定的参数和条件。

{
  "api": "topapi/processinstance/get",
  "method": "POST",
  "number": "number",
  "id": "id",
  "idCheck": true,
  "condition": [
    [
      {
        "field": "报销类别",
        "logic": "eq",
        "value": "项目报销类"
      }
    ]
  ]
}

数据请求与清洗

  1. 构建请求参数: 根据元数据配置,我们需要构建一个POST请求,其中包含必要的参数,如报销类别为“项目报销类”的条件。

    {
     "process_instance_id": "<process_instance_id>",
     "user_id": "<user_id>"
    }
  2. 发送请求: 使用轻易云平台提供的API调用功能,发送上述构建好的请求到钉钉接口。

  3. 处理响应: 钉钉接口返回的数据可能包含多个字段,我们需要根据业务需求进行筛选和清洗。例如,只保留与项目报销相关的信息,并去除冗余字段。

数据转换与写入

  1. 数据转换: 将从钉钉获取的数据转换为金蝶付款单所需的数据格式。这一步通常涉及字段映射和数据类型转换。例如,将“报销金额”字段从字符串转换为数值类型,以便后续处理。

  2. 写入目标系统: 最后,将处理好的数据写入金蝶系统中。轻易云平台支持多种异构系统间的数据对接,因此可以方便地将转换后的数据通过API或数据库连接写入金蝶付款单模块。

实际案例

假设我们从钉钉获取到以下原始数据:

{
  "process_instance_id": "1234567890",
  "title": "项目报销 - 张三",
  "create_time": "2023-10-01T12:00:00Z",
  "finish_time": null,
  "form_component_values": [
    {
      "name": "报销金额",
      "value": "1000"
    },
    {
      "name": "报销类别",
      "value": "项目报销类"
    },
    {
      "name": "备注",
      "value": ""
    }
  ]
}

经过清洗和转换后,得到如下格式的数据准备写入金蝶:

{
  "单据编号": "<自动生成>",
  "申请人": "<user_id>",
  "申请日期": "<create_time>",
  "金额": 1000,
  "备注信息": ""
}

在这个过程中,轻易云平台通过全透明可视化操作界面,使得每一步的数据处理都清晰可见,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。

通过以上步骤,我们成功实现了从钉钉获取项目报销类数据,并将其无缝对接到金蝶付款单中。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 金蝶与MES系统接口开发配置

将钉钉报销数据转换并写入金蝶云星空API接口的技术案例

在数据集成过程中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将钉钉报销【项目报销类】的数据转换为金蝶付款单【晨丰】的数据格式,并通过金蝶云星空API接口进行写入。

数据请求与清洗

在这一步中,我们已经从钉钉获取了报销数据。接下来,我们需要对这些数据进行清洗和预处理,以确保其符合目标系统的要求。这包括字段的映射、数据类型的转换以及必要的数据校验。

数据转换与写入

我们主要使用金蝶云星空API接口batchSave方法来实现数据的批量保存操作。以下是具体的元数据配置和对应的字段映射。

API 接口配置
{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{extend.business_id}}"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"FKDLX04_SYS"},
    {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{extend.create_time}}"},
    {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"},
    {"field":"FPAYORGID","label":"付款组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"},
    {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
    {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"","describe":"","value":"","parser":{"name":"","params":""},"defaultValue":"","required":false},
    {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""},"defaultValue":"","required":false},
    ...
  ],
  "otherRequest":[
    {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "", "value": ""},
    ...
  ]
}
字段映射与解析
  1. 单据编号 (FBillNo)

    • 来源:{{extend.business_id}}
    • 类型:字符串
    • 描述:单据编号
  2. 单据类型 (FBillTypeID)

    • 来源:固定值 FKDLX04_SYS
    • 类型:字符串
    • 描述:单据类型
    • 解析器:ConvertObjectParser,参数 FNUMBER
  3. 业务日期 (FDATE)

    • 来源:{{extend.create_time}}
    • 类型:字符串
    • 描述:业务日期
  4. 结算组织 (FSETTLEORGID)

    • 来源:动态查询 _findCollection find Number from ... where Name={{费用归属项目}}
    • 类型:字符串
    • 描述:结算组织
    • 解析器:ConvertObjectParser,参数 FNumber
  5. 付款组织 (FPAYORGID)

    • 来源:动态查询 _findCollection find Number from ... where Name={{费用归属项目}}
    • 类型:字符串
    • 描述:付款组织
    • 解析器:ConvertObjectParser,参数 FNumber
  6. 币别 (FCURRENCYID)

    • 来源:固定值 PRE001
    • 类型:字符串
    • 描述:币别
    • 解析器:ConvertObjectParser,参数 FNumber
  7. 往来单位类型 (FCONTACTUNITTYPE)

    • 来源:固定值 BD_Department
    • 类型:字符串
    • 描述:往来单位类型
  8. 往来单位 (FCONTACTUNIT)

    • 来源:{{费用归属部门_关联}}
    • 类型:字符串
    • 描述:往来单位
    • 解析器:ConvertObjectParser,参数 FNumber
  9. 收款单位类型 (FRECTUNITTYPE)

    • 来源:固定值 BD_Department
    • 类型:字符串
    • 描述:"收款单位类型"
  10. 收款单位 (FRECTUNIT)

    • 来源: {{费用归属部门_关联}}
    • 类型: 字符串 ...
子表明细配置
  1. 结算方式 (FPAYBILLENTRY.FSETTLETYPEID)
    
    {
      "field": "FPAYBILLENTRY.FSETTLETYPEID",
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...

如何开发用友BIP接口

更多系统对接方案