调用金蝶云executeBillQuery接口获取采购退料单数据详细教程

  • 轻易云集成顾问-潘裕

金蝶云星空数据集成到旺店通·旗舰版:标准-金蝶-采购退料单——>旺店通-自流转退(外仓调整)

在这篇技术文章中,我们将深入探讨如何通过API接口,将金蝶云星空中的“采购退料单”数据高效集成至旺店通·旗舰版,以实现业务系统间的数据协同和自动化处理。本次案例的实施方案为“标准-金蝶-采购退料单——>旺店通-自流转退(外仓调整)”,我们主要聚焦于以下几个关键技术环节。

首先,为确保从金蝶云星空获取的数据完整且不漏单,调用其executeBillQuery API接口是基础。这个接口允许我们定时抓取并分页处理大量的采购退料单数据。同时,为了避免系统负载过高而导致请求限流,我们必须设计一个合理的限速机制,并对可能发生的网络抖动进行异常处理与重试机制,实现连续稳定的数据传输。

接着便是大规模数据导入至目标系统,即通过调用wms.outer.OuterOut.createOrder API向旺店通·旗舰版写入自流转退(外仓调整)订单。这项操作需要特别关注两个方面:一是批量数据的快速写入性能优化;二是确保两端系统之间的数据格式一致性。在这里,自定义映射规则尤为重要,它直接影响到后续流程是否能够顺利执行。必要时,我们还会结合轻易云平台提供的一些实时监控工具,对整个过程进行日志记录和状态追踪,做到有问题及时发现、迅速解决。

最后,在整个对接过程中,不可避免地涉及到不同系统API返回结果及错误码解析。对此,通过构建鲁棒性的异常处理逻辑来完成可靠性验证,包括针对特定错误码触发重试等动作,这既提高了成功率,也保障了业务链条的连续性和稳定运行。

以上只是本案例技术实操中的核心片段,后续部分将详述每个具体步骤与实现细节,包括如何编写实际调用代码、设置参数以及调优建议等内容。 如何对接钉钉API接口

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

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

接口配置

首先,我们需要了解executeBillQuery接口的基本配置。根据提供的元数据配置,接口的主要参数如下:

  • API: executeBillQuery
  • Method: POST
  • Effect: QUERY
  • FormId: PUR_MRB

这些参数定义了我们将要调用的具体API和其操作方式。

请求参数

为了成功调用该接口,我们需要构建请求参数。以下是关键字段及其描述:

  1. FPURMRBENTRY_FEntryID: 明细信息ID
  2. FID: 实体主键
  3. FBillNo: 单据编号
  4. FDocumentStatus: 单据状态(Z:暂存,A:创建,B:审核中,C:已审核)
  5. FStockOrgId_FNumber: 退料组织
  6. FDate: 退料日期
  7. FBillTypeID_FNumber: 单据类型(如标准退料单、零散采购退料单等)
  8. FSupplierID_FNumber: 供应商
  9. FApproveDate: 审核日期

这些字段是我们在请求中必须包含的,以确保能够准确地查询到所需的数据。

构建请求体

根据元数据配置,我们可以构建如下的请求体:

{
  "FormId": "PUR_MRB",
  "FieldKeys": [
    "FPURMRBENTRY_FEntryID",
    "FID",
    "FBillNo",
    "FDocumentStatus",
    "FStockOrgId.FNumber",
    "FDate",
    "FBillTypeID.FNumber",
    "FSupplierID.FName",
    "FApproveDate"
  ],
  "FilterString": "FApproveDate>='2023-01-01' and FStockOrgId.FNumber='101'",
  "Limit": 100,
  "StartRow": 0,
  "TopRowCount": true
}

在这个请求体中:

  • FormId指定了业务对象表单ID。
  • FieldKeys列出了需要查询的字段集合。
  • FilterString用于过滤条件,这里示例为查询2023年1月1日之后审核通过且退料组织编号为101的数据。
  • LimitStartRow用于分页查询。

调用API

使用轻易云平台,我们可以通过可视化界面或编写脚本来发送上述请求。以下是一个简单的Python示例,展示如何使用HTTP库进行API调用:

import requests

