数据集成与ETL:从旺店通调拨单到金蝶云星空的技术实现

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

案例分享:旺店通·企业奇门数据集成到金蝶云星空

在本案例中,我们将解析一个具体的系统对接集成任务,涉及将旺店通·企业奇门中的调拨单数据高效同步至金蝶云星空。该方案名为“旺店通调拨单同步--114”,通过特定API接口实现数据的可靠抓取和批量写入。

接口概述

为了实现这一目标,我们主要使用两个关键API:

  • 旺店通·企业奇门获取数据的API:wdt.stock.transfer.query
  • 金蝶云星空写入数据的API:batchSave

数据获取与处理

首先,通过调用wdt.stock.transfer.query接口从旺店通·企业奇门系统中提取调拨单数据。为了确保高吞吐量的数据处理能力,并应对分页与限流问题,需要设计合理的数据抓取策略,例如按批次进行请求,同时使用可靠的日志记录来跟踪每次接口调用状态。

import requests

def get_transfer_data(offset, limit):
    url = "https://api.wdt.com/enterprise/query"
    params = {
        "method": "wdt.stock.transfer.query",
        "offset": offset,
        "limit": limit,
        # 其他必要参数如认证信息等...
    }

    response = requests.get(url, params=params)

    if response.status_code == 200:
        return response.json()
    else:
        # 错误处理逻辑
        pass

# 示例调用
transfer_data = get_transfer_data(0, 100)

数据转换与映射

在获得原始数据后,需要通过自定义的数据转换逻辑,将其格式调整为金蝶云星空所需的格式。这一步骤至关重要,特别是要注意字段类型和命名规范之间的差异,通过可视化的数据流设计工具,可以直观地管理这些转换规则。

def transform_to_kingdee_format(raw_data):
    transformed_data = []

    for item in raw_data["data"]:
        transformed_item = {
            "field1_in_kingdee": item["field1_in_wdt"],
            # 更多字段映射...
        }

        transformed_data.append(transformed_item)

    return {"data": transformed_data}

# 示例转换过程
transformed_result = transform_to_kingdee_format(transfer_data)

数据写入及监控配置

最后,经由转化后的数据需要利用batchSave API批量写入至金蝶云星空。在此过程中,为了确保不漏单且所有操作均有据可查,应设置实时监控机制及错误重试机制,以应对可能出现的问题,如网络波动或接口响应异常 如何对接钉钉API接口

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

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

接口调用配置

首先,我们需要配置元数据以便正确调用wdt.stock.transfer.query接口。以下是元数据配置的关键部分:

{
  "api": "wdt.stock.transfer.query",
  "method": "POST",
  "number": "transfer_no",
  "id": "transfer_id",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {"field":"start_time","label":"开始时间","type":"datetime","value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field":"end_time","label":"结束时间","type":"datetime","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"from_warehouse_no","label":"源仓库","type":"string"},
    {"field":"to_warehouse_no","label":"目标仓库","type":"string"},
    {"field":"status","label":"调拨单状态","type":"string","value":"90"}
  ],
  "otherRequest": [
    {"field":"page_size","label":"分页大小","type":"string","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"page_no","label":"页号","type":"string","value":"{PAGINATION_START_PAGE}"}
  ],
  "condition_bk": [
    [{"field": "remark", "logic": "like", "value": "114"}]
  ]
}

请求参数详解

  • 开始时间和结束时间:通过start_timeend_time字段,我们可以指定查询的时间范围。这里使用了动态变量{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}},确保每次同步时都能获取最新的数据。
  • 源仓库和目标仓库:通过from_warehouse_noto_warehouse_no字段,可以指定调拨单的源仓库和目标仓库。
  • 调拨单状态:通过设置状态为90,过滤出特定状态的调拨单。
  • 分页参数:为了处理大批量数据,设置了分页参数,包括每页大小(page_size)和页号(page_no)。

数据请求与清洗

在成功调用接口并获取数据后,需要对数据进行初步清洗。这一步骤包括但不限于以下操作:

  1. 去除冗余字段:只保留必要的字段,如调拨单号(transfer_no)、调拨单ID(transfer_id)等。
  2. 格式转换:将日期格式统一转换为标准格式,以便后续处理。
  3. 数据过滤:根据业务需求进一步过滤不符合条件的数据。例如,通过条件备份(condition_bk)中的逻辑条件,只保留备注包含“114”的记录。

实际案例

假设我们需要从2023年1月1日到2023年1月31日之间,查询所有状态为90、备注包含“114”的调拨单。具体请求参数如下:

{
  "start_time": "2023-01-01T00:00:00",
  "end_time": "2023-01-31T23:59:59",
  "status": "90",
  "remark_like": "%114%",
  "page_size": 100,
  "page_no": 1
}

通过上述配置,我们可以顺利调用接口并获取所需数据。接下来,我们需要对返回的数据进行清洗和转换,以便后续写入目标系统。

数据转换与写入

在完成数据请求与清洗后,将清洗后的数据转换为目标系统所需的格式,并写入目标系统。这一步通常包括以下操作:

  1. 字段映射:将源系统字段映射到目标系统对应字段。
  2. 数据验证:确保所有必填字段都有值,并符合目标系统的数据规范。
  3. 批量写入:为了提高效率,可以采用批量写入的方式,将处理好的数据一次性写入目标系统。

