ETL转换与写入旺店通WMSAPI接口的实战指南

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

金蝶云星空数据集成到旺店通WMS案例分享:盘盈单=>其他入库单-1

在系统对接和数据集成领域,确保不同平台之间的数据无缝流动是关键任务。本文将详细介绍如何使用轻易云数据集成平台,将金蝶云星空的"盘盈单"数据有效地同步至旺店通WMS系统中的“其他入库单”。

一、金蝶云星空接口调用

为了实现从金蝶云星空获取有效的盘盈单数据,我们需要调用其提供的API executeBillQuery。该接口允许我们按指定的业务条件进行查询,并分页返回结果。在实际操作中,需要特别处理以下两点:

  1. 分页处理:由于每次API调用返回的数据量有限,因此需实现分页抓取机制,以确保所有相关记录不漏掉。
  2. 限流控制:为避免触发金蝶云星空API服务端限制,请求频率需合理设置。
# 示例代码片段 - 调用executeBillQuery API
def fetch_data_from_kingdee(pagination_params):
    response = requests.post(
        url="https://api.kingdee.com/executeBillQuery",
        data=json.dumps(pagination_params),
        headers={"Content-Type": "application/json"}
    )
    return response.json()

二、批量写入到旺店通WMS

当成功获取到金蝶云星空盘盈单后,下一步便是将这些数据高效地写入到旺店通WMS的“其他入库单”模块中。这里我们使用 WDT_WMS_ENTRYORDER_CREATE 接口来完成这一目标。

# 示例代码片段 - 调用 WDT_WMS_ENTRYORDER_CREATE API
def write_data_to_wdt(data_batch):
    response = requests.post(
        url="https://api.wangdiantong.com/WDT_WMS_ENTRYORDER_CREATE",
        data=json.dumps(data_batch),
        headers={"Content-Type": "application/json"}
    )
    return response.json()

在这个过程中,有几项技术挑战值得关注:

  1. 数据格式转换: 金蝶与旺店通系统间的数据格式可能有较大差异,此时必须进行定制化的数据映射和调整。例如字段名和结构上的不同。

  2. 错误重试机制: 考虑网络环境等各种可能引起请求失败的问题,构建一个可靠的错误重试机制非常重要,确保每条记录都能够故障自动恢复并被正确写入。

  3. 实时监控与日志记录: 为了保证整个过程透明可追溯,每一步操作及异常情况都应详尽地记录日志,这不仅方便问题排查,也为 如何对接用友BIP接口

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery,获取并加工盘盈单数据,以实现与其他入库单的无缝对接。

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到以下关键参数:

  • API: executeBillQuery
  • Method: POST
  • Pagination: 每页500条记录
  • ID Check: true
  • Operation Method: merge

这些参数定义了我们如何从金蝶云星空系统中请求数据,并且如何处理和合并这些数据。

请求字段配置

在请求字段部分,我们需要特别注意以下字段:

[
  {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","value":"FBillEntry_FEntryID"},
  {"field":"FID","label":"实体主键","type":"string","value":"FID"},
  {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
  {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
  {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
  {"field":"FDate","label":"日期","type":"string","value":"FDate"},
  {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
  {"field":"FStockerId","label":"仓管员","type":"string","value":"FStockerId"},
  {"field":"FCreatorId","label":"创建人","type":"string","value":"FCreatorId"},
  {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
  {"field":"FModifierId","label":"最后修改人","type":"string","value":"FModifierId"},
  {"field": "FModifyDate", "label": "最后修改日期", "type": "string", "value": "FModifyDate" },
  // ...省略其他字段
]

这些字段定义了我们需要从金蝶云星空系统中提取的数据内容,包括单据编号、库存组织、日期等信息。

分页与过滤条件

为了高效地处理大量数据,我们使用分页机制,每次请求500条记录。同时,通过过滤条件来限定查询范围,例如:

{
    "FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' AND FStockId.F_JZJ_CheckBox=1"
}

这个过滤条件确保我们只获取最近30分钟内审核通过且特定仓库的盘盈单数据。

数据处理与合并

在获取到原始数据后,需要进行清洗和转换。根据元数据配置中的操作方法,我们将使用merge方法,将分录明细合并到主表中。具体操作如下:

{
    "method": "merge",
    "field": "FBillEntry_FEntryID",
    "bodyName": "details",
    "header": ["FBillNo", "FBillEntry_FEntryID"],
    "body": ["FMaterialId_FNumber", "FGainQty"]
}

这一步骤确保每个盘盈单的明细项(如物料编码和盘盈数量)正确地关联到对应的主表记录中。

实际案例操作步骤

  1. 配置API请求:在轻易云平台上,创建一个新的API请求任务,选择POST方法,并填写API地址为executeBillQuery
  2. 设置请求参数:根据元数据配置,设置请求体中的各个字段和分页参数。
  3. 执行请求并获取响应:发送请求后,平台会返回包含盘盈单信息的数据集。
  4. 数据清洗与转换:使用预定义的操作方法,将分录明细合并到主表记录中。
  5. 写入目标系统:将处理后的数据写入目标系统,实现盘盈单与其他入库单的数据对接。

通过以上步骤,我们可以高效地从金蝶云星空系统中提取并处理盘盈单数据,为后续的数据集成奠定基础。这种全透明可视化的操作方式,不仅提升了业务透明度,还极大提高了工作效率。 金蝶与CRM系统接口开发配置

轻易云数据集成平台生命周期的第二步:ETL转换与写入旺店通WMSAPI接口

在数据集成过程中,ETL(提取、转换、加载)是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终写入目标平台——旺店通WMSAPI接口。

数据请求与清洗

在开始ETL之前,我们需要从源平台获取数据并进行初步清洗。假设我们已经完成了这一步,接下来将重点介绍如何将清洗后的数据转换为旺店通WMSAPI接口所能接受的格式。

数据转换与写入

我们需要将盘盈单的数据转换为旺店通WMS的其他入库单格式,并通过API接口进行数据写入。以下是具体的元数据配置和操作步骤:

元数据配置解析
{
  "api": "WDT_WMS_ENTRYORDER_CREATE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FStockId_FNumber",
    "bodyName": "details",
    "bodySum": ["FGainQty"],
    "header": ["FStockId_FNumber", "FBillNo"],
    "body": ["FMaterialId_FNumber", "FGainQty"]
  },
  "request": [
    {
      "label": "入库单信息",
      "field": "entryOrder",
      "type": "object",
      "children": [
        {"parent": "entryOrder", "label": "入库单号", "field": "entryOrderCode", "type": "string", "value":"{FBillNo}"},
        {"parent": "entryOrder", "label": "仓库编码", "field":"warehouseCode",  "type":"string","value":"{FDestStockId_FNumber}"},
        {"parent":"entryOrder","label":"业务类型","field":"orderType","type":"string","value":"QTRK"}
      ]
    },
    {
      "label":"单据信息",
      "field":"orderLines",
        "type":"array",
        "value":"details",
        "children":[
          {
            "field":"orderLine",
            "label":"orderLine",
            "type":"object",
            "parent":"orderLines",
            "children":[
              {"parent":"orderLines","label":"商家编码","field":"itemCode","type":"string","value":"{{details.FMaterialId_FNumber}}"},
              {"parent":"orderLines","label":"应收商品数量","field":"planQty","type":"string","value":"{{details.FQty}}"},
              {"parent":"orderLines","label":"入库单的行号","field":"orderLineNo","type":"string","value":"{{details.FBillEntry_FEntryID}}"},
              {"parent":"orderLines","label":"库存类型","field":"inventoryType","type":"string","value":"ZP"},
              {"parent":"orderLines","label":"批次","field":"batchCode","type":"string","value":
             "{{details.FDestLot}}"},
              {"parent":
                "orderLines",
                "label":
                "生产日期",
                "field":
                "productDate",
                "type":
                "string",
                "value":
             "{{details.FProduceDate|date}}"
          },
          {"parent":
          orderLines,
          label:
          过期日期,
          field:
          expireDate,
          type:
          string,
          value:
          {{details.FExpiryDate|date}}
     }
     ]
     }
     ]
     }
     ]
}
数据转换逻辑
  1. 定义API请求参数

    • api字段指定了目标API接口为WDT_WMS_ENTRYORDER_CREATE
    • method字段指定了HTTP请求方法为POST
    • idCheck字段设置为true,表示在执行操作前会进行ID校验。
  2. 操作配置

    • operation部分定义了如何处理数据,包括合并字段(merge方法)、合并依据(FBillNo,FStockId_FNumber)、以及需要处理的表头和表体字段。
  3. 请求结构

    • request部分定义了具体的请求结构,包括两个主要部分:入库单信息和单据信息。
  4. 入库单信息

    • entryOrderCode: 对应源数据中的FBillNo
    • warehouseCode: 对应源数据中的FDestStockId_FNumber
    • orderType: 固定值为“QTRK”(其他入库)。
  5. 单据信息

    • 包含一个数组,每个元素代表一行订单明细。
    • 每个订单明细包含多个字段,如商家编码(对应源数据中的物料编号)、应收商品数量、行号、库存类型(固定值为“ZP”)、批次、生产日期和过期日期等。
实际操作步骤
  1. 提取原始数据:从源系统中提取盘盈单的数据,包括物料编号、数量、仓库编码等信息。
  2. 清洗与预处理:对提取的数据进行必要的清洗和预处理,例如格式化日期字段,确保所有字段符合目标API要求。
  3. 构建请求报文:根据元数据配置,将清洗后的数据映射到目标API的请求结构中。使用模板语言将源字段值填充到目标字段中。
  4. 发送请求:通过HTTP POST方法,将构建好的请求报文发送到旺店通WMSAPI接口,完成数据写入操作。

通过上述步骤,我们可以高效地将源平台的数据转换并写入到旺店通WMS,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 用友与SCM系统接口开发配置

更多系统对接方案