ETL转换与金蝶云星空数据写入详解

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

销售出库单同步--取运费单:聚水潭·奇门数据到金蝶云星空的高效集成案例

在本案例中,我们将分享如何通过轻易云平台实现聚水潭·奇门的数据与金蝶云星空系统的对接,具体场景为销售出库单的同步操作。为了确保数据的一致性和实时性,本文重点介绍了如何调用聚水潭·奇门接口jushuitan.saleout.list.query获取销售出库单数据,以及利用金蝶云星空接口batchSave进行快速写入,并详述过程中遇到的问题及解决方案。

首先,在数据抓取环节,为了保证从聚水潭·奇门接口定时、可靠地获得所需的销售出库单信息,我们使用了定时触发机制,每隔固定时间周期调度API请求。同时,通过处理分页和限流问题,确保不会因请求过多导致漏单或超时错误。

接着,将获得的原始数据经过必要的格式转换,以匹配金蝶云星空所需要的数据结构。这一步至关重要,因为两套系统的数据格式存在差异,直接传输会导致解析失败。因此,通过自定义映射规则和字段对应关系,有效解决这一不兼容问题。

对于大量数据批量写入到金蝶云星空,也特别设计了一整套优化策略。通过分块上传,可以防止一次上传造成服务器压力过大,同时提高整体传输效率。在这过程中,还实现了异常处理与错误重试机制,当出现上传失败情况时能够自动重新尝试,从而确保每一条记录都成功迁移。

此外,为方便后续维护和监控,对整个数据处理过程进行了详细日志记录,包括接口调用情况、返回结果以及各个环节中的异常信息,使得整个流程透明可控,并支持实时监测及快速排查问题。

总之,本次集成不仅要考虑技术上的高效实现,更要确保业务上无缝衔接,从而真正达到提升运营管理水平、简化工作流程的目的。在下文中,我们将进一步拆解每一个步骤,并展示具体实施细节。 打通金蝶云星空数据接口

调用聚水潭·奇门接口获取并加工数据的技术案例

在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口jushuitan.saleout.list.query来获取销售出库单数据,并进行初步加工。

接口调用配置

首先,我们需要配置API接口的元数据。以下是具体的配置细节:

{
  "api": "jushuitan.saleout.list.query",
  "method": "POST",
  "number": "io_id",
  "id": "io_id",
  "pagination": {
    "pageSize": 25
  },
  "idCheck": true,
  "request": [
    {
      "field": "page_index",
      "label": "页数",
      "type": "string",
      "describe": "第几页,从第一页开始,默认1",
      "value": "1"
    },
    {
      "field": "page_size",
      "label": "每页行数",
      "type": "string",
      "describe": "每页多少条,默认25,最大25",
      "value": "50"
    },
    {
      "field": "start_time",
      "label": "修改开始时间",
      "type": "string",
      "describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "修改结束时间",
      "type": "string",
      "describe": "修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      {
        field: 'status',
        label: '单据状态',
        type: 'string',
        describe: '单据状态: WaitConfirm=待出库; Confirmed=已出库; Cancelled=作废',
        value: 'Confirmed'
    }
  ],
  ...
}

请求参数详解

  • page_index:用于指定请求的页数,从第一页开始。
  • page_size:每页返回的数据条数,默认值为25,但最大值为50。
  • start_timeend_time:用于指定查询的时间范围,这两个字段必须同时存在且间隔不能超过七天。
  • status:用于过滤单据状态,此处我们设置为"Confirmed"以获取已出库的单据。

数据请求与清洗

在发送请求后,我们将会得到一个包含多个销售出库单信息的数据集。接下来,需要对这些数据进行清洗和初步处理,以便后续的数据转换与写入。

  1. 分页处理: 聚水潭·奇门接口支持分页查询,通过设置page_indexpage_size可以逐页获取数据。需要注意的是,每次请求返回的数据量不应超过配置中的最大值(即50)。

  2. 时间戳转换: 接口返回的数据中可能包含多个时间戳字段,这些字段需要统一转换为标准格式,以便后续处理。例如,将Unix时间戳转换为ISO8601格式。

  3. 字段校验与过滤: 根据业务需求,对关键字段进行校验和过滤。例如,确保所有记录都包含有效的io_id(唯一标识符),并过滤掉无效或重复的数据。

异常处理与补偿机制

