通过轻易云实现旺店通与金蝶云的数据ETL转换和对接

  • 轻易云集成顾问-贺强

旺店通销售退货单-金蝶销售退货单【20230515】数据集成方案

在本案例中,我们将探讨如何实现旺店通·旗舰奇门的数据与金蝶云星空系统的无缝对接,具体针对销售退货单业务场景。这个过程中我们将使用轻易云数据集成平台,通过其强大的元数据管理能力和全透明可视化操作界面,以确保每一个环节都高效且清晰。

首先,考虑到需要从旺店通·旗舰奇门获取大量的实时数据信息,我们调用了其提供的API接口 wdt.wms.stockin.refund.querywithdetail 。通过该接口,可以定时可靠地抓取所需的销售退货单详细信息,这为后续的数据处理奠定了坚实基础。

为了应对可能出现的分页和限流问题,在访问此API时我们特别注重处理这些情况,确保数据完整性和下载速度。在获取到初步的数据之后,还需要对其进行预处理,包括格式调整、字段映射、以及必要的信息校验。这是因为旺店通·旗舰奇门与金蝶云星空之间存在着一定的数据格式差异,不做转换直接写入将导致一系列的问题。

随后,将经过预处理后的数据迅速批量写入到金蝶云星空系统。这一步主要借助于金蝶提供的batchSave API接口,它能够高效地处理大容量的数据写入任务。同时,结合轻易云平台的监控功能,实现整个过程包括异常情况的实时日志记录,并具备错误重试机制以保障业务流程不中断。

另外,通过自定义脚本来实现特定需求下的数据映射,对接中不符合标准规范或特殊要求的数据条目加以特殊标记并分类储存。在这一过程中,需要密切注意一些细节,比如字段类型匹配、必填项验证等,以防止因小失误而造成整体集成失败。

本文开头部分分享的是技术实施中的关键步骤及重要考量点。详细内容将在后续章节中逐步展开,包括实际代码示例、运行日志分析,以及不同场景下优化策略等,希望能对读者有所启发。 企业微信与ERP系统接口开发配置

使用轻易云数据集成平台调用旺店通·旗舰奇门接口获取并加工数据

在数据集成的生命周期中,第一步是从源系统获取数据。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail来获取销售退货单的详细信息,并对数据进行初步加工。

接口调用配置

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

