ETL转换与金蝶云星空API集成详解

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

线上退换货查询-销售退货单

在电子商务运营中,处理客户的退换货请求是企业必须面对的重要环节。本文将分享一个成功的系统集成案例:如何实现旺店通·企业奇门的数据集成到金蝶云星空,以便形成线上退换货查询及销售退货单。

在该技术方案中,我们使用了wdt.refund.query API进行旺店通·企业奇门平台数据的获取,并通过金蝶云星空的batchSave API实现高效的数据写入。整个过程需要解决以下几项关键技术问题:

  1. 确保数据不漏单:定时抓取并处理旺店通·企业奇门接口返回的数据,通过可靠性机制避免任何可能发生的丢失情况。

  2. 分页与限流管理:由于旺店通API响应数据量大,必须设计分页策略,同时要注意限流设置以符合API调用频率限制。

  3. 数据格式差异处理:磨平两个系统之间的数据结构差异,这涉及自定义转换逻辑以及复杂字段映射。

  4. 质量监控和异常检测:引入实时监控和日志记录功能,当出现错误或异常状况时能即时告警并执行重试机制。

  5. 批量快速写入: 支持高吞吐量的数据操作,加速大量退款订单的信息同步至金蝶云星空,提高整体流程效率。

  6. 完整生命周期管理(简要提及):从初始配置、持续调优到最终业务上线,每个步骤都经过严密规划和测试,保证全程透明可视化可跟踪。

接下来,我们将详细介绍各个技术环节中的具体实施方法与代码示例,包括如何调用相关API、分页策略设计、异常重试机制等内容。 企业微信与OA系统接口开发配置

使用旺店通·企业奇门接口wdt.refund.query进行数据集成

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用旺店通·企业奇门接口wdt.refund.query获取并加工线上退换货查询-销售退货单的数据。

接口调用配置

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

