利用轻易云平台将数据转换为金蝶云星空格式的实用指南

  • 轻易云集成顾问-孙传友

吉客云数据集成到金蝶云星空的技术案例分享:其他入库109v2报废入库

在本文中,我们将详细探讨如何通过轻易云数据集成平台实现吉客云(Geek Cloud)与金蝶云星空(Kingdee Cloud)的高效对接,具体案例为"其他入库109v2报废入库"。这个过程不仅需要确保数据准确无误地传递,还需处理分页、限流以及两套系统间的数据格式差异等问题。

确保吉客云数据不漏单

为了保证从吉客云获取的数据完整且无遗漏,我们使用了erp.storage.goodsdocin.v2接口。该接口支持定时抓取功能,可以设定固定时间间隔自动获取最新数据,同时利用日志记录和实时监控来追踪每次请求的执行情况。一旦检测到任何异常,如网络抖动导致的请求失败,会触发错误重试机制,以确保所有应处理的数据都被正确捕获。

处理分页和限流

在面对大规模的数据量时,吉客云API返回的结果可能会受到分页限制。这就要求我们实现一个健壮的分页机制,通过控制参数页码(pageNum)与每页条数(pageSize),细化请求策略,有效规避因服务器临时性负载高峰导致的响应延迟或失败。此外,为避免触及API调用频率上限而遭受封禁,对每次请求进行频率控制也至关重要,这可以通过设置合理的时间间隔来达成。

数据快速写入金蝶云星空

在成功获取并处理好来自吉客云的大量数据信息后,下一个关键步骤是利用金蝶云星空提供的batchSave接口,实现批量快速写入。在这个过程中,必须对不同结构化标准下的数据格式进行映射转化,确保字段对应关系明确无误。例如,将原始JSON格式转换为符合XML规范,使得双方系统能够顺利理解和接受彼此的信息。同时,通过使用合适缓冲批量上传策略,大幅提升了整体写入效率,并减少了单笔操作带来的潜在性能瓶颈。

异常处理与错误重试机制

针对在对接过程中可能出现的一系列异常情况,例如网络中断或者服务器宕机等,我们设计了一套完善的异常捕捉与错误重试机制。它包括多级别告警通知、重复尝试逻辑以及自动回滚,从而有效降低由于突发故障给业务流程带来的负面影响。例如,当一次写入操作失败后,会先记录于日志,并依据预设规则再次尝试;如果多次尝试依然未果,则发送告 金蝶云星空API接口配置

调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据的技术案例

在数据集成生命周期的第一步,我们需要从源系统获取数据并进行初步处理。本文将深入探讨如何通过调用吉客云接口erp.storage.goodsdocin.v2来实现这一过程。

接口调用配置

首先,我们需要根据元数据配置来设置接口调用参数。以下是关键参数及其配置说明:

  • api: erp.storage.goodsdocin.v2
  • method: POST
  • number: goodsdocNo
  • id: recId
  • pagination: {"pageSize":10}
  • idCheck: true

请求参数包括分页信息、时间范围、入库类型等,具体配置如下:

{
  "pageIndex": 1,
  "pageSize": 100,
  "goodsDocNo": "",
  "gmtModifiedStart": "_function from_unixtime(({LAST_SYNC_TIME}-86400),'%Y-%m-%d %H:%i:%s')",
  "gmtModifiedEnd": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d %H:%i:%s')",
  "startDate": "",
  "endDate": "",
  "inouttype": "109",
  "sourceBillNo": "",
  "warehouseCode": "",
  "outBillNo": "",
  "vendCode": "",
  "billNo": "",
  "userName": "",
  "selelctFields": "vendCustomerCode,companyName,memo,redStatus,inouttypeName,outBillNo,billNo,logisticCode,companyCode,applyCompanyCode,inouttype,sourceBillNo,applyCompanyId,applyDepartId,applyUserName,companyId,financeBillStatus,vendCustomerId,recId,inOutDate,goodsdocNo,logisticNo,logisticType,gmtModified,warehouseName,warehouseCode,applyUserId,channelId,channelCode,gmtCreate,userName,inOutReason,..."
}

数据请求与清洗

在数据请求阶段,我们通过POST方法向吉客云接口发送上述请求参数。接口返回的数据包含了入库单的详细信息,包括但不限于供应商编号、仓库编号、创建人名称等。

为了确保数据的准确性和完整性,我们需要对返回的数据进行清洗和过滤。例如,过滤掉数量为零的记录:

"condition_bk":[[{"field":"goodsDocDetailList.quantity","logic":"gt","value":"0"}]]

数据转换与写入

在完成数据清洗后,我们需要将数据转换为目标系统所需的格式,并写入目标数据库。这一步通常涉及字段映射和格式转换。例如,将吉客云返回的goodsDocDetailList中的字段映射到目标系统的相应字段。

异常处理与补偿机制

为了确保数据集成过程的稳定性和可靠性,我们还需要考虑异常处理和补偿机制。元数据配置中提供了一个定时任务(crontab)用于异常情况下的数据补偿:

