商城订单数据处理流程:从MySQL提取到销帮帮合同写入的实现方法

  • 轻易云集成顾问-蔡威

案例分析:3查询商城订单到销帮帮合同接口 (线上:4802697)

在实际业务场景中,将MySQL数据库中的商城订单数据集成到销帮帮的合同接口(/pro/v2/api/contract/add)是一个典型且常见的需求。本文将直接剖析该系统对接案例,深入探讨从MySQL获取数据并推送至销帮帮这一过程中的关键技术点和实现细节。

数据获取与定时抓取

首先,通过MySQL API(select)定期抽取最新的商城订单数据,是整个流程的第一步。在此步骤中,我们采用了可靠的抓取机制,以确保数据不遗漏,包括:

  • 周期性任务调度:利用轻易云的数据集成平台内置的调度功能,实现定时、可靠的数据拉取。
  • 分页与限流:通过适当设置分页大小和限流参数,有效防止单次拉取过多数据导致系统性能瓶颈,同时保证每一次查询都能成功返回结果,避免出现漏单情况。

自定义转换逻辑与格式处理

由于MySQL数据库结构与销帮帮API所需的数据格式存在差异,在进行数据传递前需要做一定程度上的自定义转换。这一过程中涉及:

  • 字段映射:根据销帮帮API要求,对从MySQL取得的原始字段进行重新命名或组合。
  • 数据类型转换:确保不同类型的数据能够正确互转,例如日期格式、金额单位等。 这些操作通过轻易云提供的可视化设计工具可以很方便地完成,让复杂的数据变换过程变得直观易懂。

数据写入及性能优化

在将处理好的数据批量写入到销帮帮合同时,为了充分发挥高吞吐量优势,并提升整体系统性能,这里应用了一些优化策略,如下:

  • 分批提交:为了提高写入效率,每次提交一组合理数量(如500条)的合同信息,避免单个请求负载过大造成超时或失败。
  • 重试机制:针对可能出现网络波动或其他异常情况,设计了多级错误重试机制,以在短时间内快速恢复正常运行状态,保障任务完成率。

此外,由于具备集中监控和告警系统,可以实时跟踪每个集成任务进展情况,并及时响应异常事件,从而有效维护整个链路稳定性。

综上所述,该案例展示了如何借助轻易云平台灵活配置元数据、高效整合不同系统间的信息资源,以及应对具体技术挑战的方法。接下来我们会详细描述具体实现方案及代码示例。 用友与外部系统接口集成开发

调用源系统MySQL接口select获取并加工数据

在数据集成的生命周期中,第一步是从源系统调用数据接口并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用MySQL接口select来获取商城订单数据,并进行必要的预处理。

接口配置与请求参数

首先,我们需要配置MySQL接口的元数据,以便正确地从源系统获取所需的数据。以下是元数据配置的关键部分:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "number": "order_code",
  "id": "order_code",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {"field": "order_status", "label": "订单状态", "type": "string", "value": "2"},
        {"field": "update_time", 
         "label": "创建时间", 
         "type": "datetime", 
         "value":"_function SUBTIME( '{{LAST_SYNC_TIME|datetime}}' ,'05:01:01')"},
        {"field": "limit", 
         "label":"limit", 
         "type":"string", 
         "value":"{PAGINATION_PAGE_SIZE}"},
        {"field":"offset", 
         "label":"offset", 
         "type":"string", 
         "value":"{PAGINATION_START_ROW}"},
        {"field":"customer_source", 
         "label":"crm表单ID", 
         "type":"string", 
         "value":"2246775"}
      ]
    },
    {
      ...
    }
  ],
  ...
}

主查询语句与扩展查询语句

在元数据配置中,主查询语句和扩展查询语句是获取和处理数据的核心部分。

主查询语句 (main_sql):

SELECT middle_order.order_code, middle_order.user_id, middle_order.whether_to_sign_new, middle_order.quotation_desc3, middle_order.order_amount, middle_order.product_amount, middle_order.other_amount, middle_order.discount, middle_order.account_receivable, middle_order.discount_amount, middle_order.sales_amount, middle_order.client_type, middle_order.order_status, middle_order.audit_time, middle_order.create_time, middle_order.update_time, middle_order.customer_code, middle_order.customer_name, middle_order.customer_id, middle_order.customer_source, middle_order.crm_user_id, middle_order.user_name, middle_order.business_user_id, middle_order.business_user_name,middle_order.file_address
FROM middle_order
WHERE  middle_order.`order_status` = :order_status  
AND    middle_order.crm= 1  
AND    middle_order.customer_id!=''  
AND    middle_order.client_type= :customer_source 
AND    middle_order.`update_time`>= :update_time
ORDER BY    middle_order.`create_time` ASC
LIMIT :limit OFFSET :offset

扩展查询语句 (extend_sql_1):

SELECT 
middle_order_details.order_code,
middle_order_details.create_time,
middle_order_details.update_time,
middle_order_details.product_no,
middle_order_details.product_name,
middle_order_details.product_number,
middle_order_details.product_price,
middle_order_details.sales_price,
middle_order_details.total_product_price,
middle_order_details.total_sales_price
FROM    middle_order_details   
WHERE   middle_order_details.`order_code`= :order_code

