从旺店通到金蝶云星辰V2的数据对接技术详解

  • 轻易云集成顾问-李国敏

旺店通·企业奇门数据集成到金蝶云星辰V2:采购订单V2.0技术实现

在本文中,我们将详细介绍如何通过轻易云数据集成平台,实现旺店通·企业奇门的采购订单数据与金蝶云星辰V2的对接。具体方案名称为:采购订单V2.0。该解决方案旨在确保跨系统的数据传输不仅高效快速,而且准确可靠。

1. 确保集成旺店通·企业奇门数据不漏单

首先,我们使用 wdt.purchase.order.query 接口来抓取旺店通·企业奇门中的采购订单数据。为了保证不会遗漏任何一个订单,采用了定时任务机制,每隔一定时间自动调用接口获取增量更新的数据,并记录上一次成功抓取的位置。这种方式不仅能有效避免重复读取,也能确保新产生的所有交易数据都被捕获。

2. 大量数据快速写入到金蝶云星辰V2

面对大量的数据,需要精心设计批处理策略,以提高写入效率。在实现过程中,通过将拉取到的原始交易记录进行适当分组和预处理后,再调用金蝶云星辰V2的 /jdy/v2/scm/pur_order API 完成交付。此外,通过调整API请求参数及并发数量,充分利用系统资源,将批次处理速度提升至最优状态。

3. 如何调用旺店通·企业奇门接口 wdt.purchase.order.query

每次请求 wdt.purchase.order.query 时,需注意接口提供的一些关键参数,如时间区间、页码等。在实际操作中,一般会设置合理分页大小,逐页循环获取直到无更多页面可读。同时,还需要配置异常重试机制,当某一次查询失败时,可恢复上次位置重新启动,以此降低因网络或服务器问题带来的影响。

4. 金蝶云星辰V2定制化数据映射对接

要向金蝶云星辰V2 推送采购订单信息,需要根据其特定的数据格式要求,对拿到的数据进行转换和映射。例如,把不同字段对应关系配置清楚,并依据业务规则补充必要信息,以匹配目标系统所需结构。这一阶段是整个流程是否顺畅的重要保障,因此需要格外关注细节和准确性。

以上是本案例开头部分,希望大家能够从中了解我们整体解决思路。随后的章节中,我们将继续探讨如何处理分页限流问题、错误重试机制以及实时监控与日志记录等内容。 打通企业微信数据接口

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

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

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,可以看到我们需要使用POST方法来请求wdt.purchase.order.query接口。以下是具体的请求参数配置:

  • 开始时间 (start_time): 这是一个字符串类型字段,用于指定查询的起始时间。其值可以动态设置为上次同步时间 {{LAST_SYNC_TIME|datetime}}
  • 结束时间 (end_time): 同样是字符串类型字段,用于指定查询的结束时间。其值可以动态设置为当前时间 {{CURRENT_TIME|datetime}}
  • API单号 (outer_no): 外部创建采购单推送的单号,传该字段可以不传开始时间和结束时间。
  • 采购单号 (purchase_no): ERP系统采购单编号,传该字段可以不传开始时间和结束时间。
  • 采购单状态 (status): 字符串类型字段,用于过滤不同状态的采购单。例如,10表示已取消,20表示编辑中等。不传默认查询全部状态采购单。
  • 仓库编码 (warehouse_no): 用于指定仓库编码。

此外,还有分页相关的参数:

  • 分页大小 (page_size): 每页返回的数据条数,默认值为40,可以根据需要调整。
  • 页号 (page_no): 页码,从0页开始。

数据请求与清洗

在完成接口调用配置后,我们需要处理返回的数据。这一步主要包括数据清洗和格式转换。

  1. 检查ID重复性:根据元数据配置中的idCheck参数,我们需要确保每条记录的唯一性。这里使用的是purchase_id作为唯一标识符。

  2. 格式化响应数据:根据元数据中的formatResponse配置,我们需要对返回的数据进行格式化处理。例如,将原始字段 check_time 转换为新的字段 check_time_new 并格式化为日期类型。

  3. 条件过滤:根据条件配置,我们只需处理状态大于或等于40的采购订单。这一步可以通过简单的逻辑判断来实现。

实际操作步骤

  1. 构建请求参数

    {
     "start_time": "{{LAST_SYNC_TIME|datetime}}",
     "end_time": "{{CURRENT_TIME|datetime}}",
     "page_size": 100,
     "page_no": 0,
     "status": "40"
    }
  2. 发送请求并接收响应: 使用POST方法将上述参数发送到wdt.purchase.order.query接口,并接收响应数据。

  3. 处理响应数据

    • 检查每条记录是否有重复ID。
    • 格式化日期字段,将 check_time 转换为 check_time_new
    • 根据条件过滤出符合要求的记录。
  4. 示例代码实现(伪代码)

    import requests
    from datetime import datetime
    
    # 构建请求参数
    params = {
       "start_time": get_last_sync_time(),
       "end_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
       "page_size": 100,
       "page_no": 0,
       "status": "40"
    }
    
    # 发送请求
    response = requests.post("https://api.wangdiantong.com/wdt.purchase.order.query", data=params)
    
    if response.status_code == 200:
       data = response.json()
    
       # 数据清洗与格式化
       for record in data['orders']:
           if not is_duplicate(record['purchase_id']):
               record['check_time_new'] = format_date(record['check_time'])
               if int(record['status']) >= 40:
                   process_record(record)
    
    def get_last_sync_time():
       # 获取上次同步时间的逻辑
       pass
    
    def is_duplicate(purchase_id):
       # 检查ID重复性的逻辑
       pass
    
    def format_date(date_str):
       # 日期格式化逻辑
       return datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")
    
    def process_record(record):
       # 处理符合条件的记录逻辑
       pass

