集成金蝶云星空与MySQL的销售订单数据:技术详解

  • 轻易云集成顾问-谢楷斌

MOM-XSDD-销售订单-表头-状态刷新:金蝶云星空到MySQL的数据集成实现

在现代企业的运营过程中,数据集成是确保各业务系统高效协同的重要环节。本文将介绍一个具体案例,演示如何通过MOM-XSDD方案,将金蝶云星空中的销售订单数据高效、可靠地集成到MySQL数据库中。

金蝶云星空API调用与数据获取

为了从金蝶云星空系统中获取所需的销售订单表头信息,我们使用了executeBillQuery API接口。该接口支持定时抓取和分页处理,有助于我们应对大量数据带来的压力,并保证不漏单。在此过程中,我们还采用了异常检测机制,以便及时发现并解决潜在问题。

数据转换与质量监控

由于金蝶云星空中的数据格式可能与MySQL存在差异,因此我们设计了一套自定义的数据转换逻辑,以适应不同的业务需求和结构。同时,通过轻易云平台提供的数据质量监控功能,可以实时追踪每个数据处理环节,确保传输过程中的高度准确性。

高吞吐量写入与批量操作

在成功获取并转换好需要的数据后,下一步就是将这些信息快速、安全地写入到MySQL数据库中。借助于轻易云平台强大的高吞吐量支持以及批量操作能力,大规模的数据能够迅速进入目标数据库,从而极大提升整体效率。此外,我们还针对MySQL进行了特殊配置,以优化其性能,包括对分页和限流问题的处理,以及定制化的映射对接。

集中监控与告警系统

为了进一步提高任务执行过程中的可控性,本次集成项目引入了集中监控和告警系统。这一系统不仅能实时跟踪每个任务节点的状态,还可以预先设定告警规则,当发生异常情况时立即通知相关人员进行干预。有了这一保障,即使面对复杂多变的实际应用环境,也能确保整个流程平稳运行。

接下来,让我们深入探讨具体实施步骤及技术细节,通过详细讲解来复现这个案例,实现真正意义上的端到端无缝数据集成。 泛微OA与ERP系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取销售订单表头信息,并对数据进行初步加工。

接口配置与请求参数

在轻易云数据集成平台上,配置元数据是实现接口调用的关键步骤。以下是针对金蝶云星空executeBillQuery接口的元数据配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FID",
  "name": "FBillNo",
  "request": [
    {"field":"FID","label":"FID","type":"string","describe":"FID","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
    {"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"销售组织","value":"FSaleOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
    {"field":"FCloseStatus","label":"关闭状态","type":"string","describe":"关闭状态","value":"FCloseStatus"},
    {"field":"FCloserId","label":"关闭人","type":"string","describe":"关闭人","value":"FCloserId.fname"},
    {"field":"FCloseDate","label":"关闭日期","type":"string","describe":"关闭日期","value":"FCloseDate"},
    {"field":"FCancelStatus","label":"作废状态","type":"string","describe":"作废状态","value":"FCancelStatus"},
    {"field":"FCancellerId","label":"作废人","type":"","describe":"","value":""},
    {"field":"","label":"","type":"","describe":"","value":""}
  ],
  "otherRequest":[
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "5000"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "", "value": "{PAGINATION_START_ROW}"},
    {"field": "", "", "", "", ""},
    {"field":"","label":"","type":"","describe":"","value":""}
  ],
  ...
}

请求参数解析

  1. 基本字段

    • FID: 唯一标识符,用于唯一确定一条记录。
    • FBillNo: 单据编号,是业务操作中的关键字段。
    • FDocumentStatus: 单据状态,用于判断当前单据的处理阶段。
    • FSaleOrgId_FNumber: 销售组织编号,关联到具体的业务部门。
    • FDate: 单据日期,记录单据生成或修改的时间。
    • FCloseStatus: 单据关闭状态,标识单据是否已完成或关闭。
    • FCloserId: 关闭人,记录执行关闭操作的用户。
    • FCloseDate: 关闭日期,记录单据被关闭的时间。
    • FCancelStatus: 作废状态,标识单据是否被作废。
  2. 其他请求参数

    • Limit: 最大行数,用于分页查询时限制返回的数据量。
    • StartRow: 开始行索引,用于分页查询时指定起始位置。
    • FilterString: 过滤条件,用于筛选符合特定条件的数据。例如:"FModifyDate>='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus='C'"

数据请求与清洗

在配置好元数据后,通过轻易云平台发起POST请求,从金蝶云星空系统中获取销售订单表头信息。示例请求体如下:

{
  "FormId": "SAL_SaleOrder",
  ...
}

响应结果会包含多个字段,根据业务需求,可以对这些字段进行初步清洗和转换。例如,将日期格式统一转换为标准格式,将状态码转换为可读文本等。

数据转换与写入

在获取并清洗完数据后,需要将其转换为目标系统所需的格式,并写入目标数据库或系统。这一步通常包括以下操作:

  1. 字段映射:将源系统字段映射到目标系统字段。例如,将FBillNo映射到目标系统中的订单编号字段。
  2. 数据类型转换:确保源系统的数据类型与目标系统匹配。例如,将字符串类型的日期转换为目标系统所需的日期格式。
  3. 批量写入:为了提高效率,可以将处理好的数据批量写入目标系统。