数据请求与清洗

在执行上述SQL查询时,需要传递适当的参数以确保查询结果准确无误。以下是关键参数及其作用:

  • order_status: 用于过滤订单状态。
  • update_time: 用于筛选最近更新的数据。
  • limitoffset: 用于分页控制,确保每次请求的数据量适中。
  • customer_source: 用于指定CRM表单ID。

通过这些参数,我们可以灵活地控制数据请求的范围和粒度,从而提高数据处理效率。

数据转换与写入

在获取并清洗完原始数据后,下一步是将其转换为目标系统所需的格式,并写入目标数据库。这一步通常涉及复杂的数据映射和转换逻辑,但在本文中不做详细探讨。

实践案例

假设我们需要从商城订单系统中提取所有状态为“已完成”的订单,并将其同步到销帮帮合同接口。我们可以按照以下步骤进行操作:

  1. 配置元数据:如上所述,设置好主查询和扩展查询的SQL语句,以及必要的请求参数。
  2. 执行查询:通过轻易云平台发起POST请求,执行主查询语句获取订单基本信息。
  3. 处理结果:根据返回的订单编码,再次发起POST请求,执行扩展查询语句获取订单详情信息。
  4. 数据清洗:对返回的数据进行必要的格式化和清洗操作,以满足目标系统的要求。
  5. 写入目标系统:将处理后的数据写入销帮帮合同接口。

通过以上步骤,我们实现了从源系统MySQL接口select获取并加工商城订单数据的全过程。这不仅提高了数据集成效率,还确保了业务流程的透明性和可追溯性。 用友与SCM系统接口开发配置

使用轻易云数据集成平台实现商城订单到销帮帮合同接口的ETL转换

在数据集成生命周期的第二阶段,我们将重点探讨如何将已集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台销帮帮API接口所能接收的格式,并最终写入目标平台。本文将详细介绍如何配置元数据,以实现这一过程。

API接口配置

我们使用销帮帮提供的API接口/pro/v2/api/contract/add,通过POST方法提交合同数据。以下是元数据配置的关键字段及其含义:

{
  "api": "/pro/v2/api/contract/add",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  ...
}

请求参数配置

请求参数包括多个字段,其中一些字段是简单的字符串映射,而另一些则需要进行复杂的数据转换和处理。以下是主要字段及其配置说明:

  1. 基础字段映射

    • corpiduserId 是固定值或简单映射值。
    • formId 是表单ID,直接映射为固定值 4802697
  2. 合同基本信息

    • serialNo:合同编号,映射为 {order_code}
    • text_15:签约状态,映射为 {whether_to_sign_new}
    • text_2:客户名称(CRM客户ID),映射为 {customer_id}
    • text_8:签订人(crm用户ID),映射为 {business_user_id}
    • date_1:签订日期,通过函数 _function UNIX_TIMESTAMP( {{create_time|UNIX_TIMESTAMP}} ) 转换时间戳。
  3. 关联产品信息

    • array_4:关联产品,是一个数组字段,需要对每个产品进行详细配置,包括单价、折扣、售价等信息。通过 _mongoQuery 查询产品ID,并映射其他相关字段。
  4. 付款时效

    • array_5:付款时效,通过解析器将字符串转换为数组。
  5. 拆扣和优惠金额

    • text_23:拆扣,通过 _function CASE WHEN ... THEN ... END 实现条件判断。
    • num_28:优惠金额,通过 _function {product_amount}-{sales_amount} 计算得出。
  6. 其他费用和合同金额

    • num_27num_1 分别表示其他费用和合同金额,直接映射相应值。
  7. 客户信息

    • 客户创建日期、客户名称等信息通过 _mongoQuery 查询获取,并进行相应的字段映射。

数据清洗与转换

在数据清洗与转换过程中,我们需要特别注意以下几点:

  1. 时间戳转换: 使用 _function UNIX_TIMESTAMP( {{create_time|UNIX_TIMESTAMP}} ) 将原始时间格式转换为Unix时间戳,以符合目标平台要求。

  2. 条件判断: 使用 _function CASE WHEN ... THEN ... END 实现对拆扣范围的判断,根据不同区间设置不同的值。

  3. 数组解析: 对于需要解析为数组的字段,如付款时效和协同人等,通过解析器 "parser":{"name":"StringToArray","params":","} 将字符串按指定分隔符解析为数组格式。

  4. MongoDB查询: 对于需要从MongoDB查询的数据,如关联产品信息和客户地址等,通过 _mongoQuery 实现动态查询,并将结果映射到相应字段。

数据写入

完成所有数据清洗与转换后,通过POST请求将整理好的数据发送到销帮帮API接口,实现最终的数据写入。确保所有必填字段都已正确配置,并且数据格式符合API要求,以保证写入操作成功执行。

以上是使用轻易云数据集成平台实现商城订单到销帮帮合同接口ETL转换的详细步骤和技术要点。通过合理配置元数据和有效的数据处理方法,可以确保源平台的数据顺利转化并写入目标平台,实现系统间的数据无缝对接。 用友与MES系统接口开发配置

更多系统对接方案