轻易云平台上的ETL实践:从金蝶到旺店通数据转换详解

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

金蝶云星空数据集成到旺店通·企业奇门的技术实践

在现代业务流程中,通过高效的数据集成实现系统间的信息互通,是提升企业运营效率的重要手段。本案例将介绍如何利用轻易云数据集成平台,将金蝶云星空中的其他入库单数据,高效、准确地同步至旺店通·企业奇门系统。具体实施方案如“金蝶其他入库单=>旺店通其他入库单(ok)”所示。

为了确保整个过程顺利进行,我们通过调用金蝶云星空的API接口executeBillQuery批量获取待处理的入库单数据,并借助轻易云平台对这些数据进行清洗和格式转换,最终调用旺店通·企业奇门提供的wdt.stockin.order.push API接口,实现大量订单信息快速写入。这一过程中,需要特别关注以下几个技术要点:

  1. 定时可靠的数据抓取:通过配置任务调度机制,确保能够定期从金蝶云星空端拉取最新的其他入库单数据,避免出现漏单情况。

  2. 分页与限流处理:面对大规模的数据访问需求,妥善处理分页以及API请求限流问题,使得每次执行查询操作都能够稳定、完整地提取目标数据。

  3. 实时监控和日志记录:在整个集成流程中,全程开启实时监控和日志记录功能,以保证任何环节出现异常都可以被及时发现并加以调整。

  4. 错误重试机制:对于向旺店通·企业奇门推送订单时可能发生的一些网络或服务端故障,通过设置合理的错误重试策略,进一步提高了成功率并减少手动干预需求。

  5. 异构系统间的数据格式匹配:由于两个系统之间存在一定的数据格式差异,在映射规则设计上,我们针对各字段类型进行了精细化定义,以确保原始数据信息无损传输。 企业微信与ERP系统接口开发配置

    调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery,获取并加工其他入库单的数据。

接口配置与请求参数

首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "condition_bk": [
    [
      {
        "field": "FBillTypeID",
        "logic": "in",
        "value": "ZYD-037,ZYD-113,ZYD-102"
      }
    ]
  ],
  ...
}

该配置指定了API名称为executeBillQuery,请求方法为POST,并且启用了分页,每页大小为500条记录。同时,通过条件过滤(如单据类型FBillTypeID)来限定查询范围。

请求字段

请求字段定义了我们需要从金蝶云星空获取的数据项。以下是部分关键字段的配置:

{
  "request": [
    {
      "field": "FEntity_FEntryID",
      "label": "FEntryID",
      "type": "string",
      "value": "FEntity_FEntryID"
    },
    {
      "field": "FID",
      ...
    },
    {
      ...
    }
  ]
}

这些字段包括实体主键、单据编号、单据状态、库存组织、日期等信息,这些都是在后续数据处理和转换过程中所需的重要数据。

分页与过滤条件

为了高效地处理大量数据,我们使用分页和过滤条件来优化查询。分页参数如下:

