轻易云平台在旺店通和金蝶云星空采购数据集成中的应用

  • 轻易云集成顾问-吕修远

旺店通·企业奇门数据集成到金蝶云星空:采购入库单对接实例分享

在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门的采购入库单(接口:wdt.stockin.order.query.purchase)与金蝶云星空系统(接口:batchSave)的高效对接。本文着重于API接口调用、高并发环境下的数据处理以及异常处理机制,帮助读者了解如何将复杂的业务流程简化为高效、透明且可监控的数据流。

首先,在实现这个系统对接的过程中,最关键的是确保从旺店通·企业奇门获取的数据不漏单。对此,可以利用定时可靠的抓取策略,通过定时任务周期性地调用wdt.stockin.order.query.purchase接口,从而保证及时读取最新的采购入库单数据,并避免由于网络或其他短暂故障导致的数据遗漏问题。此外,为了应对可能存在的大量数据,我们需要考虑分页和限流问题,这可以通过控制API请求参数中的分页大小来优化。

另外,在将采集到的大量数据批量写入到金蝶云星空时,需要特别关注两系统之间的数据格式差异。为此,规划了一系列映射规则及预处理逻辑,以便在导入前进行必要的数据转换。这部分工作既包括简单字段类型的转换,也涉及更复杂的自定义映射关系和业务逻辑匹配。

最后,由于集成过程中的任何环节都可能出现非预期状况,比如网络抖动、API限流等,因此必须设计一套健全的异常处理与错误重试机制。这不仅能确保每一个有效订单最终被成功传递至目标系统,而且能够提供详细日志记录以供实时监控和后续审计分析。在这方面,通过轻易云平台内置的一些工具,可以方便快捷地设置报警规则并自动触发相应恢复措施,大大提升了整体集成方案的稳定性与可靠性。

以上是关于此次技术案例开头部分的重要介绍,在随后的具体实施章节中,将进一步详解各个步骤及其代码实现细节。 用友与CRM系统接口开发配置

调用旺店通·企业奇门接口wdt.stockin.order.query.purchase获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.purchase,以获取采购入库单数据并进行初步加工。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是该接口的元数据配置:

{
  "api": "wdt.stockin.order.query.purchase",
  "effect": "QUERY",
  "method": "POST",
  "number": "order_no",
  "id": "stockin_id",
  "name": "order_no",
  "idCheck": true,
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "datetime",
      "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "status",
      "label": "状态",
      "type": "string",
      "describe": "入库单状态 10已取消20编辑中25待价格确认30待审核60待结算80已完成(默认80)",
      "value":"80"
    },
    {
      "field":"src_order_no",
      ...
    }
  ],
  ...
}

