在轻易云平台实现吉客云数据转换并写入金蝶云星空

  • 轻易云集成顾问-李国敏

吉客云·奇门数据集成到金蝶云星空:销售单对接销售出库_类型91批采销售

在开展吉客云·奇门和金蝶云星空的系统对接项目中,我们面临着诸多技术挑战:确保数据不漏单、实现大量数据快速写入、处理分页与限流问题,以及异常处理与错误重试机制。以下是我们在“销售单对接销售出库_类型91批采销售”这个具体案例中的详细技术方案。

为了从吉客云·奇门接口中抓取必要的数据,我们首先使用了API jackyun.tradenotsensitiveinfos.list.get。这一接口能够定时可靠地获取交易信息,确保及时获得最新销售记录。而后,通过轻易云平台设置的数据生命周期管理与透明可视化操作界面,我们实时监控并处理了这些数据的流动状态,有效提升了业务透明度。

在获取到所需数据后,下一步的是将其快速且准确地写入到金蝶云星空。这一步通过调用金蝶提供的batchSave API 实现。在此过程中,为解决吉客云·奇门与金蝶两体系之间的数据格式差异问题,我们设计了定制化的数据映射规则,确保所有字段的信息准确无误地对应。同时,在执行过程中也对分页和限流进行有效处理,以规避因请求频率过高而导致的阻塞或失败。

针对可能出现的对接异常情况,从后台日志记录开始,到建立完善的错误重试机制,每一个细节都经过精密规划。例如,当某条记录由于网络波动未能成功写入时,系统会自动触发重试流程,并保留详尽的操作日志以备查证,保证任何潜在的问题都能被迅速发现和解决。

综合以上内容,本次集成任务不仅解决了各类技术难题,还显著提高了企业的大规模数据交互效率,为未来更多复杂场景下的数据集成提供了一套科学可靠的方法论。 打通用友BIP数据接口

调用吉客云·奇门接口获取并加工数据

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

接口调用配置

根据元数据配置,我们需要通过POST方法调用jackyun.tradenotsensitiveinfos.list.get接口。以下是关键的请求参数及其配置:

  • modified_beginmodified_end:用于指定修改时间范围,必须同时存在,且时间间隔不能超过七天。
  • pageSizepageIndex:分页参数,默认每页记录数为200,页码从0开始。
  • tradeStatus:订单状态,使用逻辑运算符egt(大于等于)过滤状态值大于等于6000的订单。
  • fields:指定需要返回的字段列表,以逗号分隔。

以下是一个示例请求体:

{
  "modified_begin": "2023-09-01 00:00:00",
  "modified_end": "2023-09-07 23:59:59",
  "pageSize": 200,
  "pageIndex": 0,
  "tradeStatus": "6000",
  "fields": "tradeNo,postFee,goodsDetail.goodsNo,goodsDetail.goodsName,goodsDetail.sellCount"
}

数据清洗与初步加工

在获取到原始数据后,需要对数据进行清洗和初步加工。以下是一些常见的数据清洗操作:

  1. 字段筛选与重命名: 根据业务需求,仅保留必要字段,并对字段进行重命名以便后续处理。例如,将goodsDetail.goodsNo重命名为商品编号

  2. 数据类型转换: 将某些字段的数据类型进行转换,例如将字符串类型的日期转换为日期对象,以便后续计算和比较。

  3. 缺失值处理: 对于缺失值,可以根据业务规则进行填充或删除。例如,如果某些订单的邮费(postFee)缺失,可以设置默认值为0。

以下是一个示例代码片段,用于对获取到的数据进行清洗和初步加工:

import pandas as pd
from datetime import datetime

# 假设response_data是从接口获取到的原始数据
response_data = [
    {"tradeNo": "T12345", "postFee": None, "goodsDetail": [{"goodsNo": "G001", "goodsName": "商品A", "sellCount": 10}]},
    {"tradeNo": "T12346", "postFee": 5.0, "goodsDetail": [{"goodsNo": "G002", "goodsName": "商品B", "sellCount": 20}]}
]

# 转换为DataFrame
df = pd.DataFrame(response_data)

# 字段重命名
df.rename(columns={"tradeNo": "销售单号", "postFee": "邮费"}, inplace=True)

# 数据类型转换
df["邮费"] = df["邮费"].fillna(0).astype(float)

# 展开嵌套的商品详情
goods_details = df["goodsDetail"].apply(pd.Series)
df = df.drop("goodsDetail", axis=1).join(goods_details.explode().apply(pd.Series))

# 重命名商品详情字段
df.rename(columns={"goodsNo": "商品编号", "goodsName": "商品名称", "sellCount": "销售数量"}, inplace=True)