{
  "api": "wdt.refund.query",
  "method": "POST",
  "number": "refund_no",
  "id": "refund_no",
  "pagination": {
    "pageSize": 40
  },
  "idCheck": true,
  "condition": [
    [
      {"field":"shop_no","logic":"neq","value":"01"},
      {"field":"shop_no","logic":"neq","value":"02"},
      {"field":"shop_no","logic":"neq","value":"03"},
      {"field":"shop_no","logic":"neq","value":"04"},
      {"field":"shop_no","logic":"neq","value":"05"},
      {"field":"shop_no","logic":"neq","value":"06"},
      {"field":"shop_no","logic":"neq","value":"07"},
      {"field":"shop_no","logic":"neq","value":"08"},
      {"field":"shop_no","logic":"neq","value":"09"},
      {"field":"shop_no","logic":"neq","value":"10"},
      {"field":"shop_no","logic":"neq","value":"11"},
      {"field":"shop_no","logic":"neq","value":"12"},
      {"field":"shop_no","logic":"neq","value":"13"},
      {"field":"shop_no","logic":"neq","value":"14"},
      {"field": "type", "logic": "eq", "value": "2"}
    ],
    [
      {"field": "shop_no", "logic": "neq", "value": "01"},
      {"field": "shop_no", "logic": "neq", "value": "02"},
      {"field": "shop_no", "logic": "neq", "value": "03"},
      {"field": "shop_no", "logic": "neq", "value": "04"},
      {"field": "shop_no", "logic": "neq", "value": "05"},
      {"field": "shop_no", "logic": "neq", "value": "06"},
      {"field": "shop_no", "logic": "neq", "value": ":07},
      {"field": ":08},
      {"field: ":09},
      {:"10},
       {:"11},
       {:"12},
       {:"13},
       {:"14},
       {:"3}
     ]
   ],
   request: [
     {
       field: process_status,
       label: 退换单处理状态,
       type: string,
       describe: 退换单处理状态 5 补款 10已取消 20待审核 30已同意 40已拒绝 50待财审 60待收货 63待推送 64推送失败 65委外待收货 69待收货(已结算)70部分到货71部分到货(已结算)80待结算90已完成,
       value:90
     },
     {
       field: time_type,
       label: 时间类型,
       type: string,
       describe:0,最后更新时间,1,结算时间。默认值0
     },
     {
        field:start_time,
        label:开始时间,
        type:string,
        describe:按最后修改(结算)时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss,
        value:{{LAST_SYNC_TIME|datetime}}
     },
     {
        field:end_time,
        label:结束时间,
        type:string,
        describe:按最后修改时间(结算)增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss,
        value:{{CURRENT_TIME|datetime}}
     },
     {
         field: shop no,
         label: 店铺编号,
         type: string,
         describe: 店铺编号
     },
     {
         field: refund no,
         label: Erp内退换单编号,
         type: string,
         describe: Erp内退换单编号,传该字段可以不传时间
     },
     {
         field: src refund no,
         label: 平台原始退换单号,
         type: string,
         describe: 平台原始退换单号,传该字段可以不传时间
     },
     {
          field trade no,
          label 系统订单编号,
          type string,
          describe 系统订单编号,传该字段可以不传时间
    },
    {
          field tid,
          label 原始单号,
          type string,
          describe 原始单号,传该字段可以不传时间
    }
]
}

数据请求与清洗

在调用wdt.refund.query接口时,我们需要注意以下几点:

  1. 请求方法

    • 使用POST方法进行数据请求。
  2. 分页处理

    • 每次请求的数据条数为40条,通过分页机制确保能够完整获取所有符合条件的数据。
  3. 条件过滤

    • 根据店铺编号和退换单类型进行过滤,以确保只获取特定店铺和类型的退换货数据。
    • 条件示例:
      [
      {“field”: “type”, “logic”: “eq”, “value”: “2”}
      ]
  4. 增量获取

    • 利用start_timeend_time参数实现增量数据获取,从而避免重复拉取历史数据,提高效率。

数据转换与写入

在成功获取到源系统的数据后,需要对其进行必要的清洗和转换,以便写入目标系统。以下是一些常见的数据清洗操作:

  1. 字段映射

    • 将源系统中的字段映射到目标系统对应的字段。例如,将源系统中的refund_no映射为目标系统中的return_order_id
  2. 数据格式转换

    • 将日期格式从yyyy-MM-dd HH:mm:ss转换为目标系统所需的格式。
  3. 异常数据处理

    • 对于缺失或异常的数据进行处理,例如填充默认值或丢弃无效记录。

通过上述步骤,我们能够高效地从旺店通·企业奇门接口中获取并加工线上退换货查询-销售退货单的数据,为后续的数据集成打下坚实基础。 如何对接金蝶云星空API接口

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

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现步骤和细节。

1. 配置API接口

首先,我们需要配置金蝶云星空的API接口。根据元数据配置,使用batchSave API进行批量保存操作。该API使用POST方法,并且支持ID检查。

{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    }
}

2. 请求参数配置

在请求参数中,我们需要配置具体的字段及其对应的值。这些字段包括单据类型、单据编号、销售组织、日期、库存组织、退货客户等。以下是详细的字段配置:

{
    "request": [
        {
            "field": "FBillTypeID",
            "label": "单据类型",
            "type": "string",
            "describe": "单据类型",
            "parser": {
                "name": "ConvertObjectParser",
                "params": "FNumber"
            },
            "value": "XSTHD01_SYS"
        },
        {
            "field": "FBillNo",
            "label": "单据编号",
            ...
        },
        ...
    ]
}

3. 数据转换与解析

为了确保数据能够被目标平台正确接收,我们需要对部分字段进行解析和转换。例如,销售组织(FSaleOrgId)、库存组织(FStockOrgId)等字段需要通过特定的查询语句从源数据中提取并转换为目标格式。

{
    ...
    {
        "field": "FSaleOrgId",
        "label": "销售组织",
        ...
        "value": "_findCollection find FSaleOrgId_FNumber from 9b7e7d5b-6768-3b31-9910-af21746cbc34 where FNumber={shop_no}",
        ...
    },
    ...
}

4. 明细信息处理

对于明细信息(FEntity),我们需要处理多个子字段,包括物料编码(FMaterialId)、实退数量(FRealQty)、价税合计(FALLAMOUNT)等。这些字段通常以数组形式存在,需要逐一解析和赋值。

{
    ...
    {
        "field": "FEntity",
        ...
        {
            ...
            {
                "field": "FMaterialId",
                ...
                "value": "{{refund_order_list.spec_no}}"
            },
            {
                ...
                {
                    ...
                    {
                        ...
                        {
                            ... 
                            ... 
                            ... 
                        }
                    }
                }
            }
        }
    }
}

5. 财务信息处理

财务信息(SubHeadEntity)也需要特别处理,包括结算组织(FSettleOrgId)、第三方单据编号(FThirdBillNo)等。这些信息通常与业务逻辑密切相关,需要准确无误地映射到目标平台。

{
    ...
    {
        ...
        {
            ...
            {
                ... 
                ... 
                ... 
                ... 
                ... 
                ... 
                ... 
                ... 
            }
        }
    }
}

6. 提交并审核

在所有字段配置完成后,我们可以将数据提交到金蝶云星空,并选择是否自动提交和审核。在本案例中,我们选择自动提交并审核。

{
    ...
    {
        ...
        {
            ... 
            { 
              ...  
              {  
                 ...  
                 {  
                    {  
                       {  
                          {  
                             {  
                                {  
                                   {  
                                      {  
                                         {  
                                            {  
                                               {  
                                                  {  
                                                     {  
                                                        {   
                                                           {   
                                                              {   
                                                                 {   
                                                                    {   
                                                                       true   
                                                                    }   
                                                                 }   
                                                              }   
                                                           }   
                                                        }   
                                                     }   
                                                  }   
                                               }   
                                            }    
                                         }    
                                      }    
                                   }    
                                }    
                             }    
                          }    
                       }    
                    }    
                 }    
              }    
           }     
       ]     
   ]     
}     

通过上述步骤,我们成功地将源平台的数据经过ETL转换后写入了金蝶云星空API接口。这个过程不仅确保了数据的一致性和准确性,还大大提升了业务处理效率。 系统集成平台API接口配置

更多系统对接方案