ETL转换与数据写入的实现方法

  • 轻易云集成顾问-贺强

分销销售退货单集成方案-P:旺店通·旗舰奇门数据集成到金蝶云星空

在企业信息系统中,不同应用系统之间的数据对接与同步是一项复杂且关键的任务。本文将详细分享通过轻易云数据集成平台,实现旺店通·旗舰奇门分销销售退货单自动化导入金蝶云星空的技术案例。

为了确保从旺店通·旗舰奇门获取准确无误的数据,我们使用了接口 wdt.wms.stockin.refund.querywithdetail,该接口能够提供详尽的退货单数据信息。在具体实施过程中,主要关注以下几点:

  1. 定时可靠的数据抓取:为保证数据不漏单,我们配置了定时任务周期性调用 wdt.wms.stockin.refund.querywithdetail 接口,并实现了高频次和稳定的数据抓取机制。
  2. 处理分页和限流问题:针对旺店通·旗舰奇门接口返回的大量记录进行分页处理,同时遵循限流规则避免超出API调用限制,从而确保每次数据请求都是有效且完整的。
  3. 实时监控与日志记录:全流程监控每一次API请求并详细记录日志,以便于后续查看和排查潜在的问题,提高运维管理效率。

对于大量获取到的数据,在传输至目标系统——金蝶云星空之前,还需进行格式转换及映射。这一环节主要涵盖如下要点:

  1. 批量写入优化:由于我们需要将大量退货单信息快速、高效地写入到金蝶云星空,因此采用 batchSave API 进行批量操作,大幅提升写入速度及系统性能。
  2. 自定义数据映射对接:根据业务需求,对不同字段间的数据类型、格式要求进行了灵活调整,使其完美匹配金蝶云星空标准。同时,通过平台提供的可视化界面,直观地展示各个字段间的对应关系,有利于更精确、更快捷地设置映射规则。

最后,为进一步保障整个过程顺利完成,对异常情况进行了充分考虑,包括但不限于网络故障、接口响应错误等。构建了一套完善的错误重试机制,并对所有未成功提交的数据及时重新尝试提交,最大程度上降低因为短暂故障导致严重后果的不确定性。此外,通过实时状态反馈能够迅速定位并解决问题,减少停机时间。

以上即为本次分销销售退货单集成方案-P项目启动部分内容。在接下来的文章中,将会更深入展示具体实现细节与代码示例。 轻易云数据集成平台金蝶集成接口配置

调用旺店通·旗舰奇门接口获取并加工数据的技术实现

在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail,并对获取的数据进行初步加工。

接口调用配置

首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到该接口采用POST方法,主要参数包括分页参数和业务参数。

{
  "api": "wdt.wms.stockin.refund.querywithdetail",
  "method": "POST",
  "number": "order_no",
  "id": "order_no",
  "idCheck": true,
  "request": [
    {
      "field": "pager",
      "label": "分页参数",
      "type": "object",
      "children": [
        {
          "field": "page_size",
          "label": "分页大小",
          "type": "string",
          "value": "50",
          "parent": "pager"
        },
        {
          "field": "page_no",
          "label": "页号",
          "type": "string",
          "value": "1",
          "parent": "pager"
        }
      ]
    },
    {
      "field": "params",
      ...
    }
  ],
  ...
}

分页参数设置

分页参数是接口调用中必不可少的一部分,用于控制每次请求的数据量和当前请求的页码。我们设置page_size为50,表示每次请求返回50条记录;page_no初始值为1,表示从第一页开始请求。

{
  ...
  {
    field: 'pager',
    label: '分页参数',
    type: 'object',
    children: [
      { field: 'page_size', label: '分页大小', type: 'string', value: '50', parent: 'pager' },
      { field: 'page_no', label: '页号', type: 'string', value: '1', parent: 'pager' }
    ]
  },
  ...
}

业务参数设置

业务参数用于定义具体的数据查询条件,包括时间范围、入库单状态、仓库编码等。以下是关键业务参数的配置:

  • start_timeend_time: 分别表示查询的开始时间和结束时间,使用动态变量{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}
  • status: 入库单状态,这里设置为80,表示已完成状态。
  • time_type: 时间条件类型,不传默认为0,即按修改时间查询。
  • warehouse_no, shop_nos, stockin_no: 分别对应仓库编码、店铺编号和入库单号,可以根据实际需求进行配置。
{
  ...
  {
    field: 'params',
    label: '业务参数',
    type: 'object',
    children: [
      { field: 'start_time', label: '开始时间', type: 'string', value: '{{LAST_SYNC_TIME|datetime}}', parent: 'params' },
      { field: 'end_time', label: '结束时间', type: 'string', value: '{{CURRENT_TIME|datetime}}', parent: 'params' },
      { field: 'status', label: '入库单状态', type: 'string', describe:'英文逗号拼接的状态值...', value:'80', parent:'params' },
      { field:'time_type', label:'时间条件类型', type:'string', describe:'查询的时间条件类型...', parent:'params' },
      { field:'warehouse_no', label:'仓库编码', type:'string', parent:'params' },
      { field:'shop_nos', label:'店铺编号', type:'string', describe:'多个店铺编号使用英文逗号分隔...', parent:'params' },
      { field:'stockin_no', label:'入库单号', type:'string' }
    ]
  }
}

