钉钉与金蝶云星空无缝数据对接技术经验分享

  • 轻易云集成顾问-何语琴

金蝶云星空数据集成到钉钉的技术案例分享

在实际业务场景中,实现系统间的数据无缝对接是提高工作效能的重要手段。本文将重点介绍如何通过轻易云数据集成平台,将金蝶云星空中的销售退货数据高效、安全地集成至钉钉系统。这一过程中,我们运用了executeBillQuery API从金蝶云星空获取数据,并使用topapi/processinstance/create API将数据批量写入到钉钉,确保信息不漏单且实时同步。

首先,针对这一具体项目「销售退货金蝶=>钉钉--测试ok,需要加一个字段的配置,等待客户」,我们需要解决以下几个关键技术点:

  1. 高吞吐量的数据写入能力: 为了适应销售退货的大量记录,我们设计了高效的数据流方案,通过分批处理和并行执行,使得大量数据能够快速、稳定地写入到钉锤。

  2. 分页和限流处理: 金蝶云星空接口executeBillQuery在读取大批量数据时存在分页限制,为此我们实现了一套自动化的分页抓取机制,确保所有销售退货记录被全部捕获,不丢失、不重复。

  3. 自定义数据转换逻辑: 在不同系统之间进行对接时,经常会遇到数据格式差异问题。我们利用轻易云的平台提供的自定义转换功能,以满足特定业务需求,对原始API返回的数据结构进行了必要调整与优化。

  4. 异常处理与错误重试机制: 针对于API调用失败或网络波动导致的问题,我们实现了完善的异常监控及重试机制。当任务出现错误时,能够第一时间检测并重新尝试提交以保证整体流程不中断。

  5. 集中监控与日志记录: 为提升稳定性和可追溯性,我们启用了集中化的监控系统以及详细日志记录功能。每一次接口调用,每一个步骤都能被实时跟踪,有助于及时发现问题并回溯分析,提高可靠性。

下一步内容即为上述各步骤实施过程中的具体操作细节,包括API参数设置、调优方法等实践经验分享。同时,也会讨论如何进一步优化当前方案,应对未来可能遇见的新挑战。 电商OMS与ERP系统接口开发配置

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

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

接口配置与调用

