高效实现双系统数据交互:从旺店通到金蝶云星辰V2

  • 轻易云集成顾问-姚缘

其他入库(其他)V2.0:旺店通·企业奇门数据集成到金蝶云星辰V2的技术分享

在实施系统对接和数据集成时,确保数据的准确性和高效传输是至关重要的。在这篇文章中,我们将重点探讨如何利用API接口将旺店通·企业奇门的数据高效、安全地集成到金蝶云星辰V2。具体案例命名为“其他入库(其他)V2.0”。

首先,通过调用旺店通·企业奇门的wdt.stockin.order.query接口,我们可以获取所需的数据。这一接口支持分页查询,因此需要处理相应的分页逻辑和限流问题,以避免请求过载。同时,为了确保不漏单,每次抓取都必须精确记录上一次同步的位置,并设置定时抓取机制以保证数据实时更新。

在获取旺店通的数据后,下一步就是快速、大量地写入到金蝶云星辰V2,这里我们使用的是其提供的/jdy/v2/scm/inv_other_in API进行写操作。为了匹配两端的数据格式,需要先进行必要的数据转换与映射。这包括字段对应关系、值域校正等细节工作,使之符合目标系统的要求。

此外,在实际操作中,对接过程中的异常处理与错误重试机制也是必须考虑的一部分。当调用API出现失败或返回错误信息时,应及时捕获并进行日志记录,并根据预设条件自动重试,以尽可能降低人工干预频率,提高系统稳定性。

通过这些配置,不仅能有效解决双系统之间的数据传递,还能实现业务流程全透明化管理,大幅提升整体运行效率。以下章节将详细介绍各个步骤及代码实现,请继续阅读了解更多技术细节。 如何开发金蝶云星空API接口

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query来获取并加工数据。

接口调用配置

首先,我们需要配置接口的元数据。以下是一个典型的元数据配置示例:

{
  "api": "wdt.stockin.order.query",
  "method": "POST",
  "number": "order_no",
  "id": "stockin_id",
  "pagination": {
    "pageSize": 50
  },
  "condition": [
    [
      {
        "field": "warehouse_no",
        "logic": "neq",
        "value": "WH2024052601"
      }
    ]
  ],
  "idCheck": true,
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "string",
      "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "string",
      "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "order_type",
      "label": "源单据类别",
      "type": "string",
      "describe":"源单据类别 1采购入库, 2调拨入库, 4盘盈入库, 5生产入库, 6其他入库, 7保修入库, 8纠错入库, 9初始化入库,10预入库,11JIT退货入库,12委外入库",
      "value":"6"
    },
    {
      "field":"status",
      ...

请求参数详解

  1. 开始时间和结束时间:通过start_timeend_time字段,我们可以实现按最后修改时间增量获取数据。这两个字段分别使用了动态变量{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}},确保每次调用都能获取最新的数据。

  2. 源单据类别:字段order_type用于指定源单据类别。在本案例中,我们设置为“6”,表示其他入库。

  3. 状态过滤:字段status用于过滤特定状态的入库单。在本案例中,我们设置为“60,80”,表示待结算和已完成的单据。

  4. 仓库编号排除:通过条件配置,我们排除了仓库编号为“WH2024052601”的记录。

分页处理

为了处理大批量的数据,接口支持分页功能。我们在元数据中配置了分页参数:

{
  ...
  “otherRequest”: [
    {
      “field”: “page_size”,
      “label”: “分页大小”,
      “type”: “string”,
      “describe”: “每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40”,
      “value”: “{PAGINATION_PAGE_SIZE}”
    },
    {
      “field”: “page_no”,
      “label”: “页号”,
      “type”: “string”,
      “describe”: “不传值默认从0页开始”,
      “value”: “{PAGINATION_START_PAGE}”
    }
  ]
}

通过设置分页大小和页号,可以有效地控制每次请求返回的数据量,从而避免一次性拉取大量数据导致的性能问题。

数据清洗与转换

在获取到原始数据后,需要进行清洗与转换,以满足目标系统的需求。常见的数据清洗操作包括:

  • 字段映射:将源系统中的字段映射到目标系统中的对应字段。
  • 格式转换:例如,将日期格式从“yyyy-MM-dd HH:mm:ss”转换为目标系统所需的格式。
  • 数据过滤:根据业务规则过滤掉不需要的数据记录。

实时监控与日志记录

