从旺店通到金蝶云星辰V2:全流程数据集成揭秘

  • 轻易云集成顾问-蔡威

案例分享:旺店通·企业奇门数据集成到金蝶云星辰V2——盘亏V2.0的实现

在实际业务中,电商平台的数据管理和对接往往面临诸多挑战。本文将重点介绍如何通过轻易云数据集成平台,实现旺店通·企业奇门中的订单数据高效可靠地集成到金蝶云星辰V2系统,以优化库存管理并提升运营效率。

任务概述

通过调用旺店通·企业奇门的wdt.stockout.order.query接口,我们可以获取出库订单的数据,然后利用金蝶云星辰V2的/jdy/v2/scm/inv_check_loss_bill API接口进行数据写入。在此过程中,需要处理分页、限流以及两者之间的数据格式差异,并确保不漏单且能大量快速写入目标系统。

关键技术点

  1. 定时可靠抓取与批量处理 通过配置定时器,按设定间隔时间从旺店通接口稳定抓取最新订单。为了应对API返回的大量数据,通过分页机制逐页拉取。同时,为了避免网络波动或瞬时异常导致的数据丢失,引入错误重试机制确保每次请求都成功响应。

  2. 调用和解析API 利用标准HTTP协议调用wdt.stockout.order.query接口,从JSON响应中提取必需的字段信息,并按照金蝶云星辰V2所要求的数据结构重新组织。这一步骤是消除两者格式差异的重要环节。

  3. 快速大批量写入 当获得整理好的订单后,借助轻易云提供的大规模、多并发写入能力,将这些订单数据一键导入至金蝶云星辰V2系统内。这里采用批量方式操作,可显著提升性能并减少网络交互次数。

  4. 实时监控与日志记录 在整个流程运行期间,通过轻易云的平台特性,对各个步骤进行实时状态监控及日志记录。一旦发生异常情况,能够及时告警并便于追溯源头问题,加速问题解决过程。

以下章节,将详细探讨上述技术点在"盘亏V2.0"方案中的具体实现方法,以及遇到的一些常见问题和解决策略。 金蝶与MES系统接口开发配置

调用旺店通·企业奇门接口获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理过程的第一步。本文将深入探讨如何通过调用旺店通·企业奇门接口 wdt.stockout.order.query 获取并加工数据。

接口调用配置

首先,我们需要配置接口的元数据,以便正确地请求和处理数据。以下是我们使用的元数据配置:

{
  "api": "wdt.stockout.order.query",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_id",
  "pagination": {
    "pageSize": 30
  },
  "condition": [
    [
      {
        "field": "warehouse_no",
        "logic": "neq",
        "value": "WH2024052601"
      }
    ]
  ],
  "idCheck": true,
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "string",
      "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "string",
      "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "order_type",
      "label": "出库单类型",
      "type": "string",
      "describe":"2调拨出库,3采购退货出库,4盘亏出库,5生产出库,7其他出库,8多发出库,9纠错出库,10保修配件出库,11初始化出库,12jit拣货出库,13委外出库",
      “value”: “4”
    },
    {
      “field”: “status”,
      “label”: “出库单状态”,
      “type”: “string”,
      “describe”: “出库单状态5:已取消,50:待审核,55:已审核,95:已发货,110:已完成(默认查已发货已完成单据),113:异常发货”
    },
    {
      “field”: “warehouse_no”,
      “label”: “仓库编号”,
      “type”: “string”,
      “describe”:“代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)(不支持一次推送多个仓库编号)”
    },
    {
       “field”:“src_order_no”,
       “label”:“源单号”,
       “type”:“string”,
       “describe”:“源单号”
     },
     {
       “field”:“stockout_no”,
       “label”:“出库单号”,
       “type”:"string",
       ”describe“:“出库单号,传该字段可以不传时间”
     }
   ],
   ”otherRequest“:[
     {
       ”field“:“page_size”,
       ”label“:“分页大小”,
       ”type“:“string”,
       ”describe“:“每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40,使用举例单击这里”,
       ”value“:“{PAGINATION_PAGE_SIZE}”
     },
     {
        ”field“:“page_no”,
        ”label“:“页号”,
        ”type“:“string”,
        ”describe“:“不传值默认从0页开始”,
        ”value“:“{PAGINATION_START_PAGE}”
     }
   ]
}

数据请求与清洗

在进行数据请求时,我们需要特别注意以下几点:

  1. 时间参数

    • start_timeend_time 用于指定增量获取数据的时间范围。这两个参数分别取自上次同步时间和当前时间。
    • 格式要求为 yyyy-MM-dd HH:mm:ss
  2. 过滤条件

    • 使用 warehouse_no 字段进行过滤,以排除特定仓库编号(如 WH2024052601)。
    • 出库单类型 (order_type) 固定为 4(盘亏出库)。
  3. 分页处理

    • 配置分页大小 (page_size) 为每页30条记录。
    • 页号 (page_no) 从0开始。

数据转换与写入

