金蝶云盘盈单与聚水潭入库单的ETL转换案例

  • 轻易云集成顾问-蔡威

案例分享:金蝶云星空数据集成到聚水潭

在本次技术案例中,我们将探讨如何使用轻易云数据集成平台,实现从金蝶云星空的盘盈单数据到聚水潭其他入库单的数据高效对接。通过这一方案,企业可以确保数据处理的时效性和可靠性,同时优化资源配置。

数据获取与转换

首先,从金蝶云星空获取盘盈单数据采用API接口executeBillQuery。该接口支持分页查询,因此我们需要设计一个定时抓取机制,确保不漏单且能快速响应大量请求。在此过程中,要特别注意处理分页和限流的问题,以保证系统稳定运行。

数据写入及监控

为了将获取的数据写入到聚水潭,需要调用其提供的API /open/jushuitan/otherinout/upload。轻易云的数据写入能力能够实现高吞吐量,使得大量数据可以迅速被传输至目标系统。这不仅提升了整体效率,还保障了业务连续性。此外,通过集中监控和告警系统,可以实时跟踪每个任务的状态与性能,及时发现并解决潜在问题。

自定义转换与异常处理

由于金蝶云星空和聚水潭之间存在数据结构差异,我们必须进行自定义转换逻辑以适应特定需求。这包括字段映射、格式调整等。同时,为应对可能出现的数据异常情况,需要建立健全的错误重试机制。一旦某一批次的数据提交出现失败,可自动重新尝试提交,以保证最终一致性。

通过上述环节的精心设计,这一套完整、可靠、高效的数据集成方案不仅能够满足当前业务需求,还为未来扩展打下坚实基础。在接下来的内容中,将详细介绍每个环节中的具体实现方法及相关代码示例,帮助您更好地理解整个过程。 系统集成平台API接口配置

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

在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery来获取盘盈单数据,并进行初步加工。

接口配置与请求参数

首先,我们需要配置接口和请求参数。根据提供的元数据配置,我们可以看到接口的基本信息如下:

  • API: executeBillQuery
  • Method: POST
  • Effect: QUERY

请求参数主要包括以下几类:

  1. 字段映射:用于定义从金蝶云星空获取的数据字段。
  2. 分页参数:用于控制查询结果的分页。
  3. 过滤条件:用于筛选符合条件的数据。
  4. 表单ID:指定业务对象表单ID。

字段映射

元数据配置中定义了多个字段,这些字段将被用来从金蝶云星空获取相应的数据。以下是一些关键字段及其描述:

  • FBillEntry_FEntryID: 分录ID
  • FID: 实体主键
  • FBillNo: 单据编号
  • FDocumentStatus: 单据状态(暂存、创建、审核中、已审核、重新审核)
  • FStockOrgId_FNumber: 库存组织编码
  • FDate: 日期
  • FBillTypeID_FNumber: 单据类型(如PY01_SYS表示标准盘盈单)
  • FMaterialId_FNumber: 物料编码
  • FAcctQty: 账存数量
  • FCountQty: 盘点数量
  • FGainQty: 盘盈数量

这些字段在请求时会被映射到相应的金蝶云星空API字段,从而确保我们能够获取到所需的数据。

分页参数

为了处理大规模数据,分页是必不可少的。元数据配置中定义了以下分页参数:

  • Limit: 最大行数
  • StartRow: 开始行索引
  • TopRowCount: 返回总行数

这些参数将帮助我们控制每次查询返回的数据量,从而避免一次性加载过多数据导致系统性能问题。

过滤条件

过滤条件用于筛选符合特定条件的数据。在本案例中,我们需要获取已审核的盘盈单,因此过滤条件设置为:

"FilterString": "FDocumentStatus='C' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"

这意味着我们只会获取状态为“已审核”的盘盈单,并且审核日期在上次同步时间之后的数据。

表单ID

表单ID是必须填写的参数,用于指定业务对象表单。在本案例中,表单ID为STK_StockCountGain,表示我们要查询的是库存盘盈单。

"FormId": "STK_StockCountGain"

请求示例

综合以上信息,一个完整的请求示例如下:

{
    "api": "executeBillQuery",
    "method": "POST",
    "request": {
        "FormId": "STK_StockCountGain",
        "FieldKeys": [
            "FBillEntry_FEntryID", 
            "FID", 
            "FBillNo", 
            "FDocumentStatus", 
            "FStockOrgId.FNumber", 
            "FDate", 
            ...
        ],
        "FilterString": "FDocumentStatus='C' and FApproveDate>='2023-01-01T00:00:00'",
        "Limit": 100,
        "StartRow": 0,
        ...
    }
}

数据加工与处理

