ETL最佳实践:从旺店通到金蝶云星空的数据转换与集成

  • 轻易云集成顾问-李国敏

旺店通·旗舰奇门销售退货单集成金蝶云星空案例

在企业的日常运营中,数据的高效传输和处理至关重要。本文将分享一个具体技术案例,讲述如何实现旺店通·旗舰奇门系统中的销售退货单,与金蝶云星空进行无缝对接。

为了完成这一任务,我们使用了轻易云数据集成平台,通过调用旺店通·旗舰奇门提供的API wdt.wms.stockin.refund.querywithdetail 来获取销售退货单数据,并利用金蝶云星空的批量写入API batchSave 进行数据存储。在整个过程中,我们需要解决以下几个关键技术问题:

首先是确保从旺店通·旗舰奇门接口定时可靠地抓取数据。通过配置自动化定时任务,我们可以设置在特定时间段内多次调用API来获取新的或更新后的销售退货单信息,以确保不会漏掉任何交易记录。

其次是大容量数据快速写入到金蝶云星空。由于业务需求庞大,每天可能有数千笔甚至更多的数据要进行处理,因此我们采用了高吞吐量的数据写入能力,极大的减少了等待时间,提高了工作效率。

另一个挑战是在两个系统之间实现精准的数据格式转换。尽管双方提供了良好的API接口,但其字段和结构或许会有所不同。因此,为了解决这个问题,自定义的数据转换逻辑显得尤为重要。这不仅能够确保每条记录都正确映射,还能满足两者之间协议的一致性需求。

此外,在处理中还需注意分解与限流问题以及异常情况的处理机制。例如,当请求频率超过限制或者出现临时错误时,应能够自动重试并发送告警通知,而无需人工介入。这就需要集成平台拥有强大的监控、告警功能,实时跟踪每个操作步骤和状态变化,即使出现故障也能及时响应与修复。

通过以上这些步骤及相关工具支持,下文将详细描述如何一步步实现这一复杂但有效的数据整合方案,使得两套独立运行的信息系统达到无缝协同工作的目标,从而提升整体管理效能及用户体验。 用友与SCM系统接口开发配置

调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail获取并加工数据

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail,并对返回的数据进行初步加工处理。

接口调用配置

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

{
  "api": "wdt.wms.stockin.refund.querywithdetail",
  "method": "POST",
  "number": "order_no",
  "id": "stockin_id",
  "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",
    ...
    {
      ...
      {
        ...
        {
          ...
        },
        {
          ...
        }
      }
    }
  },
  ...
}

业务参数设置

