轻易云平台ETL技术:将数据写入金蝶云星空API

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

调拨入库对接-金蝶其他出库(负数)——吉客云与金蝶云星空的数据集成技术案例

在本文中,我们将分享一个具体的系统对接集成案例:如何高效地实现吉客云数据到金蝶云星空的批量数据写入,并确保数据的实时监控和异常处理。

吉客云接口调用:erp.storage.goodsdocin.v2

首先,调拨入库的数据从吉客云获取,这里使用了erp.storage.goodsdocin.v2接口,该API支持分页查询和限流控制,可以应对大批量数据传输。需要特别注意的是,通过此API获取的数据必须进行格式转换,以满足后续在金蝶云星空中的处理需求。

为了确保获取过程不漏单,我们设置了定时可靠的任务调度机制。通过轻易平台提供的计划任务功能,每隔一段时间自动抓取最新的调拨入库记录。在实际操作中,还会结合集中监控和告警系统,来实时追踪每个任务执行状态,确保无论什么原因导致的数据遗漏都能被及时发现并处理。

数据转换及映射定制化

由于吉客云与金蝶云星空之间存在一定的数据结构差异,需要自定义数据转换逻辑。这部分工作可以借助轻易平台提供的数据流设计工具,通过可视化界面直观地配置字段映射、逻辑校验等操作。例如,将取得的SKU编码、数量等字段按照目标系统标准重新排列组合,以适应金蝶其他出库(负数)的业务逻辑要求。

金蝶API写入:batchSave

接下来,将经过清洗和转换后的数据推送到金蝶云星空,需要使用其官方提供的batchSave API进行批量保存操作。在这一过程中,由于可能涉及大量数据,因此要充分利用平台支持高吞吐量写入能力,同时做好限流和重试机制设计,以防止网络波动或服务器响应慢带来的请求失败问题。此外,对于成功与否以及异常情况,同样会借助日志记录功能详细跟踪,为后续故障排查提供依据。

高级别概述过这些关键环节之后,以下章节将深入探讨每一步骤具体实施细节,包括代码示例、错误处理策略以及性能优化建议…… 钉钉与MES系统接口开发配置

调用吉客云接口获取并加工数据的技术实现

在数据集成生命周期的第一步,我们需要调用源系统吉客云接口erp.storage.goodsdocin.v2,以获取并加工数据。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现这一过程。

接口调用与元数据配置

首先,我们需要了解接口的基本信息和元数据配置。以下是接口erp.storage.goodsdocin.v2的相关配置:

{
  "api": "erp.storage.goodsdocin.v2",
  "effect": "QUERY",
  "method": "POST",
  "number": "goodsdocNo",
  "id": "goodsdocNo",
  "idCheck": true,
  "request": [
    {"field": "pageIndex", "label": "分页页码", "type": "string"},
    {"field": "pageSize", "label": "分页页数", "type": "string", "value": "50"},
    {"field": "goodsDocNo", "label": "入库单号", "type": "string"},
    {"field": "startDate", "label": "创建时间的起始时间", "type": "string", 
        "value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field": "endDate",    "label":"创建时间的结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"inouttype","label":"入库类型","type":"string","describe":"入库类型(100-期初库存 101-采购入库 102-调拨入库 103-盘盈入库 104-其他入库 105-销售退货 106-完工入库 107-组装拆卸入库 108-翻新入库 109-报废入库 110-残次品入库111-成本调整 112-即采即入113-退料入库114-调拨退回115-维修返厂返还)","value":"102"},
    {"field":"warehouseId","label":"仓库ID","type":"string"},
    {"field":"warehouseCode","label":"仓库编号","type":"string"},
    {"field":"vendId","label":"供应商ID(往来单位)","type":"string"},
    {"field":"vendCode","label":"供应商编号(往来单位)","type":"string"},
    {"field":"billNo","label":"上游单据号(关联单号)","type":"string"},
    {"field":"userName","label":"创建人名称","type":"string"},
    {"field":"gmtModifiedStart","label":"主表更新时间起始","type":"string"},
    {"field":"gmtModifiedEnd","label":"主表更新时间截至","type":"string"},
    {"field":"selelctFields","label":"返回参数","type":"string",
        "value":
            "goodsdocNo,inOutDate,gmtCreate,inouttype,vendCustomerCode,warehouseCode,warehouseName,sourceBillNo,redStatus,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.quantity,goodsDocDetailList"}
   ],
    "autoFillResponse":true,
    "condition":[
        [{"field":
            "goodsDocDetailList.quantity",
            "logic":
                "lt",
            "value":
                "0"
        },
        {"field":
            "fromWarehouse",
            "logic":
                "notlike",
            "value":
                "VMI"
        }]
   ],
    "beatFlat":["goodsDocDetailList"],
    "omissionRemedy":{
        "crontab":
            "39 2 * * *",
        "takeOverRequest":[
            {"field":
                "startDate",
                "value":
                    "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )",
                "type":
                    "string",
                "label":
                    "接管字段",
                "formModel":{
                    "enable":
                        false
             },

             }
         }
      ]
}

请求参数配置

在请求参数部分,我们需要特别注意以下几个关键字段:

  1. 分页参数

    • pageIndex:分页页码。
    • pageSize:分页页数,默认值为50。
  2. 时间范围

    • startDate:创建时间的起始时间,使用动态变量{{LAST_SYNC_TIME|datetime}}
    • endDate:创建时间的结束时间,使用动态变量{{CURRENT_TIME|datetime}}
  3. 过滤条件

    • inouttype:指定为调拨入库(102)。
  4. 返回参数

    • selelctFields:指定返回字段,包括单据编号、日期、仓库信息、商品明细等。

数据过滤与清洗

在获取到原始数据后,需要进行一定的数据过滤和清洗。根据元数据配置中的条件部分,我们需要过滤出商品数量小于0且不属于VMI仓库的数据:

{
  "condition":[
    [{"field": "goodsDocDetailList.quantity", "logic": "lt", "value": "-0"},  
     {"field": ":fromWarehouse", ":logic: notlike:", ":value: VMI"}]
}

数据展平处理

由于商品明细列表(goodsDocDetailList)是一个嵌套结构,需要将其展平以便后续处理:

{
  ":beatFlat: ["goodsDocDetailList"]
}

异常处理与补偿机制

为了确保数据同步的完整性和准确性,配置了异常处理与补偿机制。当出现遗漏或错误时,通过定时任务(crontab)进行补偿请求:

{
  ":omissionRemedy: {
      ":crontab: :39 :2 :* :* :* ",
      ":takeOverRequest: [
        {:" field: startDate ", :" value: _function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' ) ", :" type: string ", :" label: 接管字段 ", :" formModel: {:" enable: false }, :" tableModel: {:" enable: false }, :" physicalModel: {:" enable: false }}
      ]
}

