跨平台数据处理:从旺店通到金蝶云

  • 轻易云集成顾问-黄宏棵

旺店通·企业奇门数据集成到金蝶云星空的技术案例分享

在构建现代化企业信息系统时,不同平台间的数据集成显得尤为重要。本文将展示一个具体的系统对接集成案例,介绍如何通过轻易云数据集成平台高效完成旺店通·企业奇门的数据无缝对接到金蝶云星空。本次实例中的方案被命名为“物料旺店通→金蝶”,重点解决了从数据抓取、处理到最终写入各个环节的痛点。

集成背景与目标

我们的主要任务是定时可靠地抓取旺店通·企业奇门接口(wdt.goods.query)的物料数据信息,并大批量、高速稳定地写入至金蝶云星空的数据存储中(batchSave)。在这一过程中,确保数据不漏单及实时监控整个流程状态是重中之重。

技术挑战与解决方案概述

  1. 快速和大量数据写入: 面临大规模物料信息需要迅速导入的问题,通过优化轻易云平台的数据处理速度和并发性能,实现了快速且高效的大批量数据写入。

  2. 分页和限流管理: 旺店通接口返回的数据有分页限制,为此我们设计了一套有效的分页机制,加上针对API调用频率进行智能限流控制,以确保数据获取持续稳定,不受阻碍。

  3. 格式差异适配: 旺店通与金蝶之间存在不同的数据格式要求,我们运用了动态映射策略,将源端复杂多变的JSON结构转换为目标端统一规范的格式。这一过程结合了脚本转化及字段映射功能,使所有关键字段能够精准匹配,从而避免任何因格式问题导致的信息丢失或错误。

  4. 异常处理机制: 实现自动异常捕获与分类处置。在遇到意外情况如网络故障或接口超时时,系统能即时记录详细日志并触发重试机制,保证业务连续性,并及时通知相关人员加以人工干预。

  5. 实时监控与日志记录: 通过内置监控模块,我们实现了全程可视化操作和实时跟踪每一次请求、响应及整体运行状况,极大提升了透明度。同时,日志记录详实准确,为后续问题溯源提供依据。

下面将具体阐述各个步骤,包括接口调用方式、代码示例、参数解析等细节内容。敬请期待!


以上是文章开头部分,如需继续编写完整方案,请告知,谢谢! 如何开发用友BIP接口

调用旺店通·企业奇门接口wdt.goods.query获取并加工数据

在数据集成生命周期的第一步,我们需要从源系统获取数据,并进行初步的清洗和加工。本文将详细探讨如何通过调用旺店通·企业奇门接口wdt.goods.query来实现这一目标。

接口概述

wdt.goods.query接口用于查询旺店通系统中的货品信息。该接口支持按货品编号、删除状态、最后修改时间等条件进行查询,并返回符合条件的货品数据。我们将使用POST方法来调用此接口,并根据业务需求对返回的数据进行处理。

元数据配置解析

以下是元数据配置的详细解析:

{
  "api": "wdt.goods.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "goods_no",
  "id": "goods_id",
  "name": "goods_no",
  "idCheck": true,
  "request": [
    {"field": "spec_no", "label": "货品编号", "type": "string", "describe": "货品编号"},
    {"field": "deleted", "label": "已删除货品", "type": "string", 
     "describe": "默认为0, 0:只返回未删除货品 1:返回未删除和已删除货品"},
    {"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:"111",
     value:"{{CURRENT_TIME|datetime}}"}
   ],
   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}"}
   ],
   autoFillResponse: true
}

请求参数详解

  • spec_no(货品编号):用于指定特定的货品编号进行查询。
  • deleted(已删除货品):默认为0,仅返回未删除的货品;设置为1时,返回所有包括已删除的货品。
  • start_time(开始时间):按最后修改时间增量查询数据,格式为yyyy-MM-dd HH:mm:ss
  • end_time(结束时间):查询截止时间,格式同上。
  • page_size(分页大小):每页返回的数据条数,默认值为40。
  • page_no(页号):分页查询的页码,从0开始。

调用示例

以下是一个调用该接口的示例代码:

import requests
import datetime

# 设置请求URL和头部信息
url = 'https://api.wangdian.cn/openapi2/wdt_goods_query.php'
headers = {'Content-Type': 'application/json'}

# 获取当前时间和上次同步时间
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
last_sync_time = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')

# 构建请求体
payload = {
    'spec_no': '',
    'deleted': '0',
    'start_time': last_sync_time,
    'end_time': current_time,
    'page_size': '40',
    'page_no': '0'
}

# 发起POST请求
response = requests.post(url, headers=headers, json=payload)