url = 'https://api.kingdee.com/executeBillQuery'
headers = {
    'Content-Type': 'application/json',
}
data = {
    "FormId": "PUR_MRB",
    "FieldKeys": [
        "FPURMRBENTRY_FEntryID",
        "FID",
        "FBillNo",
        ...
    ],
    ...
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    result = response.json()
    # 对结果进行处理
else:
    print(f"Error {response.status_code}: {response.text}")

数据加工

获取到原始数据后,需要对其进行初步加工,以便后续的数据转换与写入。例如,可以对日期格式进行标准化处理,对数值字段进行单位转换等。以下是一个简单的数据加工示例:

import pandas as pd

# 假设result是从API获取到的数据列表
df = pd.DataFrame(result)

# 日期格式标准化
df['FDate'] = pd.to_datetime(df['FDate'])

# 数值字段单位转换(如金额从分到元)
df['FBillAmount'] = df['FBillAmount'] / 100

# 输出处理后的数据框
print(df)

通过上述步骤,我们完成了从金蝶云星空获取采购退料单数据并进行初步加工。这为后续的数据转换与写入奠定了基础。 打通企业微信数据接口

轻易云数据集成平台:将源平台数据ETL转换并写入旺店通·旗舰版API接口

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将金蝶系统中的采购退料单数据转换为旺店通·旗舰版API接口所需的格式,并最终写入目标平台。

API接口配置

首先,我们需要了解目标平台——旺店通·旗舰版API接口的配置。根据元数据配置,API接口为wms.outer.OuterOut.createOrder,使用POST方法提交请求,并且需要进行ID检查。

以下是详细的请求字段说明:

  • 单据头(order)

    • order_no:外部单号,对应金蝶系统中的FBillNo
    • warehouse_no:仓库编号,对应金蝶系统中的FSTOCKID_FNumber
    • reason:出库原因,固定值为“采购退料出库”
    • remark:备注,包含供应商信息和描述,对应金蝶系统中的FSupplierID_FNumberFDESCRIPTION
  • 单据明细(order_details)

    • spec_no:商家编码,对应金蝶系统中的FMATERIALID_FNumber
    • num:数量,对应金蝶系统中的FRMREALQTY
    • remark:明细备注,对应金蝶系统中的FNOTE
  • 是否审核(is_check):固定值为true

数据转换与写入

在轻易云数据集成平台中,我们可以通过配置元数据来实现上述字段的映射和转换。具体步骤如下:

  1. 定义请求结构: 根据元数据配置,我们需要定义一个包含单据头和单据明细的请求结构。单据头是一个对象,包含多个字段;单据明细是一个数组,每个元素也是一个对象。

  2. 字段映射与值替换: 在定义好请求结构后,需要将金蝶系统中的字段映射到对应的API字段。例如,将金蝶系统中的FBillNo映射到API字段order_no,并设置其值为金蝶系统中的实际值。

  3. 聚合计算: 对于需要进行聚合计算的字段,如数量(FRMREALQTY),我们可以使用元数据配置中的计算规则,将其求和后传递给API接口。

  4. 生成请求模型: 配置完成后,通过轻易云数据集成平台生成最终的请求模型,并确保其符合API接口要求。

以下是一个示例代码片段,用于展示如何通过轻易云数据集成平台实现上述过程:

{
  "api": "wms.outer.OuterOut.createOrder",
  "method": "POST",
  "request": {
    "order": {
      "order_no": "{FBillNo}",
      "warehouse_no": "{FSTOCKID_FNumber}",
      "reason": "采购退料出库",
      "remark": "供应商:{FSupplierID_FNumber} {FDESCRIPTION}"
    },
    "order_details": [
      {
        "spec_no": "{FMATERIALID_FNumber}",
        "num": "{FRMREALQTY}",
        "remark": "{FNOTE}"
      }
    ],
    "is_check": true
  }
}

实际应用案例

假设我们从金蝶系统中获取了一条采购退料单,其主要字段如下:

  • FBillNo: 'PO123456'
  • FSTOCKID_FNumber: 'WH001'
  • FSupplierID_FNumber: 'SUP123'
  • FDESCRIPTION: '退货描述'
  • FMATERIALID_FNumber: 'MAT001'
  • FRMREALQTY: '10'
  • FNOTE: '无'

根据上述配置,我们可以生成如下请求体:

{
  "api": "wms.outer.OuterOut.createOrder",
  "method": "POST",
  "request": {
    "order": {
      "order_no": "PO123456",
      "warehouse_no": "WH001",
      "reason": "采购退料出库",
      "remark": "供应商:SUP123 退货描述"
    },
    "order_details": [
      {
        "spec_no": "MAT001",
        "num": "10",
        "remark": "无"
      }
    ],
    "is_check": true
  }
}

通过轻易云数据集成平台,我们可以将上述请求体发送到旺店通·旗舰版API接口,实现从金蝶系统到旺店通·旗舰版的数据无缝对接。这不仅简化了数据处理流程,还大大提高了业务效率和准确性。 金蝶与CRM系统接口开发配置

更多系统对接方案