轻易云平台实现ETL转换并写入金蝶云星空

  • 轻易云集成顾问-彭萍

旺店通·企业奇门数据集成到金蝶云星空:销售出库(寄售业务)案例分享

在企业信息化系统对接过程中,实现数据的无缝流转、确保不遗漏单据和快速批量写入是至关重要的。本文将详细阐述如何通过轻易云数据集成平台,成功完成旺店通·企业奇门与金蝶云星空之间的销售出库(寄售业务)数据对接。

首先,我们需要实现从旺店通获取销售信息,此过程利用了API接口wdt.stockout.order.query.trade。该接口能够高效地从旺店通中提取所需订单数据,同时应注意处理分页和限流机制以保障API调用的稳定性。在实际项目中,通过定时任务可靠抓取这些接口上的最新销售信息,是确保不会漏单的重要手段。

其次,面对大量订单数据,我们必须执行快速、准确的数据写入到金蝶云星空。这一环节使用了金蝶提供的batchSave API,该接口允许批量导入记录,从而极大提升了操作效率。不过,在进行批量导入时,需要特别留意源系统与目标系统间的数据格式差异问题,这就要求我们在映射过程中实施相应的数据转换策略。此外,为保证集成过程中的可靠性,还加入了异常处理与错误重试机制,以防止因意外错误引发的大规模失败。

值得一提的是,为进一步提高透明度和可控性,我们在整个对接流程中实现了实时监控与日志记录。通过这样的设置,可以动态追踪每一个步骤的数据处理状态,有助于及时发现并解决潜在的问题。

综上,通过科学合理地应用API及相关技术手段,我们成功完成了一次复杂但高效的系统对接集成。从而不仅满足了企业对于销售信息及时、高效录入ERP系统需求,也充分展示了轻易云平台强大的功能和灵活性。在后续部分,将进一步深入探讨具体实施细节,以及各关键环节代码示例及配置要点。 电商OMS与WMS系统接口开发配置

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

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

接口调用配置

首先,我们需要配置元数据,以确保能够正确调用接口并获取所需数据。以下是关键的元数据配置:

{
  "api": "wdt.stockout.order.query.trade",
  "method": "POST",
  "number": "order_no",
  "id": "stockout_id",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "condition": [
    [
      {
        "field": "shop_no",
        "logic": "like",
        "value": "JS"
      }
    ]
  ],
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "datetime",
      "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "status",
      ...
    }
  ],
  ...
}

请求参数解析

  • start_timeend_time:用于增量获取数据,分别代表上次同步时间和当前时间。
  • status:订单状态,可以过滤特定状态的订单。
  • shop_nowarehouse_no:分别代表店铺编号和仓库编号,用于区分不同店铺和仓库的数据。

这些参数通过POST请求发送到wdt.stockout.order.query.trade接口,以获取销售出库(寄售业务)的相关订单信息。

数据分页处理

由于接口返回的数据可能非常庞大,因此需要分页处理。配置中的pagination字段设置了每页返回的数据条数为100条。分页参数如下:

  • page_size:每页返回的数据条数,默认为100。
  • page_no:页号,从0开始。

在实际调用过程中,需要循环递增page_no,直到所有数据都被成功拉取。

数据清洗与转换

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

  1. 字段映射:将源系统的字段映射到目标系统。例如,将stockout_no映射为目标系统中的出库单号。
  2. 数据格式转换:将日期时间字段从字符串格式转换为标准的日期时间对象。
  3. 异常值处理:过滤掉不符合业务规则的异常值,例如状态为“已取消”的订单。

示例代码片段:

def clean_and_transform(data):
    cleaned_data = []
    for record in data:
        if record['status'] != '5': # 排除已取消订单
            transformed_record = {
                'order_number': record['order_no'],
                'stockout_number': record['stockout_no'],
                'shop_code': record['shop_no'],
                'warehouse_code': record['warehouse_no'],
                'order_date': datetime.strptime(record['start_time'], '%Y-%m-%d %H:%M:%S')
            }
            cleaned_data.append(transformed_record)
    return cleaned_data