print(df)

异常处理与日志记录

在调用API和处理数据过程中,异常处理和日志记录是必不可少的。可以通过捕获异常并记录详细日志来确保问题能够及时发现和解决。例如:

import logging

logging.basicConfig(level=logging.INFO)

try:
    # 模拟API调用
    response = api_call()
    if response.status_code != 200:
        raise Exception(f"API调用失败,状态码:{response.status_code}")

    # 数据处理逻辑...
except Exception as e:
    logging.error(f"发生异常:{e}")

通过上述步骤,我们能够高效地调用吉客云·奇门接口获取销售单数据,并对其进行清洗和初步加工,为后续的数据转换与写入奠定基础。 打通企业微信数据接口

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

在数据集成生命周期的第二步中,我们需要将已经从源平台获取并清洗过的数据进行ETL转换,以符合目标平台——金蝶云星空API接口所能接收的格式,最终实现数据的写入。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

API接口配置

根据提供的元数据配置,我们需要调用金蝶云星空的batchSave API接口,采用POST请求方法。以下是关键的配置项:

  • api: "batchSave"
  • method: "POST"
  • idCheck: true
  • operation:
    • rowsKey: "array"
    • rows: 10
    • method: "batchArraySave"

请求字段解析

请求字段定义了从源数据到目标格式的映射规则。以下是主要字段及其配置:

  1. 单据类型 (FBillTypeID)

    • 类型: string
    • 描述: 单据类型
    • 值: 固定值 "XSCKD01_SYS"
    • 解析器: 使用 ConvertObjectParser 转换为目标格式中的编号 (FNumber)
  2. 单据编号 (FBillNo)

    • 类型: string
    • 描述: 单据编号
    • 值: {tradeNo} (从源数据中提取)
  3. 日期 (FDate)

    • 类型: string
    • 描述: 日期
    • 值: {consignTime} (从源数据中提取)
  4. 销售组织 (FSaleOrgId)

    • 类型: string
    • 描述: 组织
    • 值: 动态查询 _mongoQuery
      {
      "findField": "content.warehouseCompanyCode",
      "where": "{\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"
      }
    • 解析器: 使用 ConvertObjectParser 转换为目标格式中的编号 (FNumber)
  5. 客户 (FCustomerID)

    • 类型: string
    • 描述: 基础资料
    • 值: {shopCode} (从源数据中提取)
    • 解析器: 使用 ConvertObjectParser 转换为目标格式中的编号 (FNumber)
  6. 备注 (FNote)

    • 类型: string
    • 描述: 多行文本
    • 值: {sellerMemo} (从源数据中提取)

明细信息配置

明细信息字段用于描述销售单中的具体商品信息,以下是主要字段及其配置:

  1. 物料编码 (FMaterialId)

    • 类型: string
    • 描述: 基础资料
    • 值:
      "{{goodsDetail.goodsNo}}"
    • 解析器: 使用 ConvertObjectParser 转换为目标格式中的编号 (FNumber)
  2. 实退数量 (FRealQty)

    • 类型: string
    • 描述: 数量
    • 值:
      "{{goodsDetail.sellCount}}"
  3. 批号 (Flot)

    • 类型: string
    • 描述: 批号
    • 值:
      "01"
  4. 单价 (FPrice)

    "_function round(({{goodsDetail.shareFavourableAfterFee}}/{{goodsDetail.sellCount}}),4)"
  5. 金额 (FAmount)

    "{{goodsDetail.shareFavourableAfterFee}}"
  6. 仓库 (FStockId)

    "_mongoQuery 38faaa66-9955-34e5-bd58-7c4099b53af5 findField=content.warehouseCompanyCode where={\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"
  7. 备注 (FEntrynote)

    "{goodsMemo}"

执行操作与其他请求参数

除了上述字段映射外,还需要指定一些操作参数和其他请求参数:

  1. 业务对象表单Id (FormId)

    "SAL_OUTSTOCK"
  2. 执行的操作 (Operation)

    "Save"
  3. 提交并审核 (IsAutoSubmitAndAudit)

    true
  4. 验证基础资料有效性 (IsVerifyBaseDataField)

    true
  5. 系统模块 (SubSystemId)

    "21" (默认仓库模块)
  6. 允许负库存 (InterationFlags)

    "STK_InvCheckResult"
  7. 服务端开启的线程数 (BatchCount)

    "5"

通过上述配置,我们可以确保将清洗后的源平台数据准确地转换为金蝶云星空API接口所需的格式,并成功写入目标平台。这一过程充分利用了轻易云数据集成平台提供的元数据配置功能,实现了高效、透明的数据集成。 金蝶与MES系统接口开发配置

更多系统对接方案