轻易云平台API调用与数据转化实例分享

  • 轻易云集成顾问-陈洁琳

畅捷通T+数据集成到吉客云的技术案例分析

在企业资源管理和仓储系统的数据对接过程中,高效、准确地进行数据传输与交换是核心要求。本文将深入探讨如何通过轻易云数据集成平台,实现畅捷通T+产成品入库单【蓝字】自动同步到吉客云创建相应入库单。

集成背景及挑战

在本次集成案例中,我们致力于解决以下几个关键问题:

  1. 确保数据不漏单:如何可靠地抓取并处理畅捷通T+中的所有有效订单。
  2. 快速写入大量数据:提升大批量订单高效写入吉客云的性能。
  3. 处理接口分页和限流问题:保证在调用畅捷通T+ API时,能够顺利完成大规模分页请求,并避免触发接口限流机制。

方案设计概述

我们使用轻易云提供的平台工具,通过以下步骤实现目标:

  1. API接口调用策略

    • 利用畅捷通T+的/tplus/api/v2/ProductReceiveOpenApi/FindVoucherList接口抓取产成品入库单信息。在此过程中,需要特别注意分页参数设定,以确保获取完整的数据列表。同时,应考虑设置合理的重试机制,以应对可能发生的网络异常或服务端响应延迟等状况。
  2. 批量数据转换与映射

    • 数据格式差异是一大难题。我们针对从畅捷通T+获取的数据,进行必要的信息清洗与转换,使之符合吉客云所需格式。这包括字段名称对齐、值类型兼容性调整等操作。这里采取了自定义脚本方式,提高了灵活性和适应不同业务场景扩展性的能力。
  3. 优化性能与稳定性保证

    • 为了避免频繁小批量传输带来的效率低下,将多条记录打包为一个请求发送至吉客云。通过其erp.storage.stockincreate API,不仅提高了传输速率,也减少了网络开销。此外,还实施了一系列错误捕获和重试机制,确保即便偶尔出现通信失败情况,也能最大程度保证整体流程不中断运行。
  4. 实时监控与日志记录

    • 在整个集成过程中,对每一步的数据处理状态进行实时监控,并详细记录日志。这不仅方便后续调优,还便于及时发现并解决潜在的问题。例如,通过平台内置功能,可以随时查看已成功导入、正在处理中以及失败需要重试的具体条目明细,为运维人员提供强有力支撑。

以上,是我们基于实际项目需求设计的一套详 金蝶与CRM系统接口开发配置

调用畅捷通T+接口获取并加工数据的技术实现

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用畅捷通T+接口/tplus/api/v2/ProductReceiveOpenApi/FindVoucherList来获取并加工数据。

接口配置与请求参数

首先,我们需要配置接口的元数据。根据提供的元数据配置,可以看出该接口使用POST方法进行查询操作,主要请求参数如下:

  • selectFields: 指定要查询的字段,包括VoucherCode, CustomerCode, WarehouseCode, Inventory, InventoryCode, Specification, Unit, Quantity
  • pageIndex: 当前页码。
  • pageSize: 每页返回的记录数,设置为5。
  • paramDic_1: 包含两个键值对,用于过滤条件,其中keyRDRecord__AuditedDatevalue为时间范围(从上次同步时间到当前时间)。
  • paramDic_2: 另一个过滤条件,其中keyWarehouse__IDvalue为仓库ID列表(2和1)。

以下是请求参数的JSON结构示例:

{
  "selectFields": "VoucherCode,CustomerCode,WarehouseCode,Inventory,InventoryCode,Specification,Unit,Quantity",
  "pageIndex": "1",
  "pageSize": "5",
  "paramDic_1": {
    "key": "RDRecord__AuditedDate",
    "value": "{{LAST_SYNC_TIME|date}},{{CURRENT_TIME|date}}"
  },
  "paramDic_2": {
    "key": "Warehouse__ID",
    "value": "2,1"
  }
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗和转换,以便后续处理和写入目标系统。根据元数据配置中的条件,我们需要对返回的数据进行以下处理:

  1. 过滤条件:仅保留数量大于0且库存编码在指定列表中的记录。

    • 条件一:RDRecordDetails.Quantity > 0
    • 条件二:RDRecordDetails.InventoryCode in [050301CMP-11-001, ..., 050304CMP-13-003]
  2. 字段映射:将原始字段映射到目标系统所需字段。例如,将原始的库存编码字段映射到目标系统的相应字段。

以下是一个简单的数据清洗示例代码:

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        if record['Quantity'] > 0 and record['InventoryCode'] in ["050301CMP-11-001", ..., "050304CMP-13-003"]:
            cleaned_record = {
                'voucher_code': record['VoucherCode'],
                'customer_code': record['CustomerCode'],
                'warehouse_code': record['WarehouseCode'],
                'inventory_code': record['InventoryCode'],
                'specification': record['Specification'],
                'unit': record['Unit'],
                'quantity': record['Quantity']
            }
            cleaned_data.append(cleaned_record)
    return cleaned_data

数据写入目标系统

在完成数据清洗和转换后,需要将处理后的数据写入目标系统。轻易云平台支持多种异构系统的无缝对接,因此可以根据具体需求选择适当的写入方式。

例如,可以通过API将清洗后的数据批量写入目标系统:

def write_to_target_system(cleaned_data):
    api_endpoint = "/target_system/api/v1/write_data"
    headers = {"Content-Type": "application/json"}
    response = requests.post(api_endpoint, json=cleaned_data, headers=headers)
    if response.status_code == 200:
        print("Data written successfully")
    else:
        print("Failed to write data")

# 调用函数
cleaned_data = clean_data(raw_data)
write_to_target_system(cleaned_data)

实时监控与日志记录

为了确保数据集成过程的透明度和可追溯性,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以实时监控数据流动和处理状态,并记录每个环节的详细日志,以便在出现问题时快速定位和解决。

例如,可以通过日志记录每次API调用的请求和响应:

import logging

logging.basicConfig(filename='data_integration.log', level=logging.INFO)

def log_api_call(request_params, response):
    logging.info(f"Request: {request_params}")
    logging.info(f"Response: {response}")

# 在API调用处添加日志记录
response = requests.post(api_endpoint, json=request_params, headers=headers)
log_api_call(request_params, response.json())

通过上述步骤,我们可以高效地调用畅捷通T+接口获取并加工数据,并确保整个过程透明、可追溯。这不仅提升了业务效率,也为后续的数据分析和决策提供了可靠的数据基础。 数据集成平台API接口配置

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

在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台吉客云API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用元数据配置完成这一过程。

元数据配置解析

元数据配置是ETL过程中至关重要的一部分,它定义了从源系统到目标系统的数据映射规则。以下是我们使用的元数据配置:

{
  "api": "erp.storage.stockincreate",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "inWarehouseCode",
      "label": "仓库编码",
      "type": "string",
      "describe": "仓库编码",
      "value": "{{Warehouse.Code}}"
    },
    {
      "field": "inType",
      "label": "入库类型",
      "type": "string",
      "describe": "入库类型 101=采购入库 102=调拨入库 103=盘盈入库 104=其他入库",
      "value": "101"
    },
    {
      "field": "relDataId",
      "label": "关联单据编号",
      "type": "string",
      "describe": "可随机,保证不重复即可",
      "value": "{Code}"
    },
    {
      ...
    }
  ]
}

数据请求与清洗

在数据请求与清洗阶段,我们从源系统提取产成品入库单【蓝字】的数据,并对其进行必要的清洗和预处理。此阶段确保了数据的一致性和准确性,为后续的转换和写入奠定基础。

数据转换与写入

在这一阶段,我们根据元数据配置,将清洗后的数据转换为吉客云API接口所能接受的格式,并通过HTTP POST方法将其写入目标系统。以下是具体步骤:

  1. 字段映射:根据元数据配置,将源系统中的字段映射到目标系统中。例如,将源系统中的Warehouse.Code映射到目标系统中的inWarehouseCode

  2. 固定值设定:某些字段需要设定固定值,例如inType字段被设定为"101",表示采购入库。

  3. 动态值生成:对于需要动态生成的字段,例如relDataId,我们可以使用源系统中的唯一标识符(如单据编号)来生成。

  4. 数组和嵌套对象处理:对于复杂的数据结构,如数组和嵌套对象,需要特别处理。例如,stockInDetailViews字段包含多个子字段,这些子字段需要逐一映射和处理。

以下是一个具体的数据转换示例:

{
  "inWarehouseCode": "{{Warehouse.Code}}",
  ...
  ...
  ...
  }
}

API调用

完成数据转换后,通过HTTP POST方法调用吉客云API接口,将转换后的数据写入目标系统。以下是一个示例代码片段:

import requests
import json

url = 'https://api.jikexyun.com/erp.storage.stockincreate'
headers = {'Content-Type': 'application/json'}
data = {
    'inWarehouseCode': 'WH001',
    'inType': '101',
    'relDataId': '123456',
    ...
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    print('Data successfully written to JiKeYun')
else:
    print('Failed to write data to JiKeYun:', response.text)

通过上述步骤,我们实现了从轻易云平台到吉客云平台的数据无缝对接,确保了业务流程的顺利进行。 泛微OA与ERP系统接口开发配置

更多系统对接方案