通过以上步骤,我们可以实现从旺店通·企业奇门接口到目标系统的数据无缝对接,提高业务透明度和效率。

以上就是使用轻易云数据集成平台调用旺店通·企业奇门接口获取并加工数据的详细技术流程。希望这些技术细节能为您的实际项目提供有价值的参考。 钉钉与ERP系统接口开发配置

数据集成与ETL转换:从旺店通调拨单到金蝶云星空API接口

在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将旺店通调拨单的数据通过ETL转换,最终写入金蝶云星空API接口。

API接口配置与调用

首先,我们需要了解金蝶云星空API接口的配置。根据元数据配置,目标API为batchSave,请求方法为POST。我们需要确保请求中的字段和数据格式符合金蝶云星空的要求。

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","value":"{transfer_no}-TC"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","value":"ZJDB01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FBizType","label":"业务类型","type":"string","value":"NORMAL"},
    {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"GENERAL"},
    {"field":"FTransferBizType","label":"调拨类型","type":"string","value":"InnerOrgTransfer"},
    {"field":"FStockOutOrgId","label":"调出库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"114"},
    {"field":"FOwnerOutIdHead","label":"调出货主","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"114"},
    {"field":"FStockOrgId","label":"调入库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"114"},
    {"field":"FDate","label":"日期","type":"string","value":"{created}"},
    {"field":"FNote","label":"备注","type":"string","value":"{remark}"},
    {
      "field": "FBillEntry",
      "label": "明细信息",
      "type": "array",
      "children": [
        {"field": "FMaterialId", "label": "物料编码", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{details_list.spec_no}}", "parent": "FBillEntry"},
        {"field": "FCMKBarCode", "label": "零售条形码",  "type": "string",   "parent":   "FBillEntry"},
        {"field":   "FQty", "label":    "调拨数量", "type": "string",   "value": "{{details_list.num}}",    "parent":   "FBillEntry"},
        {"field":   "FSrcStockId",  "label":    "调出仓库", "type": "string",   "parser":{"name":   "ConvertObjectParser",  "params":   "FNumber"}, "value": "{from_warehouse_no}", "parent":   "FBillEntry"},
        {"field":   "FDestStockId", "label":    "调入仓库", "type": "string",   "value: "{to_warehouse_no}",    parser: {name: ConvertObjectParser, params: FNumber},   parent: FBillEntry},
        { field: FNoteEntry, label: 备注, type: string, value: {{details_list.remark}}, parent: FBillEntry },
        { field: FISFREE, label: 赠品, type: string, parent: FBillEntry }
      ],
      value: details_list
    }
  ],
  otherRequest:[
   { field:"FormId", label:"业务对象表单Id", type:"string", value:"STK_TransferDirect"},
   { field:"IsAutoSubmitAndAudit", label:"提交并审核", type:"bool", value:"true"},
   { field:"IsVerifyBaseDataField", label:"验证基础资料", type:"bool", value:"true"},
   { field:"Operation", label:"执行的操作", type:"string", value:"Save"}
 ]
}

数据转换与清洗

在数据转换过程中,我们需要对源平台的数据进行清洗和格式化,以满足目标平台的需求。例如,将旺店通的字段映射到金蝶云星空所需的字段,并进行必要的格式转换。

  1. 单据编号(FBillNo)

    • 来源字段:transfer_no
    • 转换规则:在原始编号后添加后缀-TC
  2. 单据类型(FBillTypeID)

    • 固定值:ZJDB01_SYS
    • 使用解析器ConvertObjectParser进行对象转换
  3. 业务类型(FBizType)

    • 固定值:NORMAL
  4. 调拨方向(FTransferDirect)

    • 固定值:GENERAL
  5. 日期(FDate)

    • 来源字段:created
  6. 备注(FNote)

    • 来源字段:remark
  7. 明细信息(FBillEntry)

    • 包含多个子字段,如物料编码、零售条形码、调拨数量等,每个子字段都需要对应源数据进行映射和转换。

数据写入

完成数据清洗和转换后,即可将处理后的数据通过API接口写入到金蝶云星空。以下是一个示例请求体:

{
  FormId: 'STK_TransferDirect',
  IsAutoSubmitAndAudit: true,
  IsVerifyBaseDataField: true,
  Operation: 'Save',
  array:[
     {
       FBillNo:'12345-TC',
       FBillTypeID:{ FNumber:'ZJDB01_SYS'},
       FBizType:'NORMAL',
       FTransferDirect:'GENERAL',
       FTransferBizType:'InnerOrgTransfer',
       FStockOutOrgId:{ FNumber:'114'},
       FOwnerOutIdHead:{ FNumber:'114'},
       FStockOrgId:{ FNumber:'114'},
       FDate:'2023-10-01',
       FNote:'This is a remark.',
       FBillEntry:[
         {
           FMaterialId:{ FNumber:'SPEC001'},
           FCMKBarCode:'',
           FQty:'100',
           FSrcStockId:{ FNumber:'WH001'},
           FDestStockId:{   FNumber:'WH002'},
            FNoteEntry:'',
            FISFREE:''
         }
       ]
     }
   ]
}

通过上述步骤,我们实现了从旺店通到金蝶云星空的数据ETL转换,并成功将处理后的数据写入目标平台。这一过程不仅提升了数据处理效率,还确保了数据的一致性和准确性。 金蝶与CRM系统接口开发配置

更多系统对接方案