首先,我们需要配置和调用金蝶云星空的executeBillQuery接口。该接口主要用于查询业务单据,支持POST请求。以下是元数据配置的详细说明:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FENTRYID",
  "name": "FBillNo",
  "request": [
    {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","value":"FSaleOrgId.FName"},
    {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"库存组织","value":"FStockOrgId"},
    {"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"结算组织","value":"FSettleOrgId"},
    {"field":"FApproveDate","label":"日期","type":"string","describe":"日期","value":"FApproveDate"},
    {"field":"FMaterialId","label":"物料","type":"string","describe":"物料","value":"FMaterialId.FName"},
    {"field":"FOwnerIdHead","label":"货主","type":"string","describe":"货主","value":"FOwnerIdHead.FNumber"},
    {"field":"FRealQty","label":"实发数量","type":"string","describe":"实发数量","value":"FRealQty"},
    {"field": "FStockId_FNumber", "label": "仓库id", "type": "string", "describe": "仓库id", "value": "FStockId.FNumber"},
    {"field": "FTaxPrice", "label": "含税单价", "type": "string", "describe": "含税单价", "value": "FTaxPrice"},
    {"field": "FRetcustId", "label": "退货客户", "type": "string", "describe": "投诉对应客户", "value": "FRetcustId.FName"},
    {"field": "FSrcBillNo", "label": "源单编号", "type": "string", "describe": "", 
"value" : "" },
{" field ":" FSalesManId_FName "," label ":" 销售员名称 "," type ":" string "," describe ":" 销售员 "," value ":" FSalesManId.FName "},
{" field ":" FHeadNote "," label ":" 单据头备注 "," type ":" string "," describe ":" 单据头备注 "," value ":" FHeadNote "},
{" field ":" FEntity_FENTRYID "," label ":" FEntity_FENTRYID "," type ":" string "," describe ":" FEntity_FENTRYID "," value ":" FEntity_FENTRYID "},
{" field ":"

请求参数详解

在请求参数中,我们需要特别注意以下几个字段:

  • FormId: 必须填写金蝶的表单ID,例如:SAL_RETURNSTOCK
  • FilterString: 用于过滤条件,例如:"FModifyDate>='{{LAST_SYNC_TIME|datetime}}' and FDocumentStatus='B' and F_ora_CheckBox='1'"
  • FieldKeys: 查询的字段集合,例如:["FID", ...]

这些参数确保了我们能够准确地获取所需的数据。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一些常见的数据清洗操作:

  1. 字段映射:将原始字段映射到目标系统所需的字段。例如,将FBillNo映射为目标系统中的订单编号。
  2. 数据格式转换:例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式。
  3. 缺失值处理:填充或删除缺失值,以确保数据完整性。

示例代码

以下是一个示例代码片段,用于调用接口并处理返回的数据:

import requests
import json

# 配置请求参数
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
    'FormId': 'SAL_RETURNSTOCK',
    'FilterString': 'FModifyDate>=\'2023-01-01\' and FDocumentStatus=\'B\' and F_ora_CheckBox=\'1\'',
    'FieldKeys': ['FID', 'FBillNo', 'FSaleOrgId.FName', ...]
}

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

# 处理响应
if response.status_code == 200:
    data = response.json()

    # 数据清洗与转换
    cleaned_data = []
    for item in data:
        cleaned_item = {
            '订单编号': item['FBillNo'],
            '销售组织': item['FSaleOrgId.FName'],
            # 更多字段映射...
        }
        cleaned_data.append(cleaned_item)

    # 输出清洗后的数据
    print(cleaned_data)
else:
    print(f"Error: {response.status_code}")

通过上述步骤,我们可以成功地从金蝶云星空获取销售退货数据,并进行初步加工,为后续的数据集成和分析奠定基础。 用友与WMS系统接口开发配置

使用轻易云数据集成平台实现销售退货数据的ETL转换并写入钉钉API接口

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台(钉钉API接口)的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台完成这一过程,重点关注API接口相关的技术细节。

1. 数据请求与清洗

首先,我们需要从源平台(金蝶)获取销售退货数据。这一步骤已在生命周期的第一阶段完成,这里不再赘述。我们假设已经获得了所需的数据,并对其进行了初步清洗。

2. 数据转换与写入

接下来,我们需要将清洗后的数据转换为钉钉API接口能够接收的格式。根据提供的元数据配置,钉钉API接口要求的数据结构如下:

{
  "api": "topapi/processinstance/create",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "process_code",
      "label": "process_code",
      "type": "string",
      "describe": "process_code在审批流程编辑页面的URL网址中获取。",
      "value": "PROC-C32C1731-310A-4824-B403-0EE33B597311"
    },
    {
      "field": "originator_user_id",
      "label": "originator_user_id",
      "type": "string",
      "describe": "审批实例发起人的userid。",
      "value": "_findCollection find FStaffNumber from c51d3596-d760-3e28-968b-cd6cabbdfffb where FID={F_ora_Base}"
    },
    {
      ...
    }
  ]
}

3. 配置元数据

根据上述元数据配置,我们需要将金蝶系统中的字段映射到钉钉API接口所需的字段。以下是关键字段及其映射关系:

  • process_code: 固定值 "PROC-C32C1731-310A-4824-B403-0EE33B597311"
  • originator_user_id: 从金蝶系统中查找 FStaffNumber 字段,并根据 FID 进行匹配。
  • dept_id: 同样从金蝶系统中查找 FStaffNumber 字段,并根据 FID 进行匹配。
  • form_component_values: 包含多个子字段,如下所示:
    • 单据编号: 映射为 {FBillNo}
    • 单据日期: 映射为 {FDate|date}
    • 办理人: 映射为 _findCollection find FStaffNumber from c51d3596-d760-3e28-968b-cd6cabbdfffb where FID={F_ora_Base}
    • 退货组织: 映射为 {FSaleOrgId}
    • 事业部: 映射为 {F_ora_Combo}
    • 渠道: 映射为 {F_ora_Combo1}
    • 退货公司全称: 映射为 {FRetcustId}
    • 币别: 映射为 {F_ora_Combo2}
    • 退货原因: 使用 _function case '{F_ora_Remarks}' when ' ' then '无' else '{F_ora_Remarks}' end 函数处理
    • 退回金额(元): 映射为 {FBillAllAmount}
    • 品牌: 从金蝶系统中查找 FHelpCode 字段,并根据 FSaledeptid 匹配。

此外,还有一个嵌套数组字段 表格,包含以下子字段:

  • 物料名称: 映射为 {FMaterialId}
  • 实退数量: 映射为 {FRealQty}
  • 含税单价: 映射为 {FTaxPrice}
  • 价税合计: 映射为 {FAllAmount}

4. 数据写入

配置完成后,我们使用轻易云平台提供的可视化界面,将上述映射关系配置到相应的ETL流程中。通过调用钉钉API接口,将转换后的数据写入目标平台。

具体实现步骤如下:

  1. 在轻易云平台上创建一个新的ETL任务,选择源平台(金蝶)和目标平台(钉钉)。
  2. 配置数据映射关系,根据提供的元数据配置,将金蝶系统中的字段映射到钉钉API接口所需的字段。
  3. 设置API调用参数,包括请求方法(POST)、API路径(topapi/processinstance/create)等。
  4. 执行ETL任务,实时监控数据流动和处理状态,确保每个环节都清晰易懂。

通过以上步骤,我们成功地将销售退货数据从金蝶系统转换并写入到钉钉API接口,实现了不同系统间的数据无缝对接。这不仅提高了业务透明度和效率,也确保了数据处理过程的全生命周期管理。 用友与WMS系统接口开发配置

更多系统对接方案