"omissionRemedy":{
    "crontab":"2 */5 * * *",
    "takeOverRequest":[
        {"field":"gmtModifiedStart","value":"_function from_unixtime(({CURRENT_TIME}-172800),'%Y-%m-%d %H:%i:%s')"},
        {"field":"gmtModifiedEnd","value":"_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d %H:%i:%s')}
    ]
}

该定时任务每5分钟执行一次,确保在异常情况下能够及时重新获取并处理数据。

实践案例

以下是一个实际调用吉客云接口并处理返回数据的示例代码(伪代码):

import requests
import json
from datetime import datetime, timedelta

# 配置请求参数
params = {
    "pageIndex": 1,
    "pageSize": 100,
    # 使用函数计算时间范围
    "gmtModifiedStart": (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
    "gmtModifiedEnd": datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    # 固定入库类型为报废入库
    "inouttype": '109',
    # 返回字段列表
    "selelctFields": "...",
}

# 发起POST请求
response = requests.post('https://api.jikexyun.com/erp.storage.goodsdocin.v2', data=json.dumps(params))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗:过滤数量为零的记录
    cleaned_data = [item for item in data['goodsDocDetailList'] if item['quantity'] > 0]

    # 数据转换与写入(示例)
    for record in cleaned_data:
        transformed_record = transform(record) # 自定义转换函数
        write_to_target_system(transformed_record) # 自定义写入函数

else:
    print(f"Error: {response.status_code}")

以上代码展示了如何调用吉客云接口获取数据,并对返回的数据进行清洗、转换和写入目标系统。

通过上述步骤,我们可以高效地实现从源系统获取并加工数据,为后续的数据集成工作打下坚实基础。 企业微信与ERP系统接口开发配置

轻易云数据集成平台:ETL转换与金蝶云星空API接口集成

在轻易云数据集成平台中,将源平台的数据转换为目标平台所需的格式是一个关键步骤。本文将详细探讨如何将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为金蝶云星空API接口能够接收的格式,并最终写入目标平台。

API接口配置

在进行数据转换和写入之前,首先需要了解金蝶云星空API接口的配置。以下是一个典型的API接口配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{goodsdocNo}"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD01_SYS"},
    {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"},
    {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"_function IF( {redStatus}<>9 , \"GENERAL\" , \"RETURN\")"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"_function DATE_FORMAT('{inOutDate} ', '%Y-%m-%d')"},
    {"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000016"},
    {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
    {"field":"FOwnerIdHead","label":"货主","type":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","value":""}
  ],
  "otherRequest":[
    {"field":"","label":"","type":"","describe":"","value":""},
    {"field":"","label":"","type":"","describe":"","value":""}
  ]
}

数据字段解析与转换

在上述配置中,每个字段都有特定的解析和转换规则。例如:

  • FBillNo: 单据编号,通过{goodsdocNo}占位符从源数据中提取。
  • FBillTypeID: 单据类型,通过ConvertObjectParser解析器将固定值QTRKD01_SYS转换为目标系统所需的格式。
  • FStockOrgId: 库存组织,同样通过ConvertObjectParser解析器将公司代码{companyCode}进行转换。
  • FStockDirect: 库存方向,根据条件判断库存方向,如果{redStatus}不等于9,则返回"GENERAL",否则返回"RETURN"。
  • FDate: 日期,通过自定义函数将日期格式化为%Y-%m-%d

这些字段的解析和转换确保了数据能够被金蝶云星空API正确接收和处理。

明细信息处理

对于复杂的数据结构,如明细信息,需要使用嵌套数组来表示。例如:

{
  "field": "FEntity",
  "label": "明细信息",
  "type": "array",
  "children": [
    {
      "field": "FMATERIALID",
      "label": "物料编码",
      "type": "string",
      "parser": {
        "name": "ConvertObjectParser",
        "params": ["FNumber"]
      },
      "value": "{{goodsDocDetailList.goodsNo}}"
    },
    {
      // ...其他明细字段
    }
  ],
  "value": "{goodsDocDetailList}"
}

每个明细字段都有其独特的解析和转换规则,例如物料编码通过ConvertObjectParser解析器将物料编码转换为目标系统所需的格式。

提交与审核

在完成所有字段的解析和转换后,最后一步是提交并审核数据。这可以通过设置以下参数来实现:

{
  "otherRequest":[
    {"field":"","label":"","type":"","describe":"","value":""},
    {"field":"","label":"","type":"","describe":"","value":""}
  ]
}

其中,IsAutoSubmitAndAudit设置为true表示自动提交并审核,确保数据在写入后立即生效。

实践案例

假设我们有一批待入库的数据需要写入金蝶云星空系统。首先,我们需要根据上述配置准备好源数据,并按照配置中的规则进行解析和转换。然后,通过调用金蝶云星空的API接口,将处理后的数据批量保存到目标系统中。

具体操作步骤如下:

  1. 提取源数据:从源系统中提取待处理的数据。
  2. 数据清洗与预处理:根据业务需求对数据进行清洗和预处理。
  3. 字段映射与转换:按照配置中的规则对每个字段进行映射和转换。
  4. 调用API接口:使用HTTP POST方法调用金蝶云星空的API接口,将处理后的数据批量保存到目标系统中。

通过上述步骤,我们可以高效地将源平台的数据转化为金蝶云星空API能够接收的格式,并成功写入目标平台,实现不同系统间的数据无缝对接。 数据集成平台API接口配置

更多系统对接方案