利用轻易云集成金蝶云星空和旺店通的详细技术方案

  • 轻易云集成顾问-胡秀丛

旺店通销售出库单集成到金蝶云星空的技术实现

在本案例中,我们将分享如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据无缝对接至金蝶云星空,具体涉及将销售出库单(渠道关联)信息成功迁移到金蝶系统中。为了确保整个过程高效、可靠且透明,对各项技术细节进行了优化与详细配置。

首先,我们需要调用旺店通·企业奇门提供的API接口wdt.stockout.order.query.trade来获取最新的销售出库单数据。在获取过程中,由于数据量庞大且接口有分页和限流限制,需要合理设计调度任务,定时抓取并进行缓存处理,避免漏单现象。这一步骤通过批次操作及多线程技术,大幅度提升了数据提取效率。

随后,将抓取的数据迅速写入到金蝶云星空,其中利用其提供的批量保存接口batchSave。考虑到两端系统在字段格式及结构上的差异,通过定制化的数据映射以及转换逻辑,使得传输的数据能够完美适配目标系统。同时,为解决可能发生的异常情况,如网络故障或API响应错误,实现了完善的错误重试机制,并实时监控处理过程中的所有日志记录,以确保每条数据都得到妥善处理。

下面是关键步骤和代码示例:

import requests
import json

# Step 1: Fetch data from 旺店通 using API
def fetch_wdt_data(api_url, params):
    response = requests.get(api_url, params=params)
    if response.status_code == 200:
        return response.json()
    else:
        # Implement retry mechanism or log error
        pass

# Example parameters for fetching data
params = {
    'token': 'your_api_token',
    'start_time': '2023-01-01',
}

wdt_data = fetch_wdt_data('https://api.wangdian.cn/wdtstockoutorderquerytrade', params)

# Step 2: Transform and map the fetched data to fit 金蝶's format
def transform_data(wdt_records):
    transformed_records = []
    for record in wdt_records:
        transformed_record = {
            # Map fields accordingly here...
        }
        transformed_records.append(transformed_record)

    return transformed_records

mapped_data = transform_data(wdt_data['orders'])

# Step 3: Write data into 金蝶 using batchSave API
def write_to_kingdee(api_url, token, records):
    headers = {'Content-Type': 'application/json'}

    payload = {
        "records": records,
        "token": token,
       # Other necessary parameters...
   }

   response = requests.post(api_url, headers=headers, json=payload
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image)
### 调用旺店通·企业奇门接口获取并加工数据

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`,并对获取的数据进行初步加工。

#### 接口概述

接口`wdt.stockout.order.query.trade`用于查询销售出库单信息。该接口支持POST请求,并且可以根据多种条件进行查询,例如时间范围、订单状态、店铺编号等。以下是该接口的元数据配置:

```json
{
  "api": "wdt.stockout.order.query.trade",
  "effect": "QUERY",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_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":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货","value":"95"},
    {"field":"src_order_no","label":"系统订单编号","type":"string","describe":"系统订单编号"},
    {"field":"src_tid","label":"原始单号","type":"string","describe":"原始单号"},
    {"field":"stockout_no","label":"出库单号","type":"string","describe":"出库单号"},
    {"field":"shop_no","label":"店铺编号","type":"string","describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息","value":"HBJBT01"},
    {"field":"warehouse_no","label":"仓库编号","type":"string","describe":"代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)"},
    {"field":"is_by_modified","label":"is_by_modified","type":"string","describe":"is_by_modified"}
  ],
  ...
}

数据请求与清洗

在调用该接口时,我们需要传递一系列参数来限定查询条件。以下是主要参数及其作用:

  • start_timeend_time: 用于限定查询的时间范围,这两个参数通常使用上次同步时间和当前时间。
  • status: 用于过滤订单状态,例如“95”表示已发货。
  • shop_no: 店铺编号,用于区分不同店铺的数据。
  • warehouse_no: 仓库编号,用于区分不同仓库的数据。

这些参数确保我们能够精确地获取所需的数据,并避免冗余信息。

数据转换与写入

在获取到原始数据后,需要对其进行一定的转换,以便写入目标系统。在这个过程中,我们通常会进行以下操作:

  1. 字段映射: 将源系统中的字段映射到目标系统中的相应字段。例如,将order_no映射到目标系统中的订单编号字段。
  2. 数据清洗: 去除无效或重复的数据,并确保数据格式符合目标系统的要求。
  3. 增量更新: 根据上次同步的时间戳,仅处理新增或更新的数据,以提高效率。

实际案例