通过上述步骤,我们可以有效地调用吉客云接口获取并加工所需的数据,为后续的数据转换与写入打下坚实基础。这一过程不仅保证了数据的准确性和完整性,还提升了业务流程的透明度和效率。 金蝶与WMS系统接口开发配置

轻易云数据集成平台ETL转换:将源数据写入金蝶云星空API接口

在轻易云数据集成平台上进行ETL转换的过程中,我们需要将已经集成的源平台数据转换为目标平台——金蝶云星空API接口所能接收的格式,并最终写入目标平台。以下是详细的技术步骤和元数据配置解析。

API接口调用配置

我们使用的是金蝶云星空的batchSave API接口,采用POST方法进行数据传输。以下是该接口的主要配置项:

  • api: batchSave
  • effect: EXECUTE
  • method: POST
  • idCheck: true

操作参数解析

在操作参数中,我们定义了如何处理请求体的数据:

  • method: merge
  • field: goodsDocDetailList_ownerName,goodsdocNo
  • bodyName: items
  • header: 包含字段goodsdocNo, inOutDate, goodsDocDetailList_ownerName, sourceBillNo
  • body: 包含字段goodsDocDetailList_goodsNo, goodsDocDetailList_quantity, warehouseCode, outWarehouseCode

这些字段对应于源平台的数据,将被转换并映射到金蝶云星空API所需的格式。

请求参数配置

以下是具体的请求参数及其配置:

  1. 单据编号(FJKYNo)

    • 字段:FJKYNo
    • 类型:string
    • 描述:单据编号
    • 值:{goodsdocNo}
  2. 调拨单号(FJKYLinkNo)

    • 字段:FJKYLinkNo
    • 类型:string
    • 值:{sourceBillNo}
  3. 单据类型(FBillTypeID)

    • 字段:FBillTypeID
    • 类型:string
    • 描述:单据类型
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:QTCKD95_SYS
  4. 库存组织(FStockOrgId)

    • 字段:FStockOrgId
    • 类型:string
    • 描述:组织
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:{goodsDocDetailList_ownerName}
    • 映射目标ID:6441f0214af70a2f240adb22,方向为正向(positive)
  5. 库存方向(FStockDirect)

    • 字段:FStockDirect
    • 类型:string
    • 描述:下拉列表
    • 值:GENERAL
  6. 日期(FDate)

    • 字段:FDate
    • 类型:string
    • 描述:日期
    • 值:{inOutDate}
  7. 领料部门(FDeptId)

    • 字段:FDeptId
    • 类型:string
    • 描述:基础资料
    • 解析器:ConvertObjectParser,参数为FNumber
    • 值:BM000029
  8. 货主类型(FOwnerTypeIdHead)

    • 字段: FOwnerTypeIdHead
    • 类型: string
    • 描述: 多类别基础资料列表
    • 值: BD_OwnerOrg
  9. 货主(FOwnerIdHead)

    • 字段: FOwnerIdHead
    • 类型: string
    • 描述: 多类别基础资料
    • 解析器: ConvertObjectParser,参数为 FNumber
    • 值: {goodsDocDetailList_ownerName}
    • 映射目标ID: 6441f0214af70a2f240adb22,方向为正向 (positive)

明细信息配置

明细信息部分涉及数组类型的数据处理,每个子项都需要进行特定字段的映射和转换:

  1. 物料编码(FMATERIALID)

    • 字段: FMATERIALID
    • 类型: string
    • 描述: 基础资料
    • 解析器: ConvertObjectParser,参数为 FNumber – 值: {{items.goodsDocDetailList_goodsNo}}
  2. 库存状态(FStockStatusId) – 字段: FStockStatusId – 类型: string – 值: KCZT01_SYS

  3. 发货仓库(FSTOCKID) – 字段: FSTOCKID – 类型: string – 描述: 基础资料 – 解析器: ConvertObjectParser,参数为 FNumber – 值: {{items.warehouseCode}}

  4. 实发数量(FQty) – 字段:FQty – 类型:string –值:_function {{items.goodsDocDetailList_quantity}} *(-1)

其他请求配置

除了上述字段,还需要一些额外的请求配置来确保数据正确写入目标系统:

  1. 表单ID (FormId)
  2. 提交并审核 (IsAutoSubmitAndAudit)
  3. 验证基础资料 (IsVerifyBaseDataField)
  4. 执行操作 (Operation)
  5. 负库存标志 (InterationFlags)

这些配置项确保了在调用API时能够正确执行并验证所有必要的数据。

通过以上步骤和配置,我们能够将源平台的数据成功转换并写入金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,也确保了数据处理过程中的准确性和一致性。 用友与MES系统接口开发配置

更多系统对接方案