在实际操作中,不可避免地会遇到各种异常情况,如网络超时、接口响应错误等。为了保证数据同步的可靠性,我们需要设计相应的异常处理和补偿机制。

  1. 重试机制: 对于临时性错误,可以通过设置重试机制来自动重新发送请求。例如,在网络超时或服务器响应500错误时,可以设置最多重试三次。

  2. 定时任务补偿: 为了防止因某些原因导致的数据遗漏,可以设置定时任务来定期检查并补偿遗漏的数据。例如,通过Crontab配置每天凌晨5点半执行一次全量同步任务:

    {
     ...
     omissionRemedy: {
       crontab: '30 5 * * *',
       takeOverRequest: [
         {
           id: 'start_timeYrXph',
           field: 'start_time',
           label: '修改开始时间',
           type: 'string',
           is_required: false,
           describe: '修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空',
           value: '{{DAYS_AGO_3|datetime}}'
         }
       ]
     }
     ...
    }

通过以上步骤,我们可以高效地调用聚水潭·奇门接口获取销售出库单数据,并进行必要的清洗和初步加工,为后续的数据转换与写入打下坚实基础。这不仅提高了数据集成过程中的透明度和效率,也确保了业务系统间数据的一致性和完整性。 如何对接企业微信API接口

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

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将销售出库单同步到金蝶云星空API接口。

元数据配置解析

在配置元数据时,我们需要理解每个字段的意义和用途。以下是关键字段的解析:

  • api: "batchSave" 表示调用批量保存接口。
  • method: "POST" 表示使用HTTP POST方法。
  • idCheck: true 表示需要进行ID检查。
  • operation: 定义了操作细节,包括批量保存的行数和方法。

请求字段配置

请求字段配置部分定义了具体的数据映射和转换规则:

  1. 单据类型 (FBillTypeID):

    • 类型:字符串
    • 描述:单据类型
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:固定值 "XSCKD01_SYS"
  2. 单据编号 (FBillNo):

    • 类型:字符串
    • 描述:单据编号
    • 值:动态值 {io_id}
  3. 日期 (FDate):

    • 类型:字符串
    • 描述:日期
    • 值:动态值 {io_date}
  4. 销售组织 (FSaleOrgId):

    • 类型:字符串
    • 描述:组织
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:固定值 "100"
  5. 客户 (FCustomerID):

    • 类型:字符串
    • 描述:基础资料
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:动态值 {shop_id}
  6. 运输单号 (FCarriageNO):

    • 类型:字符串
    • 描述:文本
    • 值:动态值 {l_id}
  7. 发货组织 (FStockOrgId)联系电话 (FLinkPhone)收货人姓名 (FLinkMan)收货方地址 (FReceiveAddress): 这些字段分别对应发货组织、联系电话、收货人姓名和收货方地址,类型均为字符串,根据实际需求填写相应的值。

明细信息配置

明细信息(FEntity)是一个数组,每个元素包含以下字段:

  1. 物料编码 (FMaterialID):

    • 类型:字符串
    • 描述:基础资料
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:固定值 "O007007007"
  2. 含税单价 (FTaxPrice):

    • 类型:字符串
    • 描述:单价
    • 值:动态值 {paid_amount}
  3. 实发数量 (FRealQty):

    • 类型:字符串
    • 值:固定值 "1"
  4. 是否赠品 (FIsFree): 根据条件判断是否赠品:

    case '{{items.sale_price}}' when '0.0' then 'true' else 'false' end
  5. 仓库 (FStockID): 类型为字符串,使用 ConvertObjectParser 解析器,参数为 FNumber,固定值 "CK"

  6. 金额 (FAmount): 动态值 {{items.sale_amount}}

财务信息配置

财务信息(SubHeadEntity)是一个对象,包含以下字段:

  1. 收货人地址 (FReceiverAddress)
  2. 收货人 (FReceiverName)
  3. 收货人手机 (FReceiverMobile)
  4. 整单折扣额 (FAllDisCount) 动态值 {free_amount}

其他请求配置

其他请求配置部分定义了业务对象表单ID、执行操作、提交并审核等选项:

  • 表单ID (FormId) 固定值 "SAL_OUTSTOCK"
  • 执行操作 (Operation) 固定值 "Save"
  • 提交并审核 (IsAutoSubmitAndAudit) 布尔类型,固定值 false
  • 验证基础资料 (IsVerifyBaseDataField) 布尔类型,固定值 true
  • 系统模块 (SubSystemId) 固定值 "21"
  • 服务端开启的线程数 (BatchCount) 固定值 "5"

通过以上详细的元数据配置,我们可以确保源平台的数据能够准确地转换并写入到金蝶云星空API接口,实现系统间的数据无缝对接。 如何开发用友BIP接口

更多系统对接方案