基于轻易云的数据集成:从吉客云到金蝶云的销售单处理

  • 轻易云集成顾问-杨嫦

基于轻易云数据集成平台的吉客云·奇门与金蝶云星空系统对接案例:销售单对接(7-售后发货)

在本文中,我们将深入探讨如何利用轻易云数据集成平台,成功实现吉客云·奇门与金蝶云星空之间的数据集成。具体场景为"销售单对接(7-售后发货)",旨在通过API接口的有效调用以及定制化的数据转换逻辑,实现高效、可靠的数据流动。

吉客云·奇门数据获取

对于本次集成任务,从吉客云·奇门系统中提取相关的交易信息至关重要。我们使用了专用的API接口jackyun.tradenotsensitiveinfos.list.get进行数据抓取。这一过程中,需要处理如下技术要点:

  • 分页和限流问题:由于大规模数据传输可能导致接口性能下降或者超时,我们设置了合理的分页参数,确保每次请求能够稳定返回。
  • 定时抓取机制:配置周期性任务调度器,以固定频率自动拉取最新交易数据,从而保证实时性。

数据处理与转换

不同系统间的数据格式差异是常见挑战。在此次案例中,我们通过轻易云的平台功能,自定义了一系列转换规则,将吉客云·奇门提供的数据适配到金蝶云星空要求的格式。例如,对日期格式、字段名称及其他关键属性进行了映射和调整。此外,还特别注意了以下技术细节:

  • 自定义数据转换逻辑:根据业务需求编写复杂SQL脚本或使用内置函数完成字段级别转化,使得最终输出符合目标系统标准。
  • 异常检测与处理:嵌入异常监控模块,一旦发现不一致或不合规记录,即刻触发告警并进行预定义操作,如重新尝试或跳过错误记录。

数据写入到金蝶云星空

最后阶段是将已准备好的数据信息批量导入到金蝶云星空,通过其提供的batchSave API接口实现这一过程。在实施这一环节时,注重如下内容:

  • 高吞吐量写入能力:为了应对大量销售单据快速进入目标系统,我们优化了网络带宽及服务器资源配置,确保批量提交效率最大化。
  • 错误重试机制:生成日志详细记录每一次API调用状态,在发生失败情况时,可以自动启动错误重试流程,提高整体可靠性。

以上就是关于"销售单对接(7-售后发货)"项目初步设想的介绍。在下文部分,将详细阐述具体实施步骤和代码示例,为大家呈现 钉钉与MES系统接口开发配置

使用轻易云数据集成平台调用吉客云·奇门接口获取并加工数据

在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细介绍如何使用轻易云数据集成平台调用吉客云·奇门接口 jackyun.tradenotsensitiveinfos.list.get 获取销售单数据,并进行必要的数据清洗和转换。

调用接口配置

首先,我们需要配置调用吉客云·奇门接口的元数据。以下是关键配置项:

  • API名称: jackyun.tradenotsensitiveinfos.list.get
  • 请求方法: POST
  • 分页设置: 每页记录数为20
  • 字段映射: 将返回结果中的 consignTime 字段重命名为 consignTime_new 并格式化为日期类型
  • 过滤条件: 订单状态大于等于6000且店铺代码不包含"LD"

请求参数配置

根据元数据配置,我们需要设置以下请求参数:

{
  "modified_begin": "2023-01-01T00:00:00",
  "modified_end": "2023-01-07T23:59:59",
  "startModified": "",
  "endModified": "",
  "tradeNo": "",
  "pageSize": "20",
  "pageIndex": "{PAGINATION_START_PAGE}",
  "hasTotal": "1",
  "startCreated": "",
  "endCreated": "",
  "startAuditTime": "",
  "endAuditTime": "",
  "startConsignTime": "{{LAST_SYNC_TIME|datetime}}",
  "endConsignTime": "{{CURRENT_TIME|datetime}}",
  "tradeStatus": "",
  "tradeType": "7",
  "sourceTradeNos": "",
  "fields": "...", // 此处省略长字段列表
  "scrollId": ""
}

数据清洗与转换

在获取到原始数据后,需要进行以下几步处理:

  1. 字段重命名与格式化:

    • consignTime 重命名为 consignTime_new 并格式化为日期类型。
  2. 过滤无关字段:

    • 根据需求,只保留必要的字段,如 tradeNo, goodsDetail, 等。
  3. 检查ID有效性:

    • 确保每条记录的 tradeId 是有效的,以防止重复或无效数据进入后续处理环节。
  4. 处理嵌套结构:

    • 对于嵌套在 goodsDetail 中的数据,展开并平铺到主记录中,方便后续的数据分析和处理。

示例代码实现

以下是一个示例代码片段,用于展示如何在轻易云平台上实现上述步骤:

