使用轻易云平台进行ETL转换并写入金蝶云星空

  • 轻易云集成顾问-李国敏

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

在现代企业的数据处理和业务流程中,数据集成的高效性和可靠性至关重要。本案例通过一个实际运行的方案——“钉钉报销【现货采购】->金蝶付款单【晨丰】”,展示了如何利用轻易云数据集成平台,将钉钉中的报销数据无缝对接到金蝶云星空系统。

系统架构与技术亮点

为确保整个集成过程中的高效性,我们主要采用以下技术手段:

  1. API接口调用:使用钉钉提供的topapi/processinstance/get接口抓取报销数据,并使用金蝶云星空提供的batchSave API实现批量写入。
  2. 分页与限流处理:由于钉钉接口具有分页和频率限制,我们设计了一套智能化的数据抓取策略,有效规避了潜在的问题。
  3. 实时监控与日志记录:为了保障每一条报销信息都能成功传递并被正确处理,系统内置了全程监控功能及详细日志记录机制,以便快速定位和解决可能出现的问题。
  4. 定制化的数据映射:针对二者之间不同的数据结构,通过定制化的数据转换规则,实现准确的数据映射,确保双方系统数据信息的一致性。

数据获取与写入流程

首先,通过调用topapi/processinstance/get API从钓丁中获取所需的报销数据。此过程中,为应对大批量的数据请求,系统会根据返回结果进行自动分页处理,并且设置适当的重试间隔以避免触发限流机制。一旦完成所有页面数据采集,即进入下一步——将这些收集好的数据显示到中央缓存库里进行预处理。

随后,我们采用轻易云平台预设好的任务计划模块,在指定时间点上启动批次操作,将预先整理过后的报销信息通过 batchSave API 批量写入至金蝶云星空。在整个写入过程中,系统会实时监控提交状态并记录相关日志,以便后续分析及调优之用。此外,还配置了复杂度较低但有效实用的方法,用于识别异常情况并执行错误重试机制,从而保证最终目标达成。

通过这样严谨且优化过后的流程,一个看似简单却涉及多方协作、兼顾时效性的任务得以圆满完成。下面我们将进一步详细剖析这一过程中的各个关键环节,以及遇到问题时对应解决办法等具体内容。 轻易云数据集成平台金蝶集成接口配置

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

在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过钉钉接口topapi/processinstance/get获取报销数据,并对其进行初步加工,以便后续的数据转换与写入。

1. API调用配置

首先,我们需要配置API调用的元数据。根据提供的元数据配置,我们使用POST方法调用钉钉的topapi/processinstance/get接口。以下是具体的元数据配置:

{
  "api": "topapi/processinstance/get",
  "method": "POST",
  "number": "number",
  "id": "id",
  "idCheck": true,
  "condition": [
    [
      {
        "field": "报销类别",
        "logic": "eq",
        "value": "现货采购"
      }
    ]
  ],
  "formatResponse": [
    {
      "old": "付款方式",
      "new": "付款方式_new",
      "format": "string"
    }
  ]
}

2. 数据请求与清洗

在调用API时,我们需要确保请求参数和条件正确无误。这里我们设置了一个条件,即“报销类别”必须等于“现货采购”。这一步骤确保我们只获取到相关的报销数据,避免了不必要的数据处理。

import requests

url = 'https://oapi.dingtalk.com/topapi/processinstance/get'
headers = {'Content-Type': 'application/json'}
payload = {
    'process_instance_id': 'your_process_instance_id'
}

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

# 检查返回的数据是否符合条件
if data['报销类别'] == '现货采购':
    # 数据符合条件,继续处理
    pass
else:
    # 数据不符合条件,忽略
    pass

3. 数据格式转换

在获取到原始数据后,需要对部分字段进行格式转换和重命名。根据元数据配置,我们需要将“付款方式”字段重命名为“付款方式_new”,并确保其格式为字符串。

def format_response(data):
    if '付款方式' in data:
        data['付款方式_new'] = str(data.pop('付款方式'))
    return data

formatted_data = format_response(data)

4. 数据校验与处理

为了保证数据的一致性和准确性,我们还需要进行一些基本的数据校验。例如,检查ID是否存在以及是否符合预期格式。

def validate_data(data):
    if 'id' not in data or not isinstance(data['id'], int):
        raise ValueError("Invalid ID")

    # 可以添加更多的校验逻辑

validate_data(formatted_data)