为了确保数据集成过程的透明度和可追溯性,实时监控和日志记录是必不可少的。轻易云平台提供了详细的日志记录功能,可以实时监控每个接口调用的状态、请求参数及响应结果,从而快速定位并解决问题。

通过上述步骤,我们可以高效地调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工所需的数据,为后续的数据处理和写入打下坚实基础。 打通企业微信数据接口

将源平台数据转换并写入金蝶云星辰V2API接口的技术案例

在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将源平台的数据进行ETL转换,并通过金蝶云星辰V2API接口写入目标平台。

元数据配置解析

首先,我们来看一下元数据配置:

{
  "api": "/jdy/v2/scm/inv_other_in",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {
      "field": "bill_date",
      "label": "单据日期",
      "type": "string",
      "value": "{stockin_time}"
    },
    {
      "field": "bill_no",
      "label": "单据编码",
      "type": "string",
      "value": "{order_no}"
    },
    {
      "field": "trans_type_id",
      "label": "业务类型id",
      "type": "string",
      "value": "12"
    },
    {
      "field": "operation_key",
      "label": "操作类型",
      "type": "string",
      "value": "audit"
    },
    {
      ...
    }
  ]
}

数据请求与清洗

在数据请求阶段,我们需要从源系统中提取原始数据。假设我们已经完成了这一步,接下来我们需要对这些数据进行清洗和转换,以符合目标系统的要求。

数据转换与写入

为了将清洗后的数据转换为金蝶云星辰V2API接口所能接收的格式,我们需要按照元数据配置中的要求进行字段映射和处理。

  1. 单据日期(bill_date)

    • 从源数据中提取stockin_time字段,并将其映射到bill_date
  2. 单据编码(bill_no)

    • 从源数据中提取order_no字段,并将其映射到bill_no
  3. 业务类型ID(trans_type_id)

    • 固定值为"12",表示特定的业务类型。
  4. 操作类型(operation_key)

    • 固定值为"audit",表示审核操作。
  5. 商品分录(material_entity)

    • 商品分录是一个数组,每个分录包含多个字段,如商品ID、数量、单位和仓库等。
    • 对于每个商品分录,需要执行以下操作:
      • 商品ID(material_id):通过MongoDB查询,根据details_list.goods_no找到对应的商品ID。
      • 数量(qty):直接从details_list.goods_count获取。
      • 单位(unit_id):通过MongoDB查询,根据details_list.goods_no找到对应的单位ID。
      • 仓库(stock_id):通过集合查询,根据details_list.warehouse_no找到对应的仓库ID。

示例代码

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

import requests
import json

# 假设我们已经从源系统获取了原始数据
source_data = {
    'stockin_time': '2023-10-01',
    'order_no': 'ORD123456',
    'details_list': [
        {
            'goods_no': 'G001',
            'goods_count': '100',
            'warehouse_no': 'W001'
        }
        # 可以有更多的商品分录
    ]
}

# 构建请求体
request_body = {
    'bill_date': source_data['stockin_time'],
    'bill_no': source_data['order_no'],
    'trans_type_id': '12',
    'operation_key': 'audit',
    'material_entity': []
}

# 模拟MongoDB查询和集合查询
def mongo_query(goods_no):
    # 模拟返回结果
    return {'material_id': f'MID_{goods_no}', 'unit_id': f'UNIT_{goods_no}'}

def collection_query(warehouse_no):
    # 模拟返回结果
    return f'STOCK_{warehouse_no}'

# 构建商品分录部分
for detail in source_data['details_list']:
    material_info = mongo_query(detail['goods_no'])

    material_entry = {
        'material_id': material_info['material_id'],
        'qty': detail['goods_count'],
        'unit_id': material_info['unit_id'],
        'stock_id': collection_query(detail['warehouse_no'])
    }

    request_body['material_entity'].append(material_entry)

# 发起POST请求到金蝶云星辰V2API接口
api_url = '/jdy/v2/scm/inv_other_in'
headers = {'Content-Type': 'application/json'}
response = requests.post(api_url, headers=headers, data=json.dumps(request_body))

# 打印响应结果
print(response.status_code)
print(response.json())

以上代码展示了如何根据元数据配置,将源平台的数据进行ETL转换,并最终通过POST请求写入到金蝶云星辰V2API接口。通过这种方式,可以确保不同系统间的数据无缝对接,实现高效的数据集成。 钉钉与CRM系统接口开发配置

更多系统对接方案