数据写入

经过清洗和转换后的数据可以写入目标数据库或其他存储系统。这一步通常涉及到批量插入操作,以提高效率。

示例代码片段:

def write_to_database(cleaned_data, db_connection):
    with db_connection.cursor() as cursor:
        for record in cleaned_data:
            cursor.execute(
                """
                INSERT INTO sales_orders (order_number, stockout_number, shop_code, warehouse_code, order_date)
                VALUES (%s, %s, %s, %s, %s)
                """, 
                (record['order_number'], record['stockout_number'], record['shop_code'], record['warehouse_code'], record['order_date'])
            )
        db_connection.commit()

通过上述步骤,我们实现了从旺店通·企业奇门接口获取销售出库(寄售业务)订单数据,并对其进行清洗、转换和写入目标数据库的全过程。这一过程不仅确保了数据的一致性和完整性,还极大地提升了业务处理效率。 企业微信与OA系统接口开发配置

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

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下将详细介绍如何利用轻易云数据集成平台实现这一过程。

1. API接口配置

首先,我们需要配置金蝶云星空的API接口。根据提供的元数据配置,我们使用batchSave API,方法为POST,并启用ID检查(idCheck: true)。

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

2. 请求参数配置

请求参数包括单据编号、单据类型、业务类型等字段。每个字段都需要根据源数据进行相应的转换和映射。例如:

  • FBillNo: 单据编号,直接从源数据中的order_no字段获取。
  • FBillTypeID: 单据类型,固定值为ZJDB07_SYS
  • FSaleOrgId: 销售组织,根据不同的店铺名称(shop_name)进行映射。
{
  "field": "FBillNo",
  "label": "单据编号",
  "type": "string",
  "describe": "单据编号",
  "value": "{order_no}"
},
{
  "field": "FBillTypeID",
  "label": "单据类型",
  "type": "string",
  "describe": "单据类型",
  "value": "ZJDB07_SYS",
  ...
},
{
  ...
}

3. 数据转换逻辑

对于复杂的数据转换逻辑,例如销售组织(FSaleOrgId)和结算组织(FSettleOrgId),我们使用条件语句进行映射:

{
  "field": "FSaleOrgId",
  ...
  "value": "_function case when '{shop_name}' like '%古神%' then 102 when '{shop_name}' like '%广州格物%' then 101 when '{shop_name}' like '%绿星%' then 104 when '{shop_name}' like '%蓝阳%' then 105 when '{shop_name}' like '%金秋%' then 106 when '{shop_name}' like '%广西格物%' then 103 ELSE 100 end"
},
{
   ...
}

这种方式确保了不同店铺名称对应到正确的组织ID。

4. 明细信息处理

明细信息(FBillEntry)是一个数组,每个元素包含物料编码、调拨数量等字段。我们需要对每个字段进行相应的解析和转换:

{
   ...
   {
      "field":"FBillEntry",
      ...
      {
         ...
         {
            "field":"FMaterialId",
            ...
            value":"{{details_list.spec_no}}"
         },
         {
            ...
            value":"{{details_list.num}}"
         },
         {
            ...
         }
      }
   }
}

通过这种方式,可以确保每条明细记录都被正确地解析和传递。

5. 提交与审核

最后,我们需要设置一些额外的请求参数,如表单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"
   }
}

通过这些设置,可以确保数据在写入金蝶云星空后自动提交并审核,提高了处理效率。

总结

通过以上步骤,我们可以利用轻易云数据集成平台,将源平台的数据经过ETL转换后,成功写入到金蝶云星空API接口。这一过程不仅实现了不同系统间的数据无缝对接,还保证了数据的一致性和准确性。 用友与WMS系统接口开发配置

更多系统对接方案