5. 集成到轻易云平台

最后,将处理好的数据集成到轻易云平台中,以便后续的数据转换与写入。这一步骤通常涉及将数据传递给下一个处理模块,并监控其状态。

# 假设有一个函数可以将数据传递给下一个模块
def integrate_to_platform(data):
    # 集成逻辑,例如存储到数据库或发送到另一个API
    pass

integrate_to_platform(formatted_data)

通过以上步骤,我们成功地从钉钉接口获取了所需的报销数据,并进行了初步的清洗和格式转换。这为后续的数据转换与写入奠定了坚实的基础。在实际应用中,可以根据具体需求进一步优化和扩展这些步骤,以实现更复杂的数据集成任务。 金蝶与MES系统接口开发配置

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

在使用轻易云数据集成平台将钉钉报销【现货采购】数据转换并写入金蝶云星空API接口时,我们需要关注元数据配置中的各个字段及其对应的处理方式。以下是具体的技术实现步骤和细节。

1. API接口配置

首先,我们需要配置目标平台的API接口。根据元数据配置,金蝶云星空API接口采用batchSave方法,通过POST请求方式进行数据写入。

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

2. 请求参数配置

在请求参数中,我们需要将源平台的数据字段映射到目标平台的字段,并进行必要的转换。以下是主要字段的处理方式:

  • 单据编号 (FBillNo): 使用钉钉报销中的业务ID。

    {
      "field": "FBillNo",
      "label": "单据编号",
      "type": "string",
      "describe": "单据编号",
      "value": "{{extend.business_id}}"
    }
  • 单据类型 (FBillTypeID): 固定值为FKDLX01_SYS,通过ConvertObjectParser进行解析。

    {
      "field": "FBillTypeID",
      "label": "单据类型",
      "type": "string",
      "describe": "单据类型",
      ...
      "value": "FKDLX01_SYS"
    }
  • 业务日期 (FDATE): 使用钉钉报销中的完成时间。

    {
      "field": "FDATE",
      ...
      "value": "{{extend.finish_time}}"
    }
  • 结算组织 (FSETTLEORGID) 和付款组织 (FPAYORGID): 根据费用归属项目查找对应的组织编号。

    {
      ...
      "value":"_findCollection find Number from ... where Name={{费用归属项目}}"
    }
  • 币别 (FCURRENCYID) 和结算币别 (FSETTLECUR): 固定值为PRE001,通过ConvertObjectParser解析。

    {
      ...
      "value":"PRE001"
    }
  • 往来单位类型 (FCONTACTUNITTYPE) 和收款单位类型 (FRECTUNITTYPE): 固定值为BD_Supplier

  • 往来单位 (FCONTACTUNIT) 和收款单位 (FRECTUNIT): 根据企业客户信息查找对应编号。

3. 子表明细处理

对于付款单明细(FPAYBILLENTRY),需要处理多个子字段:

  • 结算方式 (FSETTLETYPEID): 根据付款方式查找对应编号。

    {
      ...
      "_findCollection find Number from ... where Name={{付款方式_new}}"
    }
  • 付款用途 (FPURPOSEID): 固定值为SFKYT08_SYS,通过解析器转换。

  • 应付金额 (FPAYTOTALAMOUNTFOR): 使用项目费用明细中的合计金额。

  • 物料编码 (FMATERIALID)、含税单价 (FPRICE)、数量 (FQTY)、费用项目 (FCOSTID)、备注 (FCOMMENT):分别从项目费用明细和报销明细中提取并转换。

{
    ...
    {"field":"FPAYTOTALAMOUNTFOR","label":"应付金额","type":"string","value":"{{项目费用明细.合计}}"},
    {"field":"FMATERIALID","label":"物料编码","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FPRICE","label":"含税单价","type":"string"},
    {"field":"FQTY","label":"数量","type":"string"},
    {"field":"FCOSTID","label":"费用项目","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from ... where FName={{项目报销类型}}"},
    {"field":"FCOMMENT","label":"备注","type":"string","value":"{{报销明细.费用明细}}"}
}

4. 提交和审核配置

最后,还需要配置提交和审核选项:

{
    ...
    {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"false"},
    {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)"}
}

通过以上详细步骤,我们能够将钉钉报销【现货采购】的数据成功转换并写入到金蝶云星空平台,实现系统间的数据无缝对接。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 如何开发企业微信API接口

更多系统对接方案