# 检查响应状态码并处理响应数据
if response.status_code == 200:
    data = response.json()
    # 在此处添加对data的处理逻辑,例如清洗和转换
else:
    print(f"Error: {response.status_code}")

数据清洗与加工

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

  1. 去除无效或重复记录:检查并移除无效或重复的记录。
  2. 字段映射与转换:将源系统中的字段映射到目标系统所需的字段,并进行必要的数据类型转换。
  3. 异常值处理:识别并处理异常值,如缺失值或超出合理范围的数据。

例如,对于获取到的货品数据,我们可以根据业务规则过滤掉已删除的货品,并将其转换为目标系统所需的格式:

cleaned_data = []
for item in data['goods_list']:
    if item['deleted'] == '0':
        cleaned_item = {
            'goods_id': item['goods_id'],
            'goods_no': item['goods_no'],
            # 添加其他必要字段映射
        }
        cleaned_data.append(cleaned_item)

通过上述步骤,我们完成了从源系统获取数据并进行初步清洗和加工,为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体业务需求进一步细化和优化这些操作。 轻易云数据集成平台金蝶集成接口配置

利用轻易云数据集成平台实现物料数据ETL转换并写入金蝶云星空

在数据集成生命周期的第二步中,我们将聚焦于如何将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口。本文将通过具体的元数据配置案例,详细讲解这一过程。

数据请求与清洗

首先,我们需要从源平台(如物料旺店通)获取原始数据。假设我们已经完成了这一阶段,接下来我们将重点放在数据转换与写入阶段。

数据转换与写入

为了将源平台的数据转换为金蝶云星空API接口所能接收的格式,我们需要配置元数据。以下是一个典型的元数据配置示例:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FName","label":"名称","type":"string","describe":"111","value":"{goods_name}"},
    {"field":"FNumber","label":"编码","type":"string","describe":"111","value":"{{spec_list.spec_no}}"},
    {"field":"FDescription","label":"描述","type":"string","describe":"111"},
    {"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
    {"field":"FUseOrgId","label":"使用组织","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
    {"field":"FSpecification","label":"规格型号","type":"string","value":"{{spec_list.spec_name}}"},
    {"field":"SubHeadEntity","label":"基本","type":"object","describe":"111",
      "children":[
        {"field":"FErpClsID","label":"物料属性","type":"string","describe":"111","value":"1"},
        {"field":"FBaseUnitId","label":"基本单位","type":"string","describe":"111",
          "parser":{"name":"ConvertObjectParser","params":"FNumber"},"value": "tai"
        },
        {"field": "FCategoryID", "label": "存货类别", "type": "string", 
          "describe": "CHLB01_SYS", 
          "parser": { 
            "name": "ConvertObjectParser", 
            "params": "FNumber" 
          }, 
          "value": "CHLB05_SYS"
        }
      ]
    },
    {"field": "FMaterialGroup", 
      "label": "分组", 
      "type": "string", 
      "parser": { 
        "name": "ConvertObjectParser", 
        "params": "FNumber" 
      }
    }
  ],
  ...
}

配置解析

  1. API EndpointbatchSave 是金蝶云星空用于批量保存物料信息的API接口。

  2. HTTP Method:使用 POST 方法提交数据。

  3. ID CheckidCheck: true 表示在写入前会检查是否存在重复ID。

  4. Request Fields

    • FName: 对应物料名称,值来自 {goods_name}
    • FNumber: 对应物料编码,值来自 {{spec_list.spec_no}}
    • FDescription: 描述字段,可以为空或填充描述信息。
    • FCreateOrgIdFUseOrgId: 创建和使用组织,通过 ConvertObjectParser 转换为目标格式,固定值为 100
    • FSpecification: 对应规格型号,值来自 {{spec_list.spec_name}}
    • SubHeadEntity: 包含多个子字段,如物料属性、基本单位和存货类别等,这些字段也通过相应的解析器进行转换。
  5. Other Request Fields

    • FormId: 固定值为 "BD_MATERIAL",表示表单ID。
    • Operation: 操作类型,固定值为 "Save"
    • IsAutoSubmitAndAudit: 自动提交和审核标志,布尔值为 true
    • IsVerifyBaseDataField: 验证基础资料有效性,布尔值为 false

数据写入

在配置完成后,通过轻易云的数据集成平台,将上述配置应用于ETL流程。在执行过程中,系统会自动根据配置规则,将源平台的数据转换为符合金蝶云星空API要求的格式,并通过HTTP POST请求批量提交到目标系统。

通过这种方式,我们能够高效地实现跨平台的数据集成,并确保数据在不同系统间无缝对接。这不仅提高了业务流程的自动化程度,也大大减少了人工干预和潜在错误。 钉钉与WMS系统接口开发配置

更多系统对接方案