通过以上步骤,我们成功地从旺店通·企业奇门接口获取并加工了采购订单数据,为后续的数据转换与写入打下了坚实基础。这一过程不仅确保了数据的一致性和准确性,还提高了整体业务流程的透明度和效率。 打通用友BIP数据接口

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

在数据集成的过程中,将已经集成的源平台数据进行ETL转换,并将其转为目标平台金蝶云星辰V2API接口所能够接收的格式,是关键的一步。本文将详细探讨如何利用轻易云数据集成平台的元数据配置,完成这一过程。

数据请求与清洗

在数据请求与清洗阶段,我们已经从源系统获取了采购订单的数据。接下来,我们需要将这些数据进行转换,以符合金蝶云星辰V2API接口的要求。

数据转换与写入

使用轻易云数据集成平台,我们可以通过配置元数据来实现这一过程。以下是具体的元数据配置:

{
  "api": "/jdy/v2/scm/pur_order",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "1",
  "id": "1",
  "name": "1",
  "idCheck": true,
  "request": [
    {"field":"bill_no","label":"单据编码","type":"string","value":"{purchase_no}"},
    {"field":"bill_date","label":"出库日期","type":"string","value":"{modified}"},
    {"field":"supplier_id","label":"供应商编码","type":"string","value":"_mongoQuery b073f5fa-5f89-395a-b289-3032f2b03051 findField=content.id where={\"content.number\": {\"$eq\":\"{provider_no}\"}}"},
    {"field":"remark","label":"备注","type":"string","value":"{remark}"},
    {"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":"stock_id","label":"仓库","type":"string","value":"_findCollection find id from 9cf5314a-709f-3e72-b021-c9edae06888f where number={warehouse_no}"},
        {"field":"qty","label":"数量","type":"string","value":"{{details_list.num}}"},
        {"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":"tax_price","label":"含税单价","type":"string","value":"{{details_list.tax_price}}"},
        {"field":"cess","label":"税率","type":"string","value":"_function  {{details_list.tax}} * (100)"}
      ]
    }
  ]
}

以上配置包含了以下几个关键部分:

  1. API路径和方法:指定了目标平台的API路径/jdy/v2/scm/pur_order和HTTP方法POST
  2. 基本字段映射
    • bill_no 对应 purchase_no
    • bill_date 对应 modified
    • supplier_id 使用 _mongoQuery 方法从MongoDB查询供应商编码。
    • remark 对应 remark
    • operation_key 固定为 audit
  3. 商品分录(material_entity)
    • 每个商品分录包括多个字段,如 material_id, stock_id, qty, unit_id, tax_price, 和 cess
    • 使用 _mongoQuery_findCollection 方法从不同的数据源查询相应字段值。
    • 特别注意的是,税率(cess)字段使用了 _function 方法进行计算,将原始税率乘以100以符合目标平台要求。

实际应用案例

假设我们有如下源系统的数据:

{
  "purchase_no": "PO123456",
  "modified": "2023-10-01T12:00:00Z",
  "provider_no": "SUP001",
  "remark": "紧急采购订单",
  "details_list": [
    {
      "goods_no": "G001",
      "warehouse_no": "WH001",
      "num": 100,
      "tax_price": 50.0,
      "tax": 0.13
    }
  ]
}

通过上述元数据配置,我们可以将其转换为目标平台所需的格式,并通过API接口写入金蝶云星辰V2系统。

转换后的JSON请求体示例如下:

{
  "bill_no": "PO123456",
  "bill_date": "2023-10-01T12:00:00Z",
  "supplier_id": "<resolved_supplier_id>",
  "remark": "紧急采购订单",
  "operation_key": "audit",
  "material_entity": [
    {
      "material_id": "<resolved_material_id>",
      "stock_id": "<resolved_stock_id>",
      "qty": 100,
      "unit_id": "<resolved_unit_id>",
      "tax_price": 50.0,
      "$cess$" :13.0
    }
  ]
}

其中, <resolved_supplier_id>, <resolved_material_id>, <resolved_stock_id>, 和 <resolved_unit_id> 是通过查询和映射得到的实际值。

通过这种方式,我们实现了源系统到目标系统的数据无缝对接,确保每个字段都能正确映射并写入到金蝶云星辰V2中。 企业微信与ERP系统接口开发配置

更多系统对接方案