import requests
import json
from datetime import datetime, timedelta

# 设置请求URL和头信息
url = 'https://api.jackyun.com/router/rest'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}

# 设置请求参数
params = {
    'method': 'jackyun.tradenotsensitiveinfos.list.get',
    'timestamp': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    'format': 'json',
    'v': '1.0',
    'sign_method': 'md5',
    # API特定参数
    'modified_begin': (datetime.now() - timedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S'),
    'modified_end': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    'pageSize': '20',
    'pageIndex': '0',
    # ...其他参数...
}

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

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

    # 数据清洗与转换
    cleaned_data = []
    for record in data['trades']:
        new_record = {
            # 重命名字段并格式化日期
            'consignTime_new': datetime.strptime(record['consignTime'], '%Y-%m-%d %H:%M:%S').date(),
            # 保留必要字段
            'tradeNo': record['tradeNo'],
            # 展开嵌套结构 goodsDetail
            **{f'goods_{k}': v for k, v in record['goodsDetail'].items()}
        }
        cleaned_data.append(new_record)

    # 输出清洗后的数据
    print(json.dumps(cleaned_data, indent=4))
else:
    print(f"Error: {response.status_code}, {response.text}")

通过上述步骤和代码示例,我们可以高效地从吉客云·奇门接口获取销售单数据,并进行必要的数据清洗和转换,为后续的数据处理和分析奠定基础。 数据集成平台API接口配置

利用轻易云数据集成平台实现金蝶云星空API接口的ETL转换

在数据集成过程中,ETL(Extract, Transform, Load)转换是将源平台的数据转换为目标平台可接收格式的关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将销售单数据转换并写入金蝶云星空API接口。

元数据配置解析

在进行ETL转换之前,我们需要了解元数据配置。以下是一个典型的元数据配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "groupCalculate": {
    "headerGroup": ["shopCodenew", "warehouseCode", "consignTime_new", "tradeType"],
    "bodyGroup": ["goodsDetail_goodsNo"],
    "bodyName": "details",
    "targetBodyName": "FEntity",
    "bodyMaxLine": 50,
    "calculate": {
      "goodsDetail_sellCount": "$sum",
      "goodsDetail_shareFavourableAfterFee": "$sum"
    }
  },
  ...
}

该配置定义了如何将源数据进行分组计算,并映射到目标平台的数据结构中。具体来说,groupCalculate部分定义了头部和明细的分组方式,以及需要计算的字段。

请求字段映射

在请求字段映射中,我们需要将源平台的数据字段映射到金蝶云星空API所需的字段。例如:

{
  "field": "FBillNo",
  "label": "出库单号",
  "type": "string",
  ...
},
{
  ...
}

这里定义了FBillNo字段,它对应于源平台中的出库单号。其他字段如FDateFSaleOrgId等也类似,需要根据业务逻辑进行适当的映射和转换。

数据清洗与转换

在数据清洗与转换过程中,我们会使用不同的方法来处理源数据。例如,使用函数或查询来获取特定值:

{
  ...
  "value": "_function case when '{shopCodenew}'='C010009' then 'XSCKD08_SYS' else 'XSCKD07_SYS' end"
},
{
  ...
}

这个示例展示了如何根据条件设置不同的单据类型ID。类似地,我们可以使用MongoDB查询来获取组织ID:

{
  ...
  "value": "_mongoQuery ... findField=content.F_UseOrg where={\"content.FNumber\":{\"$eq\":\"{shopCodenew}\"}}"
},
{
  ...
}

明细信息处理

对于明细信息,我们需要特别注意数组类型的数据处理。在元数据配置中,FEntity字段定义了明细信息的结构:

{
  ...
  {
    "field":"FMaterialID",
    ...
    },
    {
      ...
      }
   ]
}

每个明细项都需要根据相应的字段进行映射和计算,例如物料编码、实发数量、含税单价等。

API请求构建

最后,我们需要构建API请求,将处理好的数据发送到金蝶云星空。以下是一个完整的请求示例:

{
   ...
   {
     ...
     }
   ]
}

通过以上步骤,我们可以确保源平台的数据经过ETL转换后,能够准确地写入金蝶云星空API接口,实现无缝对接。

实际应用案例

假设我们有一条销售单,需要将其转换并写入金蝶云星空。我们首先根据元数据配置进行字段映射和计算,然后构建API请求并发送:

  1. 提取与清洗:从源平台提取销售单数据,并进行必要的清洗。
  2. 转换:根据元数据配置,将清洗后的数据进行分组计算和字段映射。
  3. 加载:构建API请求,将转换后的数据发送到金蝶云星空。

通过上述步骤,可以高效地实现不同系统间的数据集成,确保业务流程顺畅运行。 金蝶与SCM系统接口开发配置

更多系统对接方案