使用轻易云实现金蝶云API的数据转换与推送

  • 轻易云集成顾问-卢剑航

MySQL数据集成到金蝶云星空的实施案例分享

在本次技术案例中,我们重点探讨如何将MySQL数据库中的制造一处领料单新增信息,通过轻易云数据集成平台高效、稳定地写入到金蝶云星空系统。具体方案名称为"ZZ组装机加件生产领料单新增-制造一处-last1",该方案具备较强的实际操作意义及参考价值。

数据获取与处理

首先,MySQL作为源系统,通过API接口select从定义好的表字段中提取待集成的数据。在这一过程中,我们需要确保以下几点关键技术:

  1. 定时可靠的数据抓取:通过设定计划任务,实现周期性、多频率地对数据进行访问和抓取,以保证所获取的数据实时性。
  2. 分页与限流策略:为了避免大规模数据查询导致网络堵塞或数据库服务器过载,对API调用加入分页处理,并设置合理限流策略,确保每次请求都能顺利返回。

数据转换与映射

在源头成功抓取数据后,面临的下一个挑战是如何将MySQL中的原始数据转换为符合金蝶云星空接收格式的数据结构。这里我们采用自定义转换逻辑,根据业务需求调整字段映射关系以及数值单位等参数,从而使两端系统无缝对接。这一部分主要涉及两个核心功能:

  1. 自定义数据转换逻辑:根据业务需求和目标系统要求,自行编写转化规则,使得不同格式和结构类型的数据能够正确匹配。
  2. 可视化设计工具:使用轻易云提供的直观可视化界面,将多个步骤串联起来,如同流程图般简洁明了,使整体过程更容易管理、调试和优化。

数据推送与监控

当完成所有必要的转换工作后,就可以利用金蝶云星空提供的API接口batchSave,批量快速地将经过处理后的数据信息写入目标系统。这一步骤注重的是高吞吐、高效率及异常情况下错误重试机制:

  1. 大量数据快速写入:借助于轻易云强大的并发能力,高效且有序地向金蝶云星空推送大量加工后的领料单信息。
  2. 集中监控与告警:实时跟踪整个过程中每个环节的状态,一旦出现任何故障或性能瓶颈,即刻触发告警机制以便及时排查解决问题。

通过这种方式,不仅实现了从MySQL至金蝶云星空之间全面完整的数据传输,还保证了整个过程透明、高效、可靠。本篇文章开头部分 打通钉钉数据接口

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

在轻易云数据集成平台的生命周期中,调用源系统MySQL接口select获取并加工数据是至关重要的一步。本文将深入探讨如何通过配置元数据,实现从MySQL数据库中高效、安全地获取所需数据,并进行初步加工。

配置元数据详解

首先,我们需要理解元数据配置中的各个字段及其作用。以下是一个详细的元数据配置示例:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "id": "sourceid",
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "限制结果集返回的行数",
          "type": "int",
          "describe": "必要的参数!LIMIT 子句用于限制查询结果返回的行数。它指定了查询应该返回的最大行数。例如,LIMIT 10 表示查询结果只包含最多 10 行数据。这对于分页查询非常有用,可以在每次查询中返回一定数量的结果。",
          "value": "{PAGINATION_PAGE_SIZE}"
        },
        {
          "field": "offset",
          "label": "偏移量",
          "type": "int",
          "describe": "OFFSET 子句用于指定查询结果的起始位置或偏移量。它表示查询应该从结果集的哪一行开始返回数据。例如,OFFSET 20 表示查询应该从结果集的第 21 行开始返回数据。结合 LIMIT 子句使用时,OFFSET 指定了查询结果的起始行数。",
          "value": "{PAGINATION_START_ROW}"
        }
      ]
    }
  ],
  ...
}

主SQL语句优化

在这个配置中,main_sql字段定义了主要的SQL查询语句。为了确保动态字段与请求参数一一对应,我们采用参数绑定的方法:

select a.fmobillno as 生产订单号,
       a.fmaterialid as 成品编号,
       c.fqty as 订单数量,
       a.fmtono as 计划跟踪号,
       a.requisit_no as 领料单号,
       a.FMOID as 生产订单内码,
       a.fmoentryid as 生产订单明细内码,
       b.Fbillno as 用料清单编号,
       b.fid as 用料清单内码,
       b.fentity_fentryid as 用料清单明细内码,
       date(a.create_time) as 日期,
       b.fmaterialid2 as 物料编号,
       b.picking_num as 数量,
       c.FWorkShopID as 车间,
       CONVERT(b.id, CHAR) as sourceid,
       d.real_name as kingdee_user_id,
       m.delivery_org as 供应组织,
       c.fseq as 生产订单行号
from production_material_requisition_head a 
left join production_material_requisition_info b on a.requisit_no=b.requisit_no
left join mbs_assemble_detail c on c.fid=a.FMOID and c.fentryid=a.fmoentryid
left join sys_user d on a.create_by=d.user_id
left join mbs_order_plan_bom l on a.fmtono=l.bom_no
left join mbs_order_bom m on m.bom_uuid=l.bom_uuid
where a.is_success<>1
limit ? offset ?