{
  ...
  "otherRequest": [
    {
      ...
    },
    {
      ...
    },
    {
      ...
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

其中,LimitStartRow分别表示每页最大行数和起始行索引,而过滤条件则通过FilterString字段来定义。例如:

{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ... 
                    { 
                      ... 
                      { 
                        ... 
                        { 
                          ... 
                          { 
                            ... 
                            { 
                              ... 
                              { 
                                ... 
                                { 
                                  ... 
                                  { 
                                    ... 
                                    { 
                                      ... 
                                      { 
                                        ...  
                                        {  
                                          ...  
                                          {  
                                            ...  
                                            {  
                                              ...  
                                              {  
                                                ...  
                                                {  
                                                  ...  
                                                  {  
                                                    ...  
                                                    {  
                                                      ...  
                                                      {  
                                                        ...  
                                                        {  
                                                          FilterString: `FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber in ( '7000','3000') and (FBillTypeID.FNumber='ZYD-037' or FBillTypeID.FNumber='ZYD-102') and FSTOCKID.FNumber in ('1007','1008','1098','1099','1100')`
                                                        }`
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }`
                        }`
                      }`
                    }`
                  }`
                }`
              }`
            }`
          }`
        }`
      }`
    }`
  }]
}

数据清洗与转换

在获取到原始数据后,需要进行数据清洗与转换,以确保其符合目标系统的要求。例如,将日期格式统一、去除无效字符等操作。这一步骤可以通过轻易云平台提供的数据处理工具来实现。

写入目标系统

最后,将清洗和转换后的数据写入目标系统(如旺店通)。这一过程通常涉及到调用目标系统的API接口,并确保数据格式和内容符合其要求。

通过上述步骤,我们能够高效地从金蝶云星空获取其他入库单的数据,并将其加工后写入目标系统,实现不同系统间的数据无缝对接。这不仅提高了业务透明度和效率,还确保了数据的一致性和准确性。 钉钉与CRM系统接口开发配置

基于轻易云数据集成平台的ETL转换:金蝶其他入库单到旺店通·企业奇门API接口

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,以确保这些数据能够被目标平台——旺店通·企业奇门API接口所接收并处理。本文将深入探讨如何使用轻易云数据集成平台配置元数据,实现从金蝶其他入库单到旺店通其他入库单的无缝转换和写入。

元数据配置解析

我们将通过以下元数据配置完成数据的转换和写入:

{
  "api": "wdt.stockin.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "operation": {
    "method": "merge",
    "field": "FBillNo,FDate,FSTOCKID",
    "bodyName": "details_listss",
    "bodySum": ["F_UHZG_JJQty"],
    "header": ["FBillNo", "FSTOCKID", "FBillTypeID", "FNOTE"],
    "body": ["FMATERIALID_FNumber", "F_UHZG_JJQty", "FPrice", "FLOT", "FEntryNote"]
  },
  "idCheck": true,
  "request": [
    {"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"},
    {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FSTOCKID}"},
    {"field": "remark", "label": "备注", "type": "string", "value": "{FNOTE}"},
    {"field": "is_check", "label": "是否审核", "type": "string", “value”: “1”},
    {"field":"reason","label":"入库原因","type":"string","value":"_function CASE '{FBillTypeID}' WHEN 'ZYD-037' THEN '赠品其他入库' WHEN 'ZYD-102' THEN '无头件退货入库' END"},
    {
      “field”: “goods_list”,
      “label”: “货品明细节点”,
      “type”: “array”,
      “value”: “details_listss”,
      “children”: [
        {"field":"spec_no","label":"商家编码","type":"string","value":"{{details_listss.FMATERIALID_FNumber}}"},
        {"field":"stockin_num","label":"入库数量","type":"string","value":"{{details_listss.F_UHZG_JJQty}}"},
        {"field":"src_price","label":"原价","type":"string","value":"1"},
        {"field":"stockin_price","label":"入库价","type":"string","value":"{{details_listss.FPrice}}"},
        {"field":"batch_no","label":"批次{{details_listss.FLOT}}","type":"string"},
        {"field":"remark","label":"备注","type":"string","value":"{{details_listss.FEntryNote}}"}
      ]
    }
  ],
  “otherRequest”: [
    {“field”: “stockin_info”, “label”: “stockin_info”, “type”: “string”, “describe”: “111”}
  ]
}

数据转换与写入过程

  1. 请求参数构建

    • outer_no 对应金蝶中的 FBillNo,即外部单号。
    • warehouse_no 对应金蝶中的 FSTOCKID,即仓库编号。
    • remark 对应金蝶中的 FNOTE,即备注信息。
    • is_check 固定为 "1",表示是否审核。
    • reason 根据 FBillTypeID 字段的值进行条件判断,分别映射为不同的入库原因。
  2. 货品明细节点

    • 使用数组结构来表示多个货品明细,其中每个子项包含以下字段:
      • spec_no 对应金蝶中的 FMATERIALID_FNumber,即商家编码。
      • stockin_num 对应金蝶中的 F_UHZG_JJQty,即入库数量。
      • src_price 固定为 "1",表示原价。
      • stockin_price 对应金蝶中的 FPrice,即入库价。
      • batch_no 对应金蝶中的 FLOT,即批次号。
      • remark 对应金蝶中的 FEntryNote,即备注信息。
  3. 操作方法

    • 使用 "merge" 方法,通过指定的字段(如 FBillNo, FDate, FSTOCKID)进行合并操作,以确保数据的一致性和完整性。
  4. 其他请求参数

    • 添加额外的请求参数,如 "stockin_info" 用于描述额外的信息。

实际应用案例

假设我们有以下来自金蝶系统的数据:

{
  FBillNo: 'KD20231001',
  FDate: '2023-10-01',
  FSTOCKID: 'WH001',
  FBillTypeID: 'ZYD-037',
  FNOTE: '测试备注',
  details_listss: [
    {
      FMATERIALID_FNumber: 'MAT001',
      F_UHZG_JJQty: '100',
      FPrice: '50',
      FLOT: 'BATCH001',
      FEntryNote: '条目备注'
    }
  ]
}

通过上述元数据配置,我们可以生成如下符合旺店通·企业奇门API接口格式的数据:

{
  outer_no: 'KD20231001',
  warehouse_no: 'WH001',
  remark: '测试备注',
  is_check: '1',
  reason: '赠品其他入库',
  goods_list: [
    {
      spec_no: 'MAT001',
      stockin_num: '100',
      src_price: '1',
      stockin_price: '50',
      batch_no: 'BATCH001',
      remark: '条目备注'
    }
  ],
  stockin_info: ‘111’
}

总结

通过详细解析和应用元数据配置,我们成功实现了从金蝶其他入库单到旺店通·企业奇门API接口的数据ETL转换。这不仅保证了数据的一致性和准确性,也提高了系统间的数据交互效率。利用轻易云数据集成平台,我们能够高效地完成复杂的数据集成任务,为企业提供强有力的数据支持。 用友与SCM系统接口开发配置

更多系统对接方案