假设我们需要从旺店通中获取某一时段内所有已发货的销售出库单,并将其写入金蝶系统。我们可以按照以下步骤进行配置和处理:

  1. 配置请求参数:

    {
     ...
     {"field": "start_time", ... , "value": "{{LAST_SYNC_TIME|datetime}}"},
     {"field": "end_time", ... , "value": "{{CURRENT_TIME|datetime}}"},
     {"field": "status", ... , "value": "95"},
     ...
    }
  2. 调用API: 使用轻易云平台提供的可视化界面配置上述参数,并发送POST请求以获取数据。

  3. 处理返回结果: 对返回的数据进行字段映射和清洗,例如:

    {
     ...
     {source_field: 'order_no', target_field: 'kd_order_no'},
     {source_field: 'stockout_id', target_field: 'kd_stockout_id'},
     ...
    }
  4. 写入目标系统: 将处理后的数据通过轻易云平台写入金蝶系统,实现数据的无缝对接。

通过上述步骤,我们可以高效地完成从旺店通到金蝶系统的数据集成。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。 如何开发企业微信API接口

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台金蝶云星空API接口所能接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

1. 配置API接口

为了将数据写入金蝶云星空,我们需要配置API接口。根据提供的元数据配置,目标API为batchSave,使用POST方法提交请求。以下是关键配置:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "batchArraySave",
    "rows": 1,
    "rowsKey": "array"
  },
  ...
}

2. 数据字段映射与转换

在进行ETL转换时,需要确保源平台的数据字段能够正确映射到目标平台的字段,并进行必要的格式转换。以下是一些关键字段的配置示例:

  • 单据类型 (FBillTypeID):

    {
    "field": "FBillTypeID",
    "label": "单据类型",
    "type": "string",
    "describe": "单据类型",
    "parser": {
      "name": "ConvertObjectParser",
      "params": "FNumber"
    },
    "value": "XSCKD01_SYS"
    }
  • 单据编号 (FBillNo):

    {
    "field": "FBillNo",
    "label": "单据编号",
    "type": "string",
    "describe": "单据编号",
    "value": "{order_no}"
    }
  • 日期 (FDate):

    {
    "field": "FDate",
    "label": `日期{stock_check_time}`,
    "type": `string`,
    `describe`: `日期`,
    `value`: `{consign_time}`
    }
  • 发货组织 (FStockOrgId):

    {
      `field`: `FStockOrgId`,
      `label`: `发货组织`,
      `type`: `string`,
      `describe`: `组织`,
      `parser`: {
        `name`: `ConvertObjectParser`,
        `params`: `FNumber`
      },
      `value`: `_function case when '{warehouse_no}' in ('047','048','051') then '105' when '{warehouse_no}' in ('050','052','049','053','055','057') then '114' else '100' end`
    }

3. 明细信息处理

对于明细信息,需要特别注意数组结构和子字段的处理。例如,物料编码和实发数量等字段:

  • 物料编码 (FMaterialID):
{
   `field`: `FMaterialID`,
   `label`: `物料编码`,
   `type`: `string`,
   `describe`: `物料编码`,
   `parser`: {
     `name`: ConvertObjectParser,
     params: FNumber
   },
   value: {{details_list.goods_no}}
}
  • 实发数量 (FRealQty):
{
   field: FRealQty,
   label: 实发数量,
   type: string,
   describe: 实发数量,
   value: {{details_list.goods_count}}
}

4. 特殊字段处理

有些字段需要特殊处理,例如根据条件判断值或通过查询获取值:

  • 是否赠品 (FIsFree):
{
   field: FIsFree,
   label: 是否赠品,
   type: string,
   describe: 是否赠品,
   value: _function CASE WHEN {{details_list.sell_price}}>0 THEN 'false' ELSE 'true' END
}
  • 税率 (FEntryTaxRate):
{
   field: FEntryTaxRate,
   label: 税率,
   type: string,
   describe: 税率,
   value: _mongoQuery findField=content.FEntryTaxRate where={content.FBillNo:{eq:{src_trade_no}},content.FMaterialId_Fnumber:{eq:{details_list.goods_no}}}
}

总结

通过上述步骤,我们可以利用轻易云数据集成平台,将源平台的数据进行ETL转换,并写入到金蝶云星空API接口中。这一过程涉及多个关键技术点,包括API接口配置、数据字段映射与转换、明细信息处理以及特殊字段处理。通过合理配置元数据,可以确保数据在不同系统之间无缝对接,实现高效的数据集成。 如何开发钉钉API接口

更多系统对接方案