使用轻易云平台进行生产领料单数据的ETL与集成

  • 轻易云集成顾问-黄宏棵

MySQL数据集成到金蝶云星空:MOM-SCLL-生产领料单新增-OK案例分享

在一次复杂的系统对接任务中,我们成功地实现了MySQL数据库与金蝶云星空之间的数据集成,该项目的方案名称为“MOM-SCLL-生产领料单新增-OK”。本文将详细探讨这一技术实战案例,重点分析如何利用高效的数据处理和监控机制,实现稳定、可靠的大规模数据传输。

我们首先通过MySQL提供的API select接口定时抓取生产领料单数据。为了确保不漏单,我们设计了可靠的数据提取策略。这一过程涉及处理分页和限流问题,以防止因大规模请求导致源数据库性能下降。同时,为提升整体处理时效性,还配置了一套批量获取和异步处理机制。

针对后续的数据写入环节,通过调用金蝶云星空的batchSave API接口进行批量数据存储。在这个过程中,自定义数据转换逻辑起到了至关重要的作用,它帮助我们在不同格式间进行有效映射,保证了数据一致性。此外,我们还部署了一套异常检测与重试机制来应对潜在的问题,如网络延迟或临时故障,从而提高整体集成任务的健壮性。

整个流程受益于轻易云平台提供的集中监控和告警功能。实时跟踪所有API调用状态并记录日志,使得任何问题都能被即时发现,并迅速定位及解决。这种透明化操作极大增加了我们的管理效率,让整个生命周期中的各个环节都变得更为可控。

以上就是本次技术分享开篇部分,具体实施细节将在本文后续章节中进一步展开,包括更多关于MySQL接口查询、分页控制以及如何有效应对两者间的数据格式差异等内容。 金蝶与外部系统打通接口

使用轻易云数据集成平台调用MySQL接口获取并加工数据

在数据集成过程中,调用源系统的接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,通过MySQL接口select方法获取并加工数据。

元数据配置解析

首先,我们来看一下元数据配置中的关键部分:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "number": "单据编号",
  "id": "单据编号",
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "限制结果集返回的行数",
          "type": "int",
          "describe": "...",
          "value": 1000
        },
        {
          "field": "offset",
          "label": "偏移量",
          ...
        }
      ]
    }
  ],
  ...
}

在这个配置中,我们定义了一个主参数对象main_params,其中包含两个子参数:limitoffset。这两个参数用于控制查询结果的分页。

主SQL语句分析

接下来,我们深入分析主SQL语句:

select
t1.iface_id as sourceid,
CONCAT('MSCLL', DATE_FORMAT(t1.creation_date, '%Y%m%d'), t1.iface_id) as '单据编号',
t1.material_code as '物料编号',
ifnull((select aft_quiet_time from ty_mes.mt_account_period where t1.creation_date < aft_quiet_time order by account_period_id desc limit 1), t1.creation_date) as '单据日期',
t2.manufacturing_site_code as '生产组织',
t2.attribute2 as '实体主键',
t2.attribute3 as '明细主键',
t3.head_attribute2 as '生产订单',
SUBSTRING_INDEX(t1.wo_number, '_', -1) as '生产订单行号',
t2.material_code as '成品物料编码',
t1.qty as '申请数量',
t1.fn_num as '仓库',
t3.HEAD_ATTRIBUTE1 as '用料清单编号',
ifnull(t4.value, '15040501') as '车间',
t3.head_attribute8 as '用料清单内码',
t1.pro_mat_list_line_id as '用料清单明细内码',
t2.tracking_num as '计划跟踪号'
from ty_mes.hme_wo_material_sum_iface t1
left join ty_aps.hps_make_order_iface t2 on t1.wo_number = t2.make_order_num
left join ty_aps.mt_bom_component_iface t3 on  t1.wo_number = t3.bom_code and t1.material_code=t3.component_item_code
left join hzero_platform.hpfm_lov_value t4 on t2.department = t4.meaning and t4.lov_code = 'TY.KINGDEE.WORKSHOP' and t2.manufacturing_site_code = t4.tag and t4.enabled_flag = 1
where  t1.status in ('N','E') and t1.iface_type='INPUT' AND t1.iface_sequence=1
limit :limit offset :offset