在获取到原始数据后,需要对其进行清洗和转换。以下是一些关键步骤:

  1. ID检查

    • 确保每条记录都有唯一标识符 (stockout_id)。
  2. 字段映射

    • 将原始字段映射到目标系统所需的字段。例如,将 order_no 映射为目标系统中的订单编号。
  3. 状态过滤

    • 根据业务需求,仅保留特定状态的记录,如已发货 (95) 和已完成 (110) 的记录。
  4. 异常处理

    • 对于异常记录(如状态为 113),需要进行特殊处理或记录日志以便后续分析。

通过以上步骤,我们能够高效地从旺店通·企业奇门接口获取并加工所需的数据,为后续的数据写入和进一步处理奠定基础。 企业微信与ERP系统接口开发配置

轻易云数据集成平台生命周期的第二步:将源数据转换为金蝶云星辰V2API接口格式并写入

在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已集成的源数据进行ETL转换,最终通过金蝶云星辰V2API接口写入目标平台。

元数据配置解析

在进行ETL转换之前,首先需要理解元数据配置。以下是用于盘亏V2.0集成方案的元数据配置:

{
  "api": "/jdy/v2/scm/inv_check_loss_bill",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {"field":"bill_date","label":"日期","type":"string","value":"{modified}"},
    {"field":"bill_no","label":"单据编号","type":"string","value":"PKD{order_no}"},
    {"field":"remark","label":"备注","type":"string","value":"旺店通盘亏单{order_no}"},
    {"field":"operation_key","label":"操作类型","type":"string","value":"audit"},
    {
      "field":"material_entity",
      "label":"商品分录",
      "type":"array",
      "value":"details_list",
      "children":[
        {"field":"material_id","label":"商品","type":"string","value":"_mongoQuery d476a55d-acc7-3156-9c7f-b9f9dce596b5 findField=content.id where={\"content.number\": {\"$eq\":\"{{details_list.goods_no}}\"}}"},
        {"field":"qty","label":"数量","type":"string","value":"{{details_list.goods_count}}"},
        {"field":"unit_id","label":"单位","type":"string","value":"_mongoQuery d476a55d-acc7-3156-9c7f-b9f9dce596b5 findField=content.base_unit_id where={\"content.number\": {\"$eq\":\"{{details_list.goods_no}}\"}}"},
        {"field":"stock_id","label":"仓库","type":"string","value":"_findCollection find id from 9cf5314a-709f-3e72-b021-c9edae06888f where number={{details_list.warehouse_no}}"}
      ]
    }
  ]
}

数据请求与清洗

在这个阶段,数据从源系统被提取出来,并经过初步清洗和处理。清洗后的数据将作为输入传递给ETL转换过程。

数据转换与写入

  1. API接口配置

    • api字段定义了目标API的路径,即/jdy/v2/scm/inv_check_loss_bill
    • method字段指定了HTTP方法为POST。
    • effect字段表示执行操作。
  2. 字段映射

    • bill_date映射到源数据中的修改日期({modified})。
    • bill_no生成格式为PKD{order_no}的单据编号。
    • remark生成格式为旺店通盘亏单{order_no}的备注信息。
    • operation_key固定值为audit,表示操作类型。
  3. 数组嵌套处理

    • material_entity是一个数组类型,包含多个商品分录。每个分录包含以下子字段:
      • material_id: 使用MongoDB查询获取商品ID,查询条件为商品编号(goods_no)。
      • qty: 商品数量直接映射自源数据中的goods_count
      • unit_id: 使用MongoDB查询获取单位ID,查询条件同样为商品编号(goods_no)。
      • stock_id: 使用集合查找获取仓库ID,查找条件为仓库编号(warehouse_no})。

实际案例应用

假设我们有如下源数据:

{
  "modified": "2023-10-01",
  "order_no": "12345",
  "details_list": [
    {
      "goods_no": "G001",
      "goods_count": 10,
      "warehouse_no": "W001"
    },
    {
      "goods_no": "G002",
      "goods_count": 20,
      "warehouse_no": "W002"
    }
  ]
}

通过上述元数据配置和轻易云的数据集成平台,我们可以将其转换为符合金蝶云星辰V2API接口要求的格式:

{
  "bill_date": "2023-10-01",
  "bill_no": "PKD12345",
  "remark": "旺店通盘亏单12345",
  "operation_key": "audit",
  "material_entity": [
    {
      "material_id": "<MongoDB查询结果>",
      "qty": 10,
      "unit_id": "<MongoDB查询结果>",
      "stock_id": "<集合查找结果>"
    },
    {
      "material_id": "<MongoDB查询结果>",
      "qty": 20,
      "unit_id": "<MongoDB查询结果>",
      "stock_id": "<集合查找结果>"
    }
  ]
}

总结

通过对元数据配置的深入理解和应用,可以有效地将源平台的数据转换为目标平台所需的格式,并通过API接口实现无缝对接。这不仅提高了数据处理效率,也确保了业务流程的顺畅运行。 电商OMS与ERP系统接口开发配置

更多系统对接方案