从旺店通到金蝶云星空的数据集成与APIs详解

  • 轻易云集成顾问-蔡威

旺店通·企业奇门数据集成到金蝶云星空:高效、可靠的数据对接方案

在本篇技术案例中,我们将分享一个关于如何通过轻易云平台,将旺店通·企业奇门中的其他出库单数据,成功集成至金蝶云星空系统的实际运行方案。该方案名为“旺店通其他出库单>云星空其他出库单”。

我们首先面临的挑战是确保从旺店通·企业奇门获取的数据不漏单,并能快速、批量地写入到金蝶云星空。这一过程中,需要调用wdt.stockout.order.query接口来抓取源数据,同时使用batchSave API实现数据的批量写入。

为了保证数据集成过程的顺利进行,以下几个技术点尤为重要:

  1. 实时监控与日志记录:通过设置详细的实时监控和日志记录机制,可以确保每个步骤都清晰可见,从而及时发现并解决潜在问题。
  2. 异常处理与错误重试:针对可能出现的数据传输错误或网络波动,实现自动化的异常处理和重试机制,以提升系统稳定性。
  3. 数据格式差异处理:由于旺店通·企业奇门与金蝶云星空之间存在不同的数据格式需求,需要定制化映射策略,以确保信息准确无误地转换和存储。

特别是在分页和限流方面,为了避免因大量请求造成服务器压力过大,这套方案细致设计了分页请求及速率限制控制,从而保障了接口调用效率及整体系统性能。此外,通过定时任务模块,我们能够可靠地周期性抓取最新订单数据,进一步提升业务流程自动化程度。

下面,我们将逐步解析这一具体实施方案,包括API调用设置、分段逻辑实现以及最终的数据验证方法。在实际操作中,这些技术要点不仅提高了数据信息传递速度,还显著增强了整个流程执行的一致性与安全性。 打通用友BIP数据接口

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

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

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口wdt.stockout.order.query采用POST方法进行调用,主要参数如下:

  • 开始时间(start_time):按最后修改时间增量获取数据,格式为yyyy-MM-dd HH:mm:ss。使用模板变量{{LAST_SYNC_TIME|datetime}}动态获取上次同步时间。
  • 结束时间(end_time):按最后修改时间增量获取数据,格式为yyyy-MM-dd HH:mm:ss。使用模板变量{{CURRENT_TIME|datetime}}动态获取当前时间。
  • 出库单类型(order_type):值为7,表示其他出库。
  • 出库单状态(status):值为95,表示已发货状态。
  • 仓库编号(warehouse_no):代表仓库唯一编码,用于区分不同仓库。
  • 源单号(src_order_no):源单号字段。
  • 出库单号(stockout_no):出库单号字段,可以不传时间。

此外,还包括分页参数:

  • 分页大小(page_size):每页返回的数据条数,默认值为100。
  • 页号(page_no):默认从0页开始。

请求参数示例

以下是一个请求参数的示例:

{
  "start_time": "{{LAST_SYNC_TIME|datetime}}",
  "end_time": "{{CURRENT_TIME|datetime}}",
  "order_type": "7",
  "status": "95",
  "warehouse_no": "WH001",
  "page_size": "100",
  "page_no": "0"
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和写入操作。以下是一些常见的数据清洗与转换步骤:

  1. 字段映射与重命名

    • 将原始字段映射到目标系统所需的字段。例如,将原始字段order_no映射为目标系统中的订单编号字段。
  2. 数据类型转换

    • 确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准的日期格式。
  3. 过滤无效数据

    • 根据业务规则过滤掉无效或不需要的数据。例如,只保留状态为已发货的记录。
  4. 增量更新处理

    • 使用开始时间和结束时间进行增量更新处理,仅同步自上次同步以来的新数据。

示例代码

以下是一个简化的Python示例代码,用于演示如何调用接口并处理返回的数据:

import requests
import datetime

# 配置请求参数
params = {
    "start_time": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    "end_time": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    "order_type": "7",
    "status": "95",
    "warehouse_no": "WH001",
    "page_size": 100,
    "page_no": 0
}

# 调用接口
response = requests.post("https://api.wangdiantong.com/wdt.stockout.order.query", data=params)
data = response.json()

# 数据清洗与转换
cleaned_data = []
for record in data['orders']:
    cleaned_record = {
        '订单编号': record['order_no'],
        '出库单号': record['stockout_no'],
        '仓库编号': record['warehouse_no'],
        '状态': record['status'],
        '最后修改时间': record['modified']
    }
    cleaned_data.append(cleaned_record)

# 打印清洗后的数据
print(cleaned_data)

通过上述步骤,我们可以高效地从旺店通·企业奇门接口获取并加工出库单数据,为后续的数据写入和业务处理打下坚实基础。在实际应用中,可以根据具体需求进一步优化和扩展这些步骤,以满足复杂多变的业务场景。 金蝶与SCM系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。

1. 数据请求与清洗

首先,从源系统(如旺店通)中获取其他出库单的数据。这一步骤包括数据请求和初步清洗,以确保数据的准确性和完整性。

2. 数据转换与写入

接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所需的格式,并通过API接口将其写入目标系统。以下是具体步骤和元数据配置的应用。

2.1 配置API接口

根据元数据配置,金蝶云星空API接口采用batchSave方法,通过POST请求进行批量保存操作。以下是关键字段及其配置:

  • FBillNo(单据编号): 从源系统获取并映射到金蝶云星空中的FBillNo字段。
  • FBillTypeID(单据类型): 固定值QTCKD01_SYS,通过ConvertObjectParser解析为金蝶内部编码。
  • FStockOrgId(库存组织)FPickOrgId(领用组织): 固定值100,同样通过ConvertObjectParser解析。
  • FDate(日期): 从源系统获取并映射到金蝶云星空中的FDate字段。
  • FCustId(客户)FDeptId(领料部门): 需要通过解析器将客户和部门信息转换为金蝶内部编码。
  • FPickerId(领料人): 通过MongoDB查询获取操作员编号,并映射到金蝶系统。
  • FOwnerTypeIdHead(货主类型)FOwnerIdHead(货主): 固定值分别为BD_OwnerOrg100,通过解析器处理。
2.2 配置明细信息

对于明细信息,需要特别注意数组结构的处理。每个明细项包含多个字段,如下所示:

  • FMaterialId(物料编码): 从源系统获取并映射到金蝶云星空中的物料编码,通过解析器转换。
  • FQty(实发数量): 从源系统获取并映射到金蝶云星空中的数量字段。
  • FStockId(发货仓库)FOwnerId(货主): 分别从源系统获取仓库编号和货主信息,通过解析器转换。
2.3 其他请求参数

除了主要字段外,还需要配置其他请求参数:

  • FormId(业务对象表单Id): 固定值为STK_MisDelivery,表示其他出库单表单ID。
  • IsAutoSubmitAndAudit(提交并审核): 布尔值,设置为false表示不自动提交和审核。
  • IsVerifyBaseDataField(验证基础资料): 布尔值,设置为true表示验证所有基础资料有效性。
  • Operation(执行的操作): 固定值为Save,表示保存操作。

3. 实现代码示例

以下是一个简化的代码示例,用于展示如何利用轻易云数据集成平台进行ETL转换并调用金蝶云星空API接口:

{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    },
    "request": [
        {"field":"FBillNo","value":"{order_no}"},
        {"field":"FBillTypeID","value":"QTCKD01_SYS"},
        {"field":"FStockOrgId","value":"100"},
        {"field":"FPickOrgId","value":"100"},
        {"field":"FDate","value":"{consign_time}"},
        {"field":"FCustId"},
        {"field":"FDeptId","value":"BM000017"},
        {"field":"FPickerId","value":"_mongoQuery cccd77b8-cea5-3862-99c0-c3cc6815a86a findField=content.FNumber where={\"content.FName\":{\"$eq\":\"{operator_name}\"}}"},
        {"field":"FOwnerTypeIdHead","value":"BD_OwnerOrg"},
        {"field":"FOwnerIdHead","value":"100"},
        {"field":"FNote","value":"{remark}"},
        {
            "field": "FEntity",
            "children": [
                {"field":"FMaterialId","value":"{{details_list.goods_no}}"},
                {"field":"FQty","value":"{{details_list.goods_count}}"},
                {"field":"FStockId","value":"{warehouse_no}"},
                {"field":"FOwnerTypeId","value":"BD_OwnerOrg"},
                {"field":"FOwnerId","value":"100"}
            ],
            "value": "details_list"
        }
    ],
    "otherRequest": [
        {"field": "FormId", "value": "STK_MisDelivery"},
        {"field": "IsAutoSubmitAndAudit", "value": false},
        {"field": "IsVerifyBaseDataField", "value": true},
        {"field": "Operation", "value": "Save"}
    ]
}

通过上述配置,我们可以实现从源系统到目标系统的数据无缝对接,并确保数据格式符合目标平台要求。这种方法不仅提高了数据处理效率,还保证了数据的一致性和准确性。 钉钉与MES系统接口开发配置

更多系统对接方案