实现金蝶云星空盘盈单数据的高效ETL和数据传输

  • 轻易云集成顾问-曾平安

案例分享:金蝶云星空到旺店通·企业奇门的数据集成

在本案例中,我们探讨如何实现金蝶云星空系统中的盘盈单数据与旺店通·企业奇门系统的其他入库单对接。通过高效利用轻易云数据集成平台,确保数据准确无误地传输并处理。

金蝶云星空数据获取与分页限流处理

首先,通过调用金蝶云星空的API接口executeBillQuery来抓取所需的盘盈单数据。考虑到大规模的数据量和API接口的性能限制,需要特别注意分页和限流机制,以避免请求失败或超时的问题。

{
  "invoke": {
    "apiName": "executeBillQuery",
    "args": {
      // 参数细节根据需求填写
    },
    "options": {
      "pagination": true, // 启用分页处理
      "rateLimit": 1000   // 每秒最大请求次数为1000次
    }
  }
}

数据格式转换与实时监控

由于金蝶云星空和旺店通·企业奇门之间存在数据格式差异,在进行两者之间的数据映射时,必须确保字段的一一对应。同时,通过轻易云提供的全透明可视化操作界面,可以实时监控整个数据处理过程,记录日志以便于后期问题分析和调试。

{
  "transformation": [
    { 
      "sourceField": "<KDBillID>", 
      "targetField": "<WDCOrderID>" 
    },
    { 
      // 更多字段映射规则...
    }
  ],
  "monitoringLogLevel": "DEBUG" // 设置详细调试级别日志记录
}

旺店通·企业奇门写入与异常重试机制

最后,将经过转换后的盘盈单数据通过wdt.stockin.order.push API写入到旺店通·企业奇门。在此过程中,为保证业务流程不中断,还需要设计有效的异常处理与错误重试机制。例如,如果某条写入失败,则将其记录下来,并进行最多三次自动重试。

{
  "invokePushApi":{
     “apiName":"wdt.stockin.order.push",
     “args":{
         ...
     },
     retry:{
         attempts:3,
         delay:2000 # 每次重试间隔2秒
       }
   }   
}

钉钉与MES系统接口开发配置

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

在数据集成过程中,调用源系统接口是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取盘盈单数据并进行初步加工。

接口配置与请求参数

首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery接口。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillEntry_FEntryID",
  "name": "FBillNo",
  "idCheck": true,
  "request": [
    {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","describe":"FEntryID","value":"FBillEntry_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态\n暂存:Z\n创建:A\n审核中:B\n已审核:C\n重新审核:D","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","describe":"库存组织","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型\nPY01_SYS-标准盘盈单","value":"FBillTypeID"},
    {"field":"FStockerId","label":"仓管员","type":"string","describe":"仓管员","value":"FStockerId"},
    {"field":"FCreatorId","label":"创建人","type":"string","describe":"创建人","value":"FCreatorId"},
    {"field":...}
  ],
  "otherRequest": [
    {"field":...}
  ],
  "autoFillResponse": true
}

请求参数详解

  1. 基本字段

    • FBillEntry_FEntryID: 分录唯一标识。
    • FID: 实体主键。
    • FBillNo: 单据编号。
    • FDocumentStatus: 单据状态(如暂存、创建、审核中等)。
    • FStockOrgId_FNumber: 库存组织编码。
    • FDate: 日期。
    • FBillTypeID: 单据类型(如标准盘盈单)。
  2. 扩展字段

    • FCreatorId, FCreateDate, FModifierId, FModifyDate, FApproverId, FApproveDate: 创建人、创建日期、最后修改人、最后修改日期、审核人和审核日期等信息。
    • FMaterialId_FNumber, FAcctQty, FGainQty: 物料编码、账存数量和盘盈数量等。
  3. 分页与过滤

    • Limit, StartRow, TopRowCount: 分页参数,用于控制查询结果的行数和起始位置。
    • FilterString: 用于设置过滤条件,例如只查询已审核且特定仓库的记录。

数据请求与清洗

通过上述配置,我们可以构建HTTP POST请求来调用executeBillQuery接口。以下是一个示例请求体:

{
  "FormId": "STK_StockCountGain",
  "FieldKeys": ["FBillNo", "FID", ...],
  "FilterString": "FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='2023-01-01'",
  "Limit": 100,
  "StartRow": 0
}

在接收到响应后,需要对数据进行初步清洗和转换。例如,将日期格式化为标准格式,将物料编码转换为业务系统所需的格式等。

数据转换与写入

在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。这一步通常包括字段映射、数据类型转换以及业务逻辑处理。

例如,将金蝶云星空中的盘盈单数据转换为旺店通系统中的其他入库单,需要确保字段一一对应,并处理好单位换算、数量计算等细节问题。

