轻易云与金蝶云星空的数据集成技术详解

  • 轻易云集成顾问-冯潇

金蝶云星空数据集成案例分享:销售出库单-(分销&京东&唯品&虚拟除外)手表汇总_copy

在企业日常业务处理过程中,确保数据流动的高效性和准确性至关重要。本文将介绍利用轻易云数据集成平台,实现金蝶云星空与金蝶云星空之间的数据无缝对接。本次案例侧重于销售出库单—(分销&京东&唯品会&虚拟除外)手表汇总_copy方案的实际运行情况。

为了实现这一目标,我们精细化设计了相应的数据集成流程。在此过程中,通过executeBillQuery API从源系统中定时抓取所需数据,并利用batchSave API批量写入目标系统。这不仅涵盖了大规模数据快速交换,还保证了每条记录都能被可靠地处理,从而避免可能出现的数据遗漏问题。

一个显著的特性是我们采用了自定义的数据转换逻辑,以满足特定业务需求和适应不同系统间的数据结构差异。通过可视化的数据流设计工具,对整个流程进行直观管理,有效降低配置复杂度。

实时监控和告警机制起到了关键作用,帮助我们及时发现并解决任何潜在的问题。此外,在面对分页与限流挑战时,我们引入了一套完善的异常处理与错误重试机制,进一步提升了任务执行的稳定性及可靠性。最后,每一次操作都会被详细记录到日志中,使得整个过程透明且可追溯,为后续排错优化提供依据。

本篇将逐步揭示这一技术方案具体实施步骤及实践经验,希望为相关领域从业者提供参考。

如何对接金蝶云星空API接口

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery来获取销售出库单的数据,并进行初步加工。

接口配置与请求参数