请求参数详解

  1. start_timeend_time

    • start_timeend_time用于指定增量获取数据的时间范围。通过设置这两个参数,可以确保每次只获取自上次同步以来的新数据。
    • {{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}分别代表上次同步时间和当前时间。
  2. status

    • 状态字段用于过滤不同状态的入库单。默认值为80,即只获取已完成的入库单。
  3. src_order_nowarehouse_no

    • src_order_no用于指定上层单据编号,如果传递该字段,可以不传递开始时间和结束时间。
    • warehouse_no用于指定仓库编号,以便获取特定仓库的数据。
  4. order_no

    • 单号字段用于指定特定的入库单号。
  5. 分页参数

    • page_sizepage_no用于控制分页,每页返回的数据条数和页码。

数据请求与清洗

在配置好请求参数后,我们可以通过轻易云平台发送POST请求到旺店通·企业奇门接口。以下是一个示例请求:

{
  ...
  {
    ...
    {
      ...
    }
  }
}

请求成功后,将返回包含采购入库单信息的数据集。接下来,我们需要对这些数据进行清洗和初步加工,以便后续的数据转换与写入。

数据清洗步骤

  1. 字段映射与转换

    • 将返回的数据字段映射到目标系统所需的字段。例如,将返回的order_no映射为目标系统中的订单编号字段。
  2. 数据格式化

    • 确保日期、金额等字段符合目标系统要求的格式。例如,将日期格式从“yyyy-MM-dd HH:mm:ss”转换为目标系统所需的格式。
  3. 异常处理

    • 对于缺失或异常的数据进行处理,例如填充默认值或记录日志以便后续排查。

示例代码

以下是一个示例代码片段,用于展示如何通过Python脚本实现上述过程:

import requests
import json
from datetime import datetime

# 设置请求URL和头部信息
url = 'https://api.wangdian.cn/openapi2/wdt.stockin.order.query.purchase'
headers = {'Content-Type': 'application/json'}

# 设置请求参数
params = {
    'start_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    'end_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    'status': '80',
    'page_size': '40',
    'page_no': '0'
}

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

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与转换
    cleaned_data = []
    for item in data['orders']:
        cleaned_item = {
            '订单编号': item['order_no'],
            '仓库编号': item['warehouse_no'],
            # 更多字段映射...
        }
        cleaned_data.append(cleaned_item)

    # 输出清洗后的数据
    print(json.dumps(cleaned_data, indent=4, ensure_ascii=False))
else:
    print(f"请求失败,状态码: {response.status_code}")

通过上述步骤,我们成功地从旺店通·企业奇门接口获取了采购入库单数据,并进行了初步清洗和加工,为后续的数据转换与写入奠定了基础。 用友与SCM系统接口开发配置

轻易云数据集成平台:将采购入库单数据转换并写入金蝶云星空API接口

在轻易云数据集成平台上,完成数据集成生命周期的第二步,即将已经集成的源平台数据进行ETL转换,并写入目标平台金蝶云星空API接口,是一个关键环节。本文将详细探讨如何通过元数据配置,将旺店通的采购入库单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。

数据请求与清洗

在进行ETL转换之前,首先需要从源系统(旺店通)获取采购入库单的数据。假设我们已经完成了数据请求与清洗阶段,获得了如下结构的数据:

{
  "order_no": "PO123456",
  "provider_no": "P001",
  "check_time": "2023-10-01",
  "operator_name": "张三",
  "warehouse_no": "WH001",
  "details_list": [
    {
      "spec_no": "M001",
      "goods_count": 100,
      "price": 10.5,
      "tax_price": 11.5,
      "tax": 13,
      "remark": ""
    },
    {
      "spec_no": "M002",
      "goods_count": 200,
      "price": 0,
      "tax_price": 0,
      "tax": 13,
      "remark": ""
    }
  ]
}

数据转换与写入

为了将上述数据转换为金蝶云星空API接口所能接收的格式,我们需要按照元数据配置进行映射和转换。以下是详细的元数据配置解析及其应用。

元数据配置解析
{
  ...
}
  1. 基本字段映射

    • FBillTypeID: 单据类型,固定值RKD01_SYS
    • FBillNo: 单据编号,对应源数据中的order_no
    • FSupplierId: 供应商,对应源数据中的provider_no,使用ConvertObjectParser进行解析。
    • FDate: 入库日期,对应源数据中的check_time
    • FBZ: 固定值“旺店通采购入库单”。
    • FZDR: 制单人,对应源数据中的operator_name
  2. 明细信息映射

    明细信息包含多个字段,每个字段都需要对应到源数据中的具体值:

    • FMaterialId: 物料编码,对应源数据中明细列表的spec_no,使用ConvertObjectParser进行解析。
    • FRealQty: 实收数量,对应源数据中明细列表的goods_count
    • FPrice: 单价,对应源数据中明细列表的price
    • FStockId: 仓库,对应源数据中的warehouse_no,使用ConvertObjectParser进行解析。
    • FGiveAway: 是否赠品,通过判断价格是否为0来确定,使用CASE语句实现。
    • FTaxPrice: 含税单价,对应源数据中明细列表的tax_price
    • FSHUILV: 旺店通税率,对应源数据中明细列表的tax
    • FOWNERID: 固定值“100”。
    • FNote: 备注,对应源数据中明细列表的remark.
  3. 其他请求参数

    除了上述字段外,还需要一些额外的请求参数来确保接口调用成功:

    • FormId: 固定值“STK_InStock”。
    • Operation: 固定值“Save”。
    • IsAutoSubmitAndAudit: 固定值“true”。
    • IsVerifyBaseDataField: 固定值“false”。
    • SubSystemId: 固定值“21”。
数据组装与写入

根据上述元数据配置,我们可以组装出符合金蝶云星空API接口要求的数据结构:

{
  "FormId":"STK_InStock",
  "Operation":"Save",
  ...
}

通过HTTP POST方法,将上述组装好的JSON对象发送到金蝶云星空API接口,实现最终的数据写入。

总结

通过轻易云数据集成平台,我们能够高效地将旺店通的采购入库单数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。这不仅提高了系统间的数据流动性和一致性,还极大地提升了业务处理效率。 打通企业微信数据接口

更多系统对接方案