数据转换与写入:将销售单数据写入金蝶云星空API接口

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

吉客云·奇门数据集成到金蝶云星空案例分享:销售单对接(1-零售业务)

在零售业务的日常运营中,销售数据的准确、高效传输至关重要。本文重点探讨如何通过轻易云数据集成平台,实现吉客云·奇门系统与金蝶云星空之间的无缝对接。本案例关注销售单的数据从获取、处理至最终写入的一系列技术细节,并提供具体解决方案。

为了确保吉客云·奇门的数据能够不丢失地传输到金蝶云星空,我们借助了jackyun.tradenotsensitiveinfos.list.get接口进行定时可靠的数据抓取。同时,为了解决大量数据快速写入的问题,我们使用了金蝶云明星批量保存API batchSave,结合轻易云平台强大的批量处理和映射转换功能,使得两端系统在信息格式差异上的障碍被消除。

分页和限流是实际操作中的一个难点,在调用吉客云·奇门接口时,我们采用合理的分页策略,并根据实际情况设计了限流机制,以防止过多请求导致服务异常。此外,实时监控与日志记录功能帮助我们追踪每一步操作,有效地应对可能出现的问题。

针对金蝶云星空侧的数据映射需求,我们进行了深度定制化调整,从而保证各类字段特别是自定义字段在不同系统间正确匹配。而一旦发生异常或失败,为保障数据完整性及正确率,还需实现错误重试机制并动态调整相关配置参数。这些措施合力构建了一条稳健而高效的数据交互通道。 钉钉与MES系统接口开发配置

调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get获取并加工数据

在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过轻易云数据集成平台调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get,并对获取的数据进行必要的加工处理。

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到该接口使用POST方法,并且需要传递多个参数来获取销售单信息。

{
  "api": "jackyun.tradenotsensitiveinfos.list.get",
  "method": "POST",
  "number": "tradeNo",
  "id": "tradeId",
  "pagination": {
    "pageSize": 20
  },
  "beatFlat": ["goodsDetail"],
  "formatResponse": [
    {
      "old": "consignTime",
      "new": "consignTime_new",
      "format": "date"
    }
  ],
  "idCheck": true,
  ...
}

请求参数设置

请求参数包括时间范围、销售单号、分页信息等。以下是部分关键参数及其说明:

  • modified_beginmodified_end: 修改起始和结束时间,必须同时存在,时间间隔不能超过七天。
  • startConsignTimeendConsignTime: 发货时间范围,默认值分别为上次同步时间和当前时间。
  • pageSizepageIndex: 分页参数,每页记录数和页码。
  • fields: 指定需要返回的字段列表,以逗号分隔。

示例请求参数如下:

{
  "modified_begin": "2023-01-01T00:00:00",
  "modified_end": "2023-01-07T23:59:59",
  ...
}

数据清洗与转换

在获取到原始数据后,需要对数据进行清洗和转换。根据元数据配置中的formatResponse字段,我们需要将原始字段consignTime格式化为新的字段consignTime_new

例如:

{
  "consignTime": "2023-01-01T12:00:00Z"
}

转换后:

{
  "consignTime_new": "2023-01-01"
}

此外,根据配置中的beatFlat字段,我们需要将嵌套的goodsDetail字段扁平化处理,以便于后续的数据处理和分析。

异常处理与重试机制

为了确保数据的完整性和准确性,我们还需要设置异常处理和重试机制。例如,在请求失败时,可以根据错误类型进行不同的重试策略,如立即重试、延迟重试或放弃重试。

示例代码片段:

import requests
from datetime import datetime, timedelta

def fetch_data():
    url = 'https://api.jackyun.com/tradenotsensitiveinfos/list/get'
    headers = {'Content-Type': 'application/json'}
    params = {
        'modified_begin': (datetime.now() - timedelta(days=7)).isoformat(),
        'modified_end': datetime.now().isoformat(),
        'pageSize': 20,
        ...
    }

    try:
        response = requests.post(url, json=params, headers=headers)
        response.raise_for_status()
        data = response.json()

        # 数据清洗与转换
        for item in data['result']:
            item['consignTime_new'] = item['consignTime'].split('T')[0]
            # 扁平化 goodsDetail
            if 'goodsDetail' in item:
                for detail in item['goodsDetail']:
                    item.update(detail)

        return data

    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
        # 根据需求设置重试机制