通过上述步骤,可以高效地实现从金蝶云星空获取销售订单表头信息,并将其集成到其他业务系统中。 金蝶云星空API接口配置

使用轻易云数据集成平台进行ETL转换并写入MySQL API接口的技术案例

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台 MySQL API 接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。

数据请求与清洗

首先,我们从源系统中提取数据。这一步已经完成,现在我们关注如何将这些数据转换为目标系统所需的格式,并通过API接口写入MySQL数据库。

数据转换与写入

在本案例中,我们使用的是一个名为“MOM-XSDD-销售订单-表头-状态刷新”的集成方案。该方案涉及多个字段的数据转换和写入操作。以下是元数据配置:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {"field": "fbillno", "label": "fbillno", "type": "string", "value": "{FBillNo}"},
        {"field": "DATE", "label": "DATE", "type": "string", "value": "{FDate}"},
        {"field": "KINGDEE_ID", "label": "KINGDEE_ID", "type": "string", "value": "{FID}"},
        {"field": "DOCUMENT_STATUS", "label": "DOCUMENT_STATUS", 
            "type":"string","value":"{FDocumentStatus}"},
        {"field":"CLOSE_STATUS","label":"CLOSE_STATUS","type":"string","value":"{FCloseStatus}"},
        {"field":"CLOSER_NAME","label":"CLOSER_NAME","type":"string","value":"{FCloserId}"},
        {"field":"CLOSE_DATE","label":"CLOSE_DATE","type":"string",
            "value":"_function case '{FCloseDate}' when '' then null else '{FCloseDate}' end"},
        {"field":"CANCEL_STATUS","label":"CANCEL_STATUS","type":"string","value":"{FCancelStatus}"},
        {"field":"CANCELLER_NAME","label":"CANCELLER_NAME","type":"string","value":"{FCancellerId}"},
        {"field":"CANCEL_DATE","label":"CANCEL_DATE","type":"string",
            "value":"_function case '{FCancelDate}' when '' then null else '{FCancelDate}' end"},
        {"field":"SYNC_FLAG","label":"SYNC_FLAG","type":"string","value":"1"}
      ]
    }
  ],
  “otherRequest”: [
    {
      “field”: “main_sql”,
      “label”: “main_sql”,
      “type”: “string”,
      “describe”: “111”,
      “value”: “update ty_mes.mt_so_head set DATE=:DATE,KINGDEE_ID=:KINGDEE_ID,DOCUMENT_STATUS=:DOCUMENT_STATUS,CLOSE_STATUS=:CLOSE_STATUS,CLOSER_NAME=:CLOSER_NAME,CLOSE_DATE=:CLOSE_DATE,CANCEL_STATUS=:CANCEL_STATUS,CANCELLER_NAME=:CANCELLER_NAME,CANCEL_DATE=:CANCEL_DATE,SYNC_FLAG=:SYNC_FLAG where so_number=:fbillno”
    }
  ]
}

元数据解析与配置

  1. API接口配置:我们使用POST方法调用execute API接口,确保请求方式和接口名称正确。

  2. 字段映射:根据元数据配置,将源系统中的字段映射到目标系统所需的字段。例如:

    • fbillno 映射到 {FBillNo}
    • DATE 映射到 {FDate}
    • KINGDEE_ID 映射到 {FID}
    • DOCUMENT_STATUS 映射到 {FDocumentStatus}
    • 等等。
  3. 特殊处理:对于日期字段,如CLOSE_DATECANCEL_DATE,需要进行特殊处理。如果原始值为空字符串,则转换为null,否则保留原始值。这通过函数 _function case '{FCloseDate}' when '' then null else '{FCloseDate}' end 实现。

  4. 同步标志:添加一个固定值字段 SYNC_FLAG,其值为 1,用于标识同步状态。

  5. SQL更新语句:构建用于更新MySQL数据库的SQL语句,通过占位符绑定参数,实现动态更新。例如:

    update ty_mes.mt_so_head set 
       DATE = :DATE, 
       KINGDEE_ID = :KINGDEE_ID, 
       DOCUMENT_STATUS = :DOCUMENT_STATUS, 
       CLOSE_STATUS = :CLOSE_STATUS, 
       CLOSER_NAME = :CLOSER_NAME, 
       CLOSE_DATE = :CLOSE_DATE, 
       CANCEL_STATUS = :CANCEL_STATUS, 
       CANCELLER_NAME = :CANCELLER_NAME, 
       CANCEL_DATE = :CANCEL_DATE, 
       SYNC_FLAG = :SYNC_FLAG 
    where so_number = :fbillno

实际操作步骤

  1. 配置API请求参数:根据元数据配置,将所有字段及其对应值封装到请求体中。
  2. 发送API请求:通过HTTP POST方法发送请求至MySQL API接口。
  3. 处理响应结果:接收并解析API响应,检查是否成功执行更新操作。如果失败,根据错误信息进行调试和修正。

以上就是将源平台数据经过ETL转换后,通过MySQL API接口写入目标平台的详细技术过程。在实际应用中,根据具体业务需求和系统环境,可以对上述步骤进行适当调整,以实现最佳的数据集成效果。 企业微信与OA系统接口开发配置

更多系统对接方案