这段SQL语句通过多个表连接,获取了生产领料单相关的数据,并且使用了动态参数:limit:offset来控制查询结果的分页。

参数绑定与执行

为了确保查询的准确性和安全性,我们需要将动态字段:limit:offset替换为占位符,并在执行查询之前进行参数绑定。例如:

select ... limit ? offset ?

在执行查询时,将具体的值绑定到这些占位符上:

PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setInt(1, limitValue);
pstmt.setInt(2, offsetValue);
ResultSet rs = pstmt.executeQuery();

这种方式不仅提高了SQL语句的可读性和维护性,还能有效防止SQL注入攻击。

数据处理与返回

在获取到查询结果后,可以利用轻易云平台提供的数据处理功能,对结果进行进一步加工。例如,可以对某些字段进行格式化处理,或者根据业务需求进行数据过滤和转换。

通过上述步骤,我们成功实现了从MySQL数据库中调用接口获取并加工数据的过程。这种方法不仅高效,而且确保了数据处理过程的透明性和可追溯性。 轻易云数据集成平台金蝶集成接口配置

使用轻易云数据集成平台将生产领料单数据转换并写入金蝶云星空API

在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并通过金蝶云星空API接口写入目标平台。

数据请求与清洗

首先,我们需要从源平台提取生产领料单的数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的转换和写入打下基础。

数据转换与写入

接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口能够接收的格式,并最终写入目标平台。以下是具体步骤:

  1. 配置元数据

    根据提供的元数据配置,我们需要设置API接口相关的参数。以下是关键配置项:

    {
       "api": "batchSave",
       "effect": "EXECUTE",
       "method": "POST",
       "number": "FBillNo",
       "id": "FID",
       "name": "FBillNo",
       "idCheck": true,
       ...
    }
  2. 构建请求体

    请求体包含了生产领料单的各个字段信息,需要根据元数据配置中的request部分进行映射。例如:

    {
       "FormId": "PRD_PickMtrl",
       "Operation": "BatchSave",
       "IsAutoSubmitAndAudit": true,
       ...
       "Model": {
           ...
           "FBillNo": "{{单据编号}}",
           ...
           "FEntity": [
               {
                   ...
                   "FMaterialId": "{{items.物料编号}}",
                   ...
               }
           ]
       }
    }
  3. 字段解析与映射

    元数据配置中包含了大量字段解析与映射规则,例如:

    {
       "field": "FMaterialID1",
       "label": "产品编码",
       ...
       "parser": {
           "name": "ConvertObjectParser",
           ...
           }
    }

    这些规则确保了源平台的数据能够正确映射到目标平台所需的格式。

  4. 处理明细信息

    明细信息通常是数组形式,需要逐条处理。例如,FEntity字段包含多个子项,每个子项代表一条明细记录:

    {
       ...
       "children":[
           {
               ...
               "field":"FMaterialId",
               ...
               }
           ]
    }
  5. 执行API调用

    配置完成后,通过HTTP POST请求将构建好的请求体发送到金蝶云星空API接口:

    POST /k3cloud/api/batchSave HTTP/1.1
    Host: your-kingdee-cloud-host
    Content-Type: application/json
    Authorization: Bearer your-access-token
    
    {
      // 请求体内容
      ...
    }
  6. 处理响应

    最后,处理API返回的响应,确保数据成功写入。如果出现错误,根据错误信息进行相应调整和重试。

结论

通过上述步骤,我们可以利用轻易云数据集成平台,将生产领料单的数据高效地转换并写入金蝶云星空。精确配置元数据、构建请求体以及正确处理明细信息,是确保整个过程顺利进行的关键。 如何开发金蝶云星空API接口

更多系统对接方案