调用金蝶云星空的executeBillQuery接口需要配置一系列请求参数,这些参数决定了我们要获取的数据范围和格式。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FENTRYID",
  "pagination": {"pageSize": 500},
  "idCheck": true,
  "formatResponse": [{"old":"FApproveDate","new":"FApproveDate_new","format":"date"}],
  "request": [
    {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
    {"field":"FApproveDate","label":"审核时间","type":"string","describe":"日期","value":"FApproveDate"},
    // ...(省略其他字段)
  ],
  "otherRequest": [
    {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
    {"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"},
    {"field":"FilterString","label":"过滤条件","type":"string","describe":"","value":"","mapping":"","mappingDirection":""},
    {"field":"FieldKeys","label":"需查询的字段key集合","type":"array"}
  ]
}

请求示例

为了调用该接口,我们需要构建一个HTTP POST请求,包含上述配置中的字段。以下是一个示例请求体:

{
  "FormId": "SAL_OUTSTOCK",
  "FieldKeys": ["FBillNo", "FDate", "FApproveDate", ...], // 包含所有需要查询的字段
  "FilterString": "FBillNo='XSCKD8758516'",
  "Limit": 500,
  "StartRow": 0
}

数据清洗与转换

在获取到原始数据后,我们需要对其进行清洗和转换,以便后续处理。以下是几个关键步骤:

  1. 日期格式转换:将审核时间FApproveDate转换为新的字段FApproveDate_new,并格式化为标准日期格式。
  2. 字段重命名:根据业务需求,对部分字段进行重命名,以便更好地理解和使用。例如,将FBillTypeID_FNumber重命名为单据类型
  3. 分页处理:由于数据量可能较大,需要进行分页处理,每次请求500条记录,并根据返回结果继续请求下一页。

实现代码示例

以下是一个Python示例代码,展示如何调用该接口并处理返回的数据:

import requests
import json

# 配置请求URL和头信息
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    'FormId': 'SAL_OUTSTOCK',
    'FieldKeys': ['FBillNo', 'FDate', 'FApproveDate', ...],
    'FilterString': "FBillNo='XSCKD8758516'",
    'Limit': 500,
    'StartRow': 0
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与转换
    for record in data:
        record['FApproveDate_new'] = format_date(record['FApproveDate'])
        # 重命名其他字段...

else:
    print(f"Error: {response.status_code}")

def format_date(date_str):
    # 日期格式转换函数实现...

总结

通过上述步骤,我们成功调用了金蝶云星空的executeBillQuery接口,获取了销售出库单的数据,并进行了初步的清洗和转换。这一步骤为后续的数据处理和写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展数据处理逻辑。 钉钉与CRM系统接口开发配置

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

在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。

1. 数据提取与转换

首先,我们从源系统中提取销售出库单的数据。提取的数据包括单据类型、日期、发货组织、销售组织、客户信息等。使用轻易云提供的元数据配置,可以将这些数据映射到金蝶云星空API所需的字段格式。

{
  "field": "FBillTypeID",
  "label": "单据类型",
  "type": "string",
  "describe": "单据类型",
  "parser": {
    "name": "ConvertObjectParser",
    "params": "FNumber"
  },
  "value": "XSCKD01_SYS"
}

以上配置将源系统中的单据类型字段转换为金蝶云星空所需的FBillTypeID字段,并使用ConvertObjectParser进行解析。

2. 数据清洗与格式化

在数据清洗阶段,我们需要确保所有字段都符合目标系统的要求。例如,将日期字段格式化为标准日期格式:

{
  "field": "FDate",
  "label": "日期",
  "type": "string",
  "describe": "日期",
  "value": "{FDate}"
}

此外,对于一些复杂的映射关系,例如客户信息,需要使用映射配置来确保数据的一致性:

{
  "field": "FCustomerID",
  "label": "客户",
  "type": "string",
  "describe": "基础资料",
  "parser": {
    "name": "ConvertObjectParser",
    "params": "FNumber"
  },
  "value": "{FCustomerID_FNumber}",
  "mapping": {
    "target": "63556c380bc98d4c8e11c30d",
    "direction": "positive"
  }
}

3. 数据加载与写入

完成数据清洗和格式化后,我们将数据加载到目标系统金蝶云星空。通过调用其API接口实现数据写入。以下是具体的API请求配置:

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

其中,api指定了调用的API名称,method指定了HTTP请求方法为POST。

请求体包含了头部信息和明细信息:

"header":[
   ...
],
"body":[
   ...
]

例如,头部信息中的单据编号和日期:

{
   ...
   {
     “label”: “单据编号”,
     “field”: “FBillNo”,
     “type”: “string”,
     “value”: “{FBillNo}”
   },
   {
     “label”: “日期”,
     “field”: “FDate”,
     “type”: “string”,
     “value”: “{FDate}”
   }
]

明细信息中的物料编码和实发数量:

{
   ...
   {
     “field”: “FMaterialID”,
     “label”: “物料编码”,
     “type”: “string”,
     “describe”:“基础资料”,
     “parser”: {
       ”name“: ”ConvertObjectParser“,
       ”params“: ”FNumber“
      },
      ”value“: ”{{details.FMaterialID_FNumber}}“,
      ”parent“: ”FEntity“
    },
    {
      ”field“: ”FRealQty“,
      ”label“: ”实发数量“,
      ”type“: ”string“,
      ”describe“: ”数量“,
      ”value“: ”{{details.FRealQty}}“
      parent:“ FEntity”
    }
]

API调用示例

最终,通过构建完整的请求体并调用金蝶云星空API,实现数据写入:

{
   ...
   {
      field:"FormId", 
      label:"业务对象表单Id", 
      type:"string", 
      describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder", 
      value:"SAL_OUTSTOCK"
   },
   {
       field:"Operation", 
       label:"执行的操作", 
       type:"string", 
       value:"Save"
    },
    ...
}

通过上述步骤,我们成功地将源平台的数据经过ETL转换后,写入到目标平台金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。 如何对接企业微信API接口

更多系统对接方案