企业系统集成:实现旺店通与金蝶云星辰数据互联

  • 轻易云集成顾问-曹润

案例分析:旺店通·企业奇门数据集成至金蝶云星辰V2

在众多系统对接需求中,电商平台与ERP系统之间的数据集成尤为关键。本文将详细解析如何高效地将“旺店通·企业奇门”的调拨单数据无缝对接至“金蝶云星辰V2”,并重点分享实现过程中的技术要点及解决方案。

案例背景

项目需要通过接口wdt.stock.transfer.query定时从旺店通·企业奇门抓取最新的调拨单数据,并快速而准确地写入到金蝶云星辰V2的API /jdy/v2/scm/inv_tfout 中。在此过程中,我们面临着分页限流处理、数据格式转换、实时监控以及异常重试等技术挑战。

数据获取与处理机制

  1. 调用旺店通·企业奇门API:

    • 首先,通过接口 wdt.stock.transfer.query 实现定时可靠的数据抓取。
    • 需要特别注意接口的分页和限流问题,以确保不会遗漏任何一条调拨单记录。同时,为应对大规模请求可能带来的性能问题,需进行合理的频率控制。
  2. 数据格式转换:

    • 旺店通返回的数据格式需与金蝶云预期的数据结构进行匹配。这涉及复杂的数据映射工作,包括字段名称、类型及层级关系的转换。
  3. 批量写入至金蝶云星辰V2

    • 为优化效率,采用批量写入方式,将转化后的调拨单以较快速度插入到目标系统中。
    • 在调用 /jdy/v2/scm/inv_tfout 时,通过封装请求,实现自动化处理和错误捕捉,提高整体稳定性。
  4. 实时监控和日志记录

    • 利用可视化操作界面,对整个数据处理流程进行全程监控。如有异常情况发生(例如网络波动或第三方服务故障),触发相应警报机制予以识别和响应。
  5. 异常处理与重试机制:

    • 开发完善的错误追踪和重试策略,对于因意外导致未能成功导入的数据,制定有效且安全的补救措施。同时保持详尽的日志记录,以便后续排查定位问题源头。

通过上述步骤,高效集成了两大平台间的大量业务节点,为用户提供了稳定可靠的信息互联体验。在接下来的内容中,将进一步深入剖析每一个环节中的具体实施细节,以及遇到的问题及其解决方案。 打通用友BIP数据接口

调用源系统旺店通·企业奇门接口wdt.stock.transfer.query获取并加工数据

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

接口调用配置

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

  • API: wdt.stock.transfer.query
  • Method: POST
  • Pagination: 支持分页,每页返回的数据条数范围为1到100。
  • ID Check: true,表示需要检查返回数据中的唯一标识符。

请求参数

请求参数是调用API时必须提供的内容,用于指定查询条件和过滤条件。以下是主要的请求参数及其描述:

  1. start_timeend_time:

    • 类型:datetime
    • 描述:用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss
    • 示例值:{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}
  2. from_warehouse_noto_warehouse_no:

    • 类型:string
    • 描述:分别代表源仓库和目标仓库的唯一编码,用于区分不同仓库的数据。
  3. status:

    • 类型:string
    • 描述:调拨单状态,不传该字段默认返回全部状态的单据。
    • 示例值:90(调拨完成)
  4. transfer_no:

    • 类型:string
    • 描述:单号,用于精确查询特定调拨单。
  5. page_sizepage_no:

    • 类型:string
    • 描述:分页参数,分别表示每页返回的数据条数和页号。
    • 示例值:{PAGINATION_PAGE_SIZE}{PAGINATION_START_PAGE}

数据请求与清洗

在配置好元数据后,我们可以通过轻易云平台发送POST请求来获取调拨单数据。以下是一个示例请求体:

{
  "start_time": "2023-01-01 00:00:00",
  "end_time": "2023-01-31 23:59:59",
  "from_warehouse_no": "WH001",
  "to_warehouse_no": "WH002",
  "status": "90",
  "page_size": 100,
  "page_no": 0
}

响应结果将包含符合条件的调拨单信息。为了确保数据质量,需要对返回的数据进行清洗和验证。例如:

  1. 字段验证: 确保每个调拨单都有唯一标识符(如transfer_id)和必填字段(如transfer_no)。

  2. 数据格式转换: 将日期时间字段转换为统一格式,以便后续处理。

  3. 异常处理: 对于缺失或异常的数据进行标记或剔除,以保证整体数据的一致性和可靠性。

数据转换与写入

在完成初步的数据清洗后,可以将处理后的数据转换为目标系统所需的格式,并写入目标数据库或系统。在此过程中,可以利用轻易云平台提供的多种工具和功能,如映射、转换规则等,实现高效的数据处理。

例如,将清洗后的调拨单信息写入金蝶系统时,可以根据金蝶系统的要求,对字段进行重新命名或格式调整,并通过API接口将数据推送到金蝶系统中。

通过以上步骤,我们可以实现从旺店通到金蝶系统的数据无缝对接,确保每个环节都透明可控,提高业务效率和准确性。 金蝶与SCM系统接口开发配置

使用轻易云数据集成平台实现旺店通到金蝶云星辰V2的调拨单ETL转换

在数据集成生命周期的第二阶段,我们将重点探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星辰V2 API接口所能够接收的格式,并最终写入目标平台。本文将详细介绍如何配置和使用元数据,以实现这一过程。

配置元数据

首先,我们需要了解金蝶云星辰V2 API接口的元数据配置。以下是我们需要配置的字段及其描述:

{
  "api": "/jdy/v2/scm/inv_tfout",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "bill_date", "label": "出库日期,格式:2019-01-01", "type": "string", "describe": "出库日期,格式:2019-01-01", "value": "{{created|date}}"},
    {"field": "dept_id", "label": "调入部门", "type": "string", "describe": "调入部门"},
    {"field": "out_dept_id", "label": "调出部门", "type": "string", "describe": "调出部门"},
    {"field": "remark", "label": "单据备注", "type": "string", "describe": "单据备注"},
    {"field": "trans_fer_status", 
        "label":"调拨状态,0:未出库(默认),1:未入库,2:部分入库,3:全部入库",
        "type":"string","describe":"调拨状态,0:未出库(默认),1:未入库,2:部分入库,3:全部入库","value":"3"
    },
    {"field":"trans_type","label":"业务类型,1:同价调拨(默认),2:异价调拨","type":"string","describe":"业务类型,1:同价调拨(默认),2:异价调拨","value":"1"},
    {"field":"material_entity","label":"商品分录","type":"array","describe":"商品分录","children":[
      {"field":"material_id","label":"商品","type":"string","describe":"商品",
        "value":"_findCollection find id from 1fbda962-66f8-3cba-914f-26119e235199 where number={{details_list.spec_no}}",
        "parent":"material_entity"
      },
      {"field":"in_stock_id","label":"调入仓库","type":"string","describe":"调入仓库",
        "value":"_findCollection find id from 5b656ff0-ec9e-3dd3-be0e-c505c356836d where name={to_warehouse_name}",
        "parent":"material_entity"
      },
      {"field":"in_sp_id","label":"调入仓位,启用了仓位管理则必填","type":"string","describe":"调入仓位,启用了仓位管理则必填","parent":"material_entity"},
      {"field":"out_stock_id","label":"调出仓库","type":"string","describe":"调出仓库",
        "value":"_findCollection find id from 5b656ff0-ec9e-3dd3-be0e-c505c356836d where name={from_warehouse_name}",
        "parent":"material_entity"
      },
      {"field":"out_sp_id","label":"调出仓位,启用了仓位管理则必填","type":"string","describe":"调出仓位,启用了仓位管理则必填","parent":
        "material_entity"
      },
      {"field":
        "aux_prop_id",
        "label":
        "辅助属性;辅助属性商品必填",
        "type":
        "string",
        "describe":
        "辅助属性;辅助属性商品必填",
        "parent":
        "material_entity"
      },
      {"field":
        "batch_no",
        "label":
        "批次号,批次商品必填",
        "type":
        "string",
        "describe":
        "批次号,批次商品必填",
        "value":
        "{{details_list.batch_no}}",
        "parent":
        "material_entity"
      },
      {"field":
        "pro_place",
        label:
              产地,
            type:
              string,
            describe:
              产地,
            parent:
              material_entity
      },
      {
         field: pro_reg_no,
         label: 生产许可证号,
         type: string,
         describe: 生产许可证号,
         parent: material_entity
      },
      {
         field: pro_license,
         label: 注册许可证号,
         type: string,
         describe: 注册许可证号,
         parent: material_entity
      },
      {
         field: qty,
         label: 数量,
         type: string,
         describe: 数量,
         value: {{details_list.num}},
         parent: material_entity
      }
    ], value:"details_list"}
  ]
}

数据清洗与转换

在进行ETL转换时,我们需要确保从旺店通获取的数据能够符合金蝶云星辰V2 API接口所要求的格式。这包括对字段的映射、数据类型的转换以及必要的数据清洗。

  1. 字段映射

    • bill_date 映射为 created 字段并转换为日期格式。
    • dept_idout_dept_id 分别对应于源数据中的相应字段。
    • remark 对应于源数据中的备注信息。
    • trans_fer_status 固定为 3 表示全部入库。
    • trans_type 固定为 1 表示同价调拨。
  2. 数组处理

    • 对于 material_entity 字段,需要遍历源数据中的 details_list 列表,并对每个子项进行相应字段的映射和转换。
  3. 查找与替换

    • 使用 _findCollection 方法从指定集合中查找对应的ID,例如通过 spec_no 查找 material_id

示例代码

以下是一个示例代码片段,用于实现上述ETL转换逻辑:

import requests
import json

# 假设我们已经从旺店通获取了源数据
source_data = {
    # 源数据结构...
}

# 构建请求体
request_body = {
    'bill_date': source_data['created'].strftime('%Y-%m-%d'),
    'dept_id': source_data['dept_in'],
    'out_dept_id': source_data['dept_out'],
    'remark': source_data['remark'],
    'trans_fer_status': '3',
    'trans_type': '1',
    'material_entity': []
}

for item in source_data['details_list']:
    material = {
        'material_id': find_collection('1fbda962-66f8-3cba-914f-26119e235199', item['spec_no']),
        'in_stock_id': find_collection('5b656ff0-ec9e-3dd3-be0e-c505c356836d', item['to_warehouse_name']),
        'out_stock_id': find_collection('5b656ff0-ec9e-3dd3-be0e-c505c356836d', item['from_warehouse_name']),
        'batch_no': item['batch_no'],
        'qty': item['num']
    }
    request_body['material_entity'].append(material)

# 发起POST请求
response = requests.post(
    url='https://api.kingdee.com/jdy/v2/scm/inv_tfout',
    headers={'Content-Type': 'application/json'},
    data=json.dumps(request_body)
)

# 检查响应状态码和内容
if response.status_code == 200:
    print("Data successfully written to Kingdee Cloud.")
else:
    print(f"Failed to write data. Status code: {response.status_code}, Response content: {response.content}")

总结

通过上述步骤,我们成功地将旺店通的数据进行了清洗和转换,使其符合金蝶云星辰V2 API接口的要求,并最终完成了数据写入。该过程展示了如何利用轻易云数据集成平台提供的元数据配置,实现不同系统间的数据无缝对接。 企业微信与OA系统接口开发配置

更多系统对接方案