业务参数包括时间范围、入库单状态、时间条件类型、仓库编码、店铺编号和入库单号等。以下是关键字段的配置:

  • start_timeend_time: 分别表示查询的开始时间和结束时间,使用模板变量动态生成。
  • status: 入库单状态,这里设为80表示已完成。
  • time_type: 时间条件类型,设为1表示按入库时间查询。
  • warehouse_no, shop_nos, stockin_no: 分别表示仓库编码、多个店铺编号(用英文逗号分隔)和入库单号。
{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {"field":"warehouse_no","label":"仓库编码","type":"string","parent":"params"},
                    {"field":"shop_nos","label":"店铺编号","type":"string","describe":"多个店铺编号使用英文逗号分隔","parent":"params"},
                    {"field":"stockin_no","label":"入库单号","type":"string"}
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  ...
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗与转换,以便后续处理。以下是一些常见的数据清洗步骤:

  1. 过滤无效数据: 根据条件过滤掉不需要的数据。例如,根据shop_no字段过滤掉特定店铺的数据。
  2. 字段映射: 将源系统的字段映射到目标系统所需的字段。例如,将order_no映射到目标系统中的订单编号字段。
  3. 格式转换: 将日期格式统一转换为目标系统所需的格式。
{
  ...,
  condition: [
    [
      {"field":"shop_no","logic":"notin","value":"bf796c6,C00314,C00099"}
    ]
  ],
  omissionRemedy: {...}
}

异常处理与补偿机制

为了确保数据集成过程的稳定性,需要设计异常处理与补偿机制。可以通过定时任务(crontab)定期检查并重新发起请求来补偿遗漏的数据。例如,每小时执行一次任务,重新获取过去两小时内的数据:

{
  ...,
  omissionRemedy: {
    crontab: '0 * * * *',
    takeOverRequest: [
      {"field":"params.start_time","value":"_function FROM_UNIXTIME( unix_timestamp() - 7200 , '%Y-%m-%d %H:%i:%s' )","type":"datetime"},
      {"field":"params.end_time","value":"_function FROM_UNIXTIME( unix_timestamp() - 3600 , '%Y-%m-%d %H:%i:%s' )","type":"datetime"}
    ]
  }
}

通过上述配置与处理步骤,我们可以高效地调用旺店通·旗舰奇门接口获取销售退货单数据,并进行必要的清洗与转换,为后续的数据写入和处理奠定基础。 如何对接金蝶云星空API接口

轻易云数据集成平台:将销售退货单数据转换并写入金蝶云星空API接口

在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将从源系统(如旺店通)提取的销售退货单数据,转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。

元数据配置解析

元数据配置是实现数据转换和写入的核心。以下是针对销售退货单的元数据配置解析:

{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    },
    "request": [
        {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSTHD01_SYS"},
        {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
        {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","value":"100.01","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","value":"{shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"},"mapping":{"target":"65693884484e3b37ea13d9f4","direction":"positive"}},
        {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{modified}"},
        {"field":"FRetcustId","label":"退货客户","type":"string","describe":"基础资料","value":"{shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FSaledeptid","label":"销售部门","type":"string","describe":"","parser":{"name":"","params":""}},
        {"field":...}
    ],
    ...
}

数据字段映射与转换

  1. 单据类型(FBillTypeID)

    • 固定值XSTHD01_SYS,通过ConvertObjectParser解析为金蝶系统识别的编码。
  2. 单据编号(FBillNo)

    • 从源系统获取订单编号,直接映射为目标系统的FBillNo字段。
  3. 库存组织(FStockOrgId)

    • 固定值100.01,通过ConvertObjectParser解析为金蝶系统识别的编码。
  4. 销售组织(FSaleOrgId)

    • 从源系统获取店铺编号,通过ConvertObjectParser进行编码转换,并进行正向映射。
  5. 日期(FDate)

    • 从源系统获取修改时间,直接映射为目标系统的日期字段。
  6. 退货客户(FRetcustId)

    • 从源系统获取店铺编号,通过ConvertObjectParser进行编码转换。
  7. 明细信息(FEntity)

    • 包含物料编码、实退数量、含税单价等多个子字段,每个子字段均需要从源系统对应的数据中提取,并进行相应的格式转换和映射。例如,物料编码通过ConvertObjectParser解析为金蝶识别的编码。
  8. 财务信息(SubHeadEntity)

    • 包含结算组织等子字段,从源系统获取店铺编号,通过ConvertObjectParser进行编码转换,并进行正向映射。

API请求配置

在完成所有字段的映射和转换后,需要配置API请求参数:

{
    "FormId": "SAL_RETURNSTOCK",
    "Operation": "Save",
    "IsAutoSubmitAndAudit": true,
    "IsVerifyBaseDataField": true,
    "SubSystemId": 21
}

这些参数确保了数据在提交后自动审核,并验证所有基础资料的有效性,同时指定操作模块为仓库模块。

实践案例

假设我们有一个来自旺店通的销售退货单,其部分数据如下:

{
    "order_no": "TH20231001",
    "shop_no": "S001",
    ...
}

根据上述元数据配置,我们可以生成如下格式的数据请求:

{
    "FormId": "SAL_RETURNSTOCK",
    ...
    "Model": {
        ...
        "FBillNo": "TH20231001",
        ...
        "FSaleOrgId": {
            "FNumber": "S001"
        },
        ...
    }
}

通过POST方法将此请求发送至金蝶云星空API接口,实现数据写入和自动审核。

总结

通过详细解析元数据配置和实际案例,我们展示了如何利用轻易云数据集成平台,将销售退货单从源系统转换并写入到金蝶云星空API接口。这一过程不仅提高了数据处理效率,还确保了各个环节的数据准确性和一致性。 钉钉与CRM系统接口开发配置

更多系统对接方案