数据写入与存储

在完成数据清洗与转换后,下一步是将处理后的数据写入目标系统。这通常涉及到数据库操作或通过API将数据推送到另一个系统。在此过程中,需要确保数据的一致性和完整性,并进行必要的数据验证。

例如,将清洗后的数据写入数据库:

import sqlite3

def save_to_db(data):
    conn = sqlite3.connect('sales.db')
    cursor = conn.cursor()

    for item in data['result']:
        cursor.execute('''
            INSERT INTO sales (tradeNo, consignTime_new, ...)
            VALUES (?, ?, ...)
        ''', (item['tradeNo'], item['consignTime_new'], ...))

    conn.commit()
    conn.close()

通过以上步骤,我们可以高效地调用吉客云·奇门接口获取销售单信息,并对数据进行必要的清洗和转换,为后续的数据分析和业务决策提供可靠的数据支持。 用友与外部系统接口集成开发

使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口

在数据集成过程中,将源平台的数据转换为目标平台所需的格式是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将零售业务的销售单数据通过ETL转换,最终写入金蝶云星空API接口。

数据请求与清洗

首先,通过轻易云数据集成平台从源系统中获取销售单数据,并进行必要的数据清洗和预处理。此过程确保了后续ETL转换步骤中的数据质量和一致性。

数据转换与写入

接下来,进入数据生命周期的第二步:将已经清洗过的源数据进行ETL转换,并写入金蝶云星空API接口。以下是详细的技术实现步骤。

配置元数据

在轻易云平台上,我们需要配置元数据,以便正确映射源数据到目标API字段。以下是配置示例:

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

字段映射与转换

在配置中,我们定义了多个字段的映射和转换规则。例如:

  • FBillNo(出库单号): 从源系统直接映射。
  • FBillTypeID(单据类型): 根据shopCodenew字段进行条件判断,使用SQL风格的函数进行动态赋值。
  • FDate(日期): 映射到consignTime_new字段。
  • FSaleOrgId(销售组织): 使用MongoDB查询根据shopCodenew获取对应的组织ID,并通过ConvertObjectParser解析。
  • FCustomerID(客户): 使用字符串截取函数从shopCodenew字段中提取客户编号。
{
  ...
  {
    "field": "FBillTypeID",
    "label": "单据类型",
    "type": "string",
    ...
    "value": "_function case when '{shopCodenew}'='C010009' then 'XSCKD08_SYS' else 'XSCKD07_SYS' end"
  },
  {
    ...
  }
}

明细信息处理

对于明细信息,我们需要处理多条记录,并将其映射到目标API的数组结构中:

{
  ...
  {
    "field": "FEntity",
    ...
    "children": [
      {
        ...
        {
          "field": "FMaterialID",
          ...
          "value":"{{details.goodsDetail_goodsNo}}"
        },
        {
          ...
        }
      }
      ...
    ]
  }
}

在这里,我们使用占位符{{details.goodsDetail_goodsNo}}来引用明细中的物料编码。同时,对数量、单价等字段进行了相应的计算和映射。

提交与审核

最后,我们设置一些额外参数以确保数据提交后能够自动审核:

{
  ...
  {
    "field":"IsAutoSubmitAndAudit",
    ...
    "value":"true"
  },
  {
   ...
   }
}

这些配置确保了在数据成功写入后,能够自动完成提交和审核流程,提升了业务处理效率。

总结

通过上述配置和步骤,我们成功地将零售业务的销售单数据从源系统转换为金蝶云星空API接口所需的格式,并完成了数据写入。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接。 钉钉与ERP系统接口开发配置

更多系统对接方案