{
  "api": "wdt.wms.stockin.refund.querywithdetail",
  "method": "POST",
  "number": "order_no",
  "id": "order_no",
  "idCheck": true,
  "request": [
    {
      "field": "pager",
      "label": "分页参数",
      "type": "object",
      "children": [
        {
          "field": "page_size",
          "label": "分页大小",
          "type": "string",
          "value": "50",
          "parent": "pager"
        },
        {
          "field": "page_no",
          "label": "页号",
          "type": "string",
          "value": "1",
          "parent": "pager"
        }
      ]
    },
    {
      "field": "params",
      "label": "业务参数",
      "type": "object",
      "children": [
        {
          "field": "start_time",
          ...

请求参数解析

在请求参数中,主要包含两个部分:分页参数和业务参数。

  1. 分页参数

    • page_size: 每页返回的数据条数,这里设置为50。
    • page_no: 当前页码,从1开始。
  2. 业务参数

    • start_timeend_time: 分别表示查询的开始时间和结束时间,使用动态变量{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}来自动填充。
    • status: 入库单状态,这里我们查询的是已完成状态(80)。
    • time_type: 时间条件类型,0表示修改时间,1表示入库时间。
    • warehouse_no: 仓库编码。
    • shop_nos: 店铺编号,可以用英文逗号分隔多个店铺编号。

数据请求与清洗

在配置好请求参数后,我们通过POST方法调用该接口获取数据。获取的数据通常是JSON格式,需要进行初步清洗以便后续处理。以下是一个示例代码片段,用于调用接口并处理返回的数据:

import requests
import json
from datetime import datetime

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

# 构建请求体
payload = {
    'pager': {
        'page_size': '50',
        'page_no': '1'
    },
    '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',
        'time_type': '0',
        'warehouse_no': '',
        'shop_nos': ''
    }
}

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

# 检查响应状态码并处理返回的数据
if response.status_code == 200:
    data = response.json()
    # 数据清洗逻辑,例如去除无效字段、格式化日期等
else:
    print(f"Error: {response.status_code}")

数据转换与写入

在完成数据清洗后,我们需要将其转换为目标系统所需的格式,并写入到目标系统中。这一步通常涉及到字段映射、数据类型转换等操作。例如,将旺店通的销售退货单数据转换为金蝶系统所需的格式。

def transform_data(data):
    transformed_data = []
    for item in data['orders']:
        transformed_item = {
            'order_no': item['order_no'],
            'warehouse_code': item['warehouse_no'],
            # 更多字段映射...
        }
        transformed_data.append(transformed_item)
    return transformed_data

# 将转换后的数据写入目标系统(例如金蝶)
def write_to_target_system(transformed_data):
    # 实现写入逻辑,例如通过API调用或数据库插入操作
    pass

# 调用转换函数并写入目标系统
transformed_data = transform_data(data)
write_to_target_system(transformed_data)

通过上述步骤,我们实现了从旺店通·旗舰奇门接口获取销售退货单详细信息,并对其进行初步加工,为后续的数据处理奠定基础。在实际应用中,还可以根据具体需求进一步优化和扩展这些操作。 金蝶与MES系统接口开发配置

使用轻易云数据集成平台将旺店通销售退货单转换并写入金蝶云星空API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据(如旺店通销售退货单)进行ETL转换,最终写入目标平台金蝶云星空API接口。

1. 数据请求与清洗

首先,我们需要从源平台获取销售退货单的数据。假设我们已经完成了数据请求和初步清洗,接下来我们将重点放在数据的转换和写入上。

2. 数据转换与写入

为了将数据转换为金蝶云星空API接口能够接收的格式,我们需要配置元数据。以下是一个详细的元数据配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 20,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZJDB07_SYS"},
    {"field":"FBizType","label":"业务类型","type":"string","describe":"下拉列表","value":"NORMAL"},
    {"field":"FTransferDirect","label":"调拨方向","type":"string","describe":"下拉列表","value":"GENERAL"},
    {"field":"FTransferBizType","label":"调拨类型","type":"string","describe":"下拉列表","value":"InnerOrgTransfer"},
    {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no}"},
    {"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no}"},
    {"field":"FStockOutOrgId","label":"调出库存组织","type":"string","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    ...
  ],
  "otherRequest":[
    {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "", "value": ""},
    ...
  ]
}

以上配置中,request部分定义了每个字段的映射关系及其对应的值来源。例如:

  • FBillNo 对应源数据中的 {order_no}
  • FBillTypeID 固定为 "ZJDB07_SYS",并通过 ConvertObjectParser 转换。
  • FSaleOrgIdFSettleOrgId 使用 _findCollection 方法,根据 shop_no 查找相应的组织编码。

3. 明细信息处理

对于包含明细信息的字段,如 FBillEntry,我们需要进一步配置其子字段:

{
  "field": "FBillEntry",
  "label": "明细信息",
  ...
  "children":[
    {"field": "FMaterialId", ...},
    {"field": "", ...},
    ...
  ]
}

其中,FMaterialId 对应的是物料编码,通过 ConvertObjectParser 转换为金蝶系统识别的编码格式。

4. API调用与数据提交

配置完成后,通过调用金蝶云星空的批量保存接口(如 batchSave),将转换后的数据提交到目标平台。具体调用方法如下:

import requests

url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
   # 根据元数据配置生成的数据
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
   print("Data successfully written to Kingdee Cloud")
else:
   print("Failed to write data:", response.content)

通过上述步骤,我们可以确保源平台的数据经过ETL转换后,成功写入到金蝶云星空,实现不同系统间的数据无缝对接。 用友BIP接口开发配置

更多系统对接方案