在成功调用接口并获取到数据后,我们需要对数据进行初步加工。这包括但不限于以下步骤:

  1. 数据清洗:去除无效或重复的数据,确保数据质量。
  2. 格式转换:将原始数据转换为目标系统所需的格式。例如,将日期格式转换为目标系统支持的格式。
  3. 字段映射:根据目标系统要求,对字段进行重新映射和命名。

通过上述步骤,我们可以确保从金蝶云星空获取的数据能够顺利地集成到目标系统中,为后续的数据处理和分析打下坚实基础。

综上所述,通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery,我们能够高效地获取并加工盘盈单数据,为实现不同系统间的数据无缝对接提供了有力支持。 用友与MES系统接口开发配置

使用轻易云数据集成平台将金蝶盘盈单转换为聚水潭其他入库单

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,最终写入目标平台。在本案例中,我们将金蝶的盘盈单转换为聚水潭API接口所能够接收的其他入库单格式,并写入目标平台。

聚水潭API接口配置

根据提供的元数据配置,聚水潭API接口为/open/jushuitan/otherinout/upload,使用POST方法进行数据提交。以下是具体字段及其配置:

  1. is_confirm: 是否确认单据。通过函数判断{F_POKM_JSTSTOCKNUMBER}是否等于10816570,如果是则返回1,否则返回0。

    {"field":"is_confirm","label":"是否确认单据","type":"string","value":"_function IF({F_POKM_JSTSTOCKNUMBER} = 10816570 , 1 , 0 )"}
  2. excute_confirming: 是否审核单据,固定值为true

    {"field":"excute_confirming","label":"是否审核单据","type":"string","value":"true"}
  3. wms_co_id: 仓库编号,直接取自金蝶字段{F_POKM_JSTSTOCKNUMBER}

    {"field":"wms_co_id","label":"仓库编号","type":"int","value":"{F_POKM_JSTSTOCKNUMBER}"}
  4. type: 出入库类型,固定值为in

    {"field":"type","label":"出入库类型","type":"string","value":"in"}
  5. external_id: 外部单号,由金蝶字段{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}拼接而成。

    {"field":"external_id","label":"外部单号","type":"string","value":"{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}"}
  6. remark: 备注信息,包含固定文本和金蝶字段{FBillNo}

    {"field":"remark","label":"备注","type":"string","value":"金蝶盘盈单据推送,单号:{FBillNo}"}
  7. items: 商品明细列表,包括商品编码和入库数量。每个商品编码来自金蝶字段{{list.FMaterialId_FNumber}},入库数量来自金蝶字段{{list.FGainQty}}

    {
     "field": "items",
     "label": "items",
     "type": "array",
     "value": "list",
     "children": [
       {"field": "sku_id", "label": "商品编码", "type": "string", "value": "{{list.FMaterialId_FNumber}}"},
       {"field": "qty", "label": "入库数量", "type": "string", "value": "{{list.FGainQty}}"}
     ]
    }
  8. lc_id, l_id, logistics_company: 物流相关字段,这里可以根据实际需求配置或留空。

  9. drp_co_name: 出库类型,固定值为“盘盈入库”。

    {"field":"drp_co_name","label":"出库类型","type":"string","value":"盘盈入库"}
  10. warehouse: 分仓信息,取自金蝶字段{F_POKM_JSTSTOCKNUMBER2}

    {"field":"warehouse","label":"分仓","type":"string","value":"{F_POKM_JSTSTOCKNUMBER2}"}

数据操作与合并

在实际操作中,我们需要对数据进行合并处理,以便生成符合目标平台要求的数据结构。以下是具体的操作配置:

  • 合并方法:merge
  • 合并字段:FBillNo,F_POKM_JSTSTOCKNUMBER,F_POKM_JSTSTOCKNUMBER2
  • 主体名称:list
  • 表头:包含 FBillNo, F_POKM_JSTSTOCKNUMBER, F_POKM_JSTSTOCKNUMBER2
  • 表体:包含 FMaterialId_FNumber, FGainQty
  • 表体汇总:包含 FGainQty
{
  "operation":{
    "method": "merge",
    "field": "FBillNo,F_POKM_JSTSTOCKNUMBER,F_POKM_JSTSTOCKNUMBER2",
    "bodyName": "list",
    "header":["FBillNo", "F_POKM_JSTSTOCKNUMBER", "F_POKM_JSTSTOCKNUMBER2"],
    "body":["FMaterialId_FNumber", "FGainQty"],
    "bodySum":["FGainQty"]
  }
}

通过上述配置,可以确保从金蝶系统提取的数据经过ETL处理后,能够准确地转换为聚水潭API所需的格式,并成功写入目标平台。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 金蝶云星空API接口配置

更多系统对接方案