在执行查询之前,通过参数绑定方法,将请求参数值与占位符进行对应绑定。这种方式不仅提高了查询语句的可读性和维护性,还确保了动态字段与请求参数的正确对应关系,从而保证了查询的准确性和安全性。

请求参数设置

在元数据配置中,我们定义了两个关键请求参数:limitoffset。这些参数用于控制分页查询:

  • limit: 限制返回的数据行数。
  • offset: 指定从哪一行开始返回数据。

例如,当我们设置{PAGINATION_PAGE_SIZE}为10,{PAGINATION_START_ROW}为20时,生成的SQL语句将会是:

select ... from ... where ... limit 10 offset 20;

这意味着查询将从第21行开始,最多返回10行数据。

数据加工与处理

通过上述配置,我们成功地从MySQL数据库中获取了所需的数据。在实际应用中,这些数据通常需要进一步加工,例如格式转换、字段映射等,以满足业务需求。

轻易云平台提供了一系列工具和功能,可以帮助我们实现这些操作。例如,我们可以使用平台自带的数据转换功能,将日期格式转换为标准格式,或者将某些字段值映射到特定业务含义上。

实时监控与调试

为了确保整个过程顺利进行,我们可以利用平台提供的实时监控功能,对每一步的数据流动和处理状态进行监控。一旦发现异常情况,可以立即进行调试和修正,从而极大提升业务透明度和效率。

通过上述步骤,我们可以高效、安全地调用源系统MySQL接口select获取并加工所需数据,为后续的数据转换与写入奠定坚实基础。 用友与CRM系统接口开发配置

使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入

在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一环。本文将深入探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。

数据请求与清洗

在此阶段,我们假设已经完成了对源数据的请求和初步清洗。接下来,我们将重点关注如何利用元数据配置,将这些源数据转换为金蝶云星空API所需的格式。

数据转换与写入

我们将使用提供的元数据配置来实现这一过程。以下是具体步骤和技术细节:

  1. API接口定义

    根据元数据配置,我们需要调用金蝶云星空的batchSave API接口,使用POST方法提交数据。接口主要字段如下:

    • FBillNo:单据编号
    • FDate:日期
    • FStockOrgId:发料组织
    • FPrdOrgId:生产组织
    • FMOBillNO1:生产订单号
    • FMaterialID1:产品编码
    • FQty:订单数量
    • 其他字段如仓管员、车间等信息也需一并提交。
  2. 字段映射与转换

    在进行数据转换时,需要将源数据字段映射到目标API字段。例如:

    {
       "FBillNo": "{{领料单号}}",
       "FDate": "{{日期}}",
       "FStockOrgId": "_function  case '{{供应组织}}' when 'T01.01' then 'T01.01'  when 'T04' then 'T04' else '' end",
       "FPrdOrgId": "_function  case '{{供应组织}}' when 'T01.01' then 'T01.01'  when 'T04' then 'T04' else '' end",
       "FMOBillNO1": "{{生产订单号}}",
       "FMaterialID1": "{{成品编号}}",
       "FQty": "{{订单数量}}"
    }
  3. 复杂字段处理

    对于一些复杂字段,如单位、仓库等,需要通过特定函数或查找表进行转换。例如:

    {
       "FUnitID1": "_findCollection find FBaseUnitId_FNumber from 9f845ce5-cf31-3ae6-ab67-21f2d881489b where FNumber={{items.成品编号}}"
    }
  4. 明细处理

    明细部分需要特别注意,其结构较为复杂,包含多层嵌套。每个明细项需逐一映射。例如:

    {
       "FEntity": [
           {
               "FParentMaterialId": "{{成品编号}}",
               "FMaterialId": "{{items.物料编号}}",
               "FAppQty": "_function ROUND(\"{{items.数量}}\" , 2 )",
               "FActualQty": "_function ROUND(\"{{items.数量}}\" , 2 )",
               ...
           }
       ]
    }
  5. 关联关系表

    在处理关联关系表时,需要确保每个关联项都准确无误。例如:

    {
        "FEntity_Link": [
            {
                "FEntity_Link_FRuleId": "PRD_PPBOM2PICKMTRL_NORMAL",
                "FEntity_Link_FSBillId": "{{items.用料清单内码}}",
                ...
            }
        ]
    }
  6. 其他请求参数

    除了主要的数据字段外,还需要设置一些控制参数,例如业务对象表单ID、操作类型等:

    {
        "FormId": "PRD_PickMtrl",
        "Operation": "BatchSave",
        "IsAutoSubmitAndAudit": true,
        ...
    }

实际案例应用

假设我们有一个领料单,其源数据如下:

{
    "领料单号": "LLD202309001",
    "生产订单号": "PO202309001",
    "日期": "2023-09-01",
    ...
}

通过上述步骤,我们可以将其转换为符合金蝶云星空API要求的数据格式,并通过POST方法提交到目标平台。

总结

通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并写入到了金蝶云星空平台。这不仅提高了系统间的数据互操作性,也确保了业务流程的高效运行。在实际应用中,可以根据具体需求进一步调整和优化元数据配置,以适应不同场景。 打通用友BIP数据接口

更多系统对接方案