ETL技术应用:通过轻易云实现销售出库单与调拨单无缝对接

  • 轻易云集成顾问-贺强

从旺店通到金蝶云星空:销售出库单对接直接调拨单的技术实现

在企业信息化管理系统中,实现不同系统之间的数据无缝集成,是提升业务效率和数据准确性的关键环节。本案例重点阐述如何高效地将旺店通·企业奇门中的销售出库单(Stockout Order)通过API接口wdt.stockout.order.query.trade,对接到金蝶云星空,将其转换为直接调拨单,并使用批量写入API batchSave

首先,我们需要考虑的是如何从旺店通·企业奇门可靠、高效地获取销售出库单数据。由于该平台提供了分页与限流机制,因此我们在调用接口时必须处理这些问题,以确保数据完整性和传输效率。这一过程包括设计定时抓取任务,结合集中监控和告警功能,实时跟踪每个任务的状态。一旦出现异常,可以及时采取措施进行重试和修正,从而保证集成过程不会因偶发错误而中断。

其次,在向金蝶云星空提交数据之前,需要解决两个主要挑战:一是处理来自两套系统的数据格式差异;二是在大量数据快速写入时确保性能稳定。为此,我们采用自定义的数据转换逻辑,将旺店通·企业奇门的字段映射至符合金蝶云星空要求的结构。此外,通过批量集成方式,大幅度提高了写入速度,同时降低了API调用次数,有助于保持系统负载平衡。

以下部分将详细介绍具体实现步骤、代码示例及可能遇到的问题及其应对策略。希望这个技术案例能为您的项目提供有价值的参考和指导。 打通钉钉数据接口

调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据

在数据集成生命周期的第一步,调用源系统接口以获取原始数据是至关重要的。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade,并对获取的数据进行初步加工。

接口调用配置

首先,我们需要配置API接口的元数据,以便正确地请求所需的数据。以下是关键的元数据配置:

{
  "api": "wdt.stockout.order.query.trade",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_id",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "condition_bk": [
    [
      {
        "field": "shop_remark",
        "logic": "eqv2",
        "value": "直接调拨单"
      }
    ]
  ],
  ...
}

在这个配置中,api字段指定了我们要调用的API接口,method字段定义了请求方法为POST。分页参数设置为每页100条记录,以确保高效的数据传输。

请求参数配置

为了实现增量数据获取,我们需要设置开始时间和结束时间等动态参数:

{
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      ...
    },
    ...
  ]
}
  • start_timeend_time用于定义数据查询的时间范围,其中start_time取上次同步时间,end_time取当前时间。
  • status, src_order_no, src_tid, stockout_no, shop_no, warehouse_no, shop_nos等字段用于进一步过滤和指定查询条件。

数据请求与清洗

在完成API调用后,我们将获得一组原始数据。这些数据需要经过初步清洗,以确保其质量和一致性。例如,可以根据特定条件过滤掉不符合要求的数据:

{
  "condition_bk": [
    [
      {
        "field": "shop_remark",
        ...
      }
    ]
  ]
}

这里,我们仅保留备注为“直接调拨单”的记录,通过设置条件过滤器实现这一目标。

分页处理

由于可能存在大量数据,分页处理是必不可少的。我们通过以下参数实现分页:

{
  ...
  "otherRequest": [
    {
      ...
      "value":"{PAGINATION_PAGE_SIZE}"
    },
    {
      ...
      ...
    }
  ]
}
  • page_size: 每页返回的数据条数。
  • page_no: 当前页号,从0开始。

通过循环请求不同页码的数据,可以确保所有记录都被完整获取。

异常处理与补偿机制

在实际操作中,不可避免会遇到一些异常情况,如网络中断或接口响应超时。为了应对这些问题,我们可以配置定时任务和补偿机制:

{
  ...
  "omissionRemedy":{
    ...
    }
}

例如,通过定时任务每天凌晨3点重新执行一次未成功的请求,以确保所有数据都能被完整捕获。

数据转换与写入

在完成上述步骤后,清洗后的数据将进入下一阶段,即转换与写入。这部分将在后续文章中详细探讨。

通过以上步骤,我们能够高效地从旺店通·企业奇门接口获取并初步加工销售出库单的数据,为后续的数据转换和写入奠定基础。这种方法不仅提高了数据处理的透明度和效率,也确保了业务流程的稳定性和可靠性。 泛微OA与ERP系统接口开发配置

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

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下是一个具体的技术案例,展示如何使用轻易云数据集成平台配置元数据,实现旺店通销售出库单对接金蝶直接调拨单。

配置API接口

首先,我们需要配置金蝶云星空的API接口。根据元数据配置,API接口为batchSave,请求方法为POST。我们需要确保在请求中包含所有必需的字段和相应的数据格式。

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 10,
    "method": "batchArraySave"
  },
  "request": [
    {"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}"},
    {"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "WDTCKD", 
      "parser": {"name": "ConvertObjectParser", "params":"FNumber"}},
    {"field": "FBizType", "label": "业务类型", "type": "string", 
      ... (省略部分字段)
    }
  ],
  ...
}

数据字段映射与转换

在配置过程中,需要特别注意字段的映射与转换。例如:

  • FBillNo(单据编号):直接从源数据中的order_no字段映射。
  • FBillTypeID(单据类型):固定值为"WDTCKD",并通过ConvertObjectParser进行解析。
  • FSaleOrgId, FSettleOrgId, FStockOutOrgId, FStockOrgId等组织相关字段:通过查找集合并使用解析器将其转换为目标系统能够识别的编码。
{
  ...
  {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","value":"_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
  ...
}

明细信息处理

对于明细信息(即子表),我们需要使用嵌套数组来表示,并确保每个子项都包含必要的字段。例如:

  • FMaterialId(物料编码):从源数据中的details_list.goods_no映射,并通过解析器转换。
  • FQty(调拨数量):从源数据中的details_list.num映射。
{
  ...
  {"field":"FBillEntry","label":"明细信息","type":"array","describe":"1","children":[
    {"field":"FMaterialId","label":"物料编码 ","type":"string","describe":"基础资料","value":"{{details_list.goods_no}}","parent":"FBillEntry","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FCMKBarCode","label":"零售条形码","type":"string","describe":"文本","parent":"FBillEntry"},
    {"field":"FQty","label":"调拨数量 ","type":"string","describe":"数量","value":"{{details_list.num}}","parent":"FBillEntry"},
    ...
  ]}
}

执行操作

在完成所有字段配置后,我们还需要定义一些操作参数,例如表单ID、执行操作、是否自动提交并审核等。

{
  ...
  {"field": "FormId", "label": "业务对象表单Id", 
    "type": string, 
    "describe" : 必须填写金蝶的表单ID如: PUR_PurchaseOrder, 
    "value" : STK_TransferDirect},

  {"field" : Operation, 
    "label" : 执行的操作, 
    "type" : string, 
    "value" : Save},

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

  {"field" : IsVerifyBaseDataField, 
    "label" : 验证基础资料, 
    "type" : bool, 
    "value" : true},

  {"field" : InterationFlags, 
    "label" : 是否允许忽略交互, 
    "type" : string, 
    "value" : true},

  {"field" : BatchCount,
    "type" : string,
    "value:5}
}

通过以上步骤,我们可以成功地将旺店通销售出库单的数据转换为金蝶云星空API能够接收的格式,并通过轻易云数据集成平台实现无缝对接。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。 如何开发金蝶云星空API接口

更多系统对接方案