小结

通过轻易云数据集成平台,我们能够高效地调用金蝶云星空的executeBillQuery接口,获取并加工盘盈单数据。本文详细介绍了接口配置、请求参数以及数据清洗和转换的方法,为实现不同系统间的数据无缝对接提供了技术指导。 打通企业微信数据接口

利用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口

在数据集成生命周期的第二步,我们需要将已经从源平台获取并清洗过的数据进行ETL(Extract, Transform, Load)转换,以适配目标平台的API接口格式。本文将详细介绍如何利用轻易云数据集成平台,将盘盈单数据转化为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。

接口元数据配置解析

我们将使用的目标接口是wdt.stockin.order.push,其请求方法为POST。以下是该接口的元数据配置:

{
  "api": "wdt.stockin.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "outer_no", "label": "外部单号", "type": "string", "describe": "外部单号", "value": "{FBillNo}"},
    {"field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "仓库编号", "value": "{FStockId_FNumber}"},
    {"field": "remark", "label": "备注", "type": "string", "describe": "备注", "value": "盘盈入库"},
    {"field": "is_check", "label": "是否审核", "type": "string", "describe": "是否审核", "value":"1"},
    {"field":"reason","label":"入库原因","type":"string","describe":"入库原因"},
    {
      "field":"goods_list",
      "label":"货品明细节点",
      "type":"array",
      "describe":"货品明细节点",
      “children”:[
        {"field":"spec_no","label":"商家编码","type":"string","describe":"商家编码","value":"{FMaterialId_FNumber}"},
        {"field":"stockin_num","label":"入库数量","type":"string","describe":"入库数量","value":"{FGainQty}"},
        {"field":"src_price","label":"原价","type":"string","describe":"原价"},
        {"field":"stockin_price","label":"入库价","type":"string","describe":"入库价"},
        {"field":"batch_no","label":"批次","type":"string","describe":"批次"},
        {"field":"tax","label":"税率","type":"string","describe":"对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16"}
      ]
    }
  ],
  “otherRequest”: [
    {“field”: “stockin_info”, “label”: “stockin_info”, “type”: “string”, “describe”: “111”}
  ],
  “groupCalculate”: {
    “headerGroup”: [“FBillNo”, “FStockId_FNumber”],
    “bodyGroup”: [“FMaterialId_FNumber”, “FGainQty”],
    “bodyName”: “list”,
    “calculate”: [],
    “sortfield”: []
  }
}

数据转换与写入过程

  1. 提取数据:首先,我们需要从源平台提取盘盈单的数据。假设这些数据已经经过初步清洗和处理,现在我们要将其转换为目标平台所需的格式。

  2. 字段映射:根据元数据配置,我们需要将源数据字段映射到目标API字段。例如:

    • FBillNo 映射到 outer_no
    • FStockId_FNumber 映射到 warehouse_no
    • FMaterialId_FNumber 映射到 spec_no
    • FGainQty 映射到 stockin_num
  3. 构建请求体:根据映射关系构建JSON请求体。以下是一个示例:

{
  'outer_no': '123456',
  'warehouse_no': 'WH001',
  'remark': '盘盈入库',
  'is_check': '1',
  'reason': '库存调整',
  'goods_list': [
    {
      'spec_no': 'SKU001',
      'stockin_num': '10',
      'src_price': '100.00',
      'stockin_price': '95.00',
      'batch_no': '',
      'tax': ''
    },
    {
      'spec_no': 'SKU002',
      'stockin_num': '20',
      'src_price': '',
      'stockin_price': '',
      'batch_no': '',
      'tax': ''
    }
  ],
  ‘stockin_info’: ‘111’
}
  1. 发送请求:使用POST方法将构建好的JSON请求体发送到旺店通·企业奇门API接口。
import requests

url = "<旺店通API地址>"
headers = {
    ‘Content-Type’: ‘application/json’,
}

data = {
  # 构建好的JSON请求体
}

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

if response.status_code == 200:
    print("数据成功写入目标平台")
else:
    print(f"写入失败,状态码: {response.status_code}, 错误信息: {response.text}")

技术要点

  • 字段映射与转换:确保所有字段都正确映射,并且类型符合目标API要求。
  • 数组处理:对于嵌套数组(如货品明细节点),需特别注意每个子项的字段映射和类型。
  • 错误处理:在实际操作中,需对可能出现的错误进行捕获和处理,如网络问题、字段缺失等。

通过上述步骤,我们实现了从源平台到旺店通·企业奇门API接口的数据ETL转换,并成功将盘盈单数据写入目标平台。这一过程展示了如何利用轻易云数据集成平台进行高效的数据转换和集成操作。 金蝶与CRM系统接口开发配置

更多系统对接方案