数据请求与清洗

在完成接口调用配置后,我们可以通过轻易云平台发起数据请求,并对返回的数据进行清洗。清洗过程包括去除无效字段、标准化字段格式等操作,以确保数据质量。

例如,对于返回的数据结构,我们可能只需要特定字段,如订单号、商品信息等,可以通过以下方式进行处理:

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        cleaned_record = {
            'order_no': record.get('order_no'),
            'item_details': record.get('item_details'),
            # 添加其他需要的字段
        }
        cleaned_data.append(cleaned_record)
    return cleaned_data

数据转换与写入

在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标数据库或系统。这一步通常涉及到字段映射、数据类型转换等操作。

def transform_and_write(cleaned_data, target_system):
    transformed_data = []
    for record in cleaned_data:
        transformed_record = {
            # 根据目标系统要求进行字段映射和转换
            ...
        }
        transformed_data.append(transformed_record)

    # 将转换后的数据写入目标系统
    target_system.write(transformed_data)

通过上述步骤,我们实现了从源系统旺店通·旗舰奇门接口获取并加工数据,为后续的数据集成工作打下坚实基础。在实际应用中,可以根据具体需求进一步优化和扩展这些操作。 用友与MES系统接口开发配置

数据集成与ETL转换:实现分销销售退货单的自动化处理

在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,以适配金蝶云星空API接口的格式,并最终写入目标平台。

API接口配置

首先,我们需要了解金蝶云星空API的基本配置。本次集成方案中,使用了batchSave API,通过POST方法提交数据。以下是主要的API配置参数:

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

这些参数确保我们能够批量提交数据,并对每一行数据进行验证和处理。

请求字段解析

为了将源平台的数据转换为金蝶云星空所需的格式,我们需要对请求字段进行详细解析和映射。以下是部分关键字段的配置及其解析方式:

  1. FBillTypeID(单据类型)

    • 类型:string
    • 描述:单据类型
    • 解析器:ConvertObjectParser
    • 参数:FNumber
    • 值:DSXSTHD07
  2. FBillNo(单据编号)

    • 类型:string
    • 描述:单据编号
    • 值:{order_no}
  3. FSaleOrgId(销售组织)

    • 类型:string
    • 描述:组织
    • 值: _findCollection find FUseOrgID from 08313512-4ecd-37b1-9945-be9366662e85 where FWDTDCName={fenxiao_nick}
    • 解析器:ConvertObjectParser
    • 参数:FNumber
  4. FDate(日期)

    • 类型:string
    • 描述:日期
    • 值: {modified}
  5. FRetcustId(退货客户)

    • 类型:string
    • 描述:基础资料
    • 值: _findCollection find FCustID from 08313512-4ecd-37b1-9945-be9366662e85 where FWDTDCName={fenxiao_nick}
    • 解析器:ConvertObjectParser
    • 参数:FNumber

通过上述字段配置,我们可以将源平台的数据准确地映射到目标平台所需的格式。

明细信息处理

对于包含复杂结构的明细信息,我们需要特别注意其子字段的处理。例如,明细信息包含多个子字段,如物料编码、实退数量、单价等:

{
    "field": "FEntity",
    "label": "明细信息",
    "type": "array",
    "children": [
        {
            "field": "FMaterialId",
            "label": "物料编码",
            "type": "string",
            "describe": "基础资料",
            "parser": {"name": "ConvertObjectParser", "params": "FNumber"},
            "value": "{{details_list.goods_no}}",
            "parent": "FEntity"
        },
        {
            "field": "FRealQty",
            "label": "实退数量",
            "type": "string",
            "describe": "数量",
            "value": "{{details_list.num}}",
            "parent": "FEntity"
        },
        {
            ...
        }
    ],
    ...
}

在这个配置中,每个子字段都需要指定其类型、描述和对应的值,并通过父字段关联起来。这种结构化处理确保了每个明细项都能被正确解析和传递。

提交与审核

在所有字段完成映射后,我们还需要配置一些额外参数以控制数据提交和审核流程:

{
    ...
    {
        "field":"IsAutoSubmitAndAudit",
        "label":"提交并审核",
        "type":"bool",
        "value":"true"
    },
    {
        ...
    }
}

设置IsAutoSubmitAndAudittrue,意味着在数据提交后会自动进行审核,简化了操作流程,提高了效率。

实际应用案例

假设我们有一个分销销售退货单,其源数据如下:

{
    ...
    {
        order_no: 'TH20231001',
        fenxiao_nick: 'distributorA',
        modified: '2023-10-01',
        details_list: [
            {goods_no: 'P001', num: '10', refund_order_detail_list: [{price: '100'}]},
            ...
        ],
        ...
    }
}

通过上述配置,我们可以将这些源数据转换为金蝶云星空API所需的格式,并通过POST方法批量提交,实现自动化处理。

综上所述,通过合理配置元数据和API接口参数,可以高效地实现不同系统间的数据集成与转换,为企业业务流程提供强有力的支持。 金蝶与MES系统接口开发配置

更多系统对接方案