轻松实现旺店通到金蝶云星空的数据映射转换

  • 轻易云集成顾问-吴伟

案例分享:旺店通·企业奇门数据集成到金蝶云星空

在本次技术案例中,我们聚焦于实现旺店通·企业奇门的数据高效无缝对接至金蝶云星空,具体方案命名为“退货预入库单对接直接调拨单1_映射_RK”。此方案重点解决了两大系统间的数据格式差异、分页限流处理以及异常情况的重试机制。

1. 确保数据不漏单

为了保证从旺店通·企业奇门获取的数据完整性,我们调用 wdt.stockin.pre.order.query 接口逐页提取数据。通过定时任务和可靠的抓取机制,确保每一笔退货预入库订单都能够被捕捉,并防止遗漏。

2. 数据快速写入与批量操作

利用金蝶云星空提供的 batchSave API,实现大量数据的快速批量写入。这种方式不仅提高了效率,还减少了网络请求次数,极大提升了系统性能。

3. 处理数据格式差异

不同系统之间的数据格式往往存在不一致性。因此,在将旺店通·企业奇门中的数据转换为符合金蝶云标准之前,需要进行细致的数据映射和转换,确保信息准确无误地传递给目标系统。

4. 实现实时监控与日志记录

为了保证整个流程透明可追溯,通过实施实时监控和详细的日志记录,对每个环节进行有效跟踪。如果发生任何异常情况,系统将自动触发错误重试机制,以最大程度保障业务过程顺利进行。

简单来说,该技术方案以精准对接、稳定运行和高效处理为核心,通过充分运用API接口特性,实现了两个平台之间的数据高度集成。在随后的部分,我们将进一步深入探讨各步骤的具体实现及优化策略。 钉钉与MES系统接口开发配置

调用旺店通·企业奇门接口wdt.stockin.pre.order.query获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.pre.order.query来获取并加工数据。

接口概述

接口wdt.stockin.pre.order.query用于查询退货预入库单信息。该接口采用POST请求方式,支持分页查询,能够根据时间范围或预订单号进行增量数据获取。

请求参数配置

为了实现高效的数据请求,我们需要配置一系列请求参数。以下是关键参数及其配置:

  • start_time: 开始时间,用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss。在实际应用中,这个参数通常会设置为上次同步的时间点({{LAST_SYNC_TIME|datetime}})。
  • end_time: 结束时间,同样用于增量获取数据,格式为yyyy-MM-dd HH:mm:ss。一般设置为当前时间({{CURRENT_TIME|datetime}})。
  • stockin_pre_no: 入库预订单号,如果传递此参数,可以不传递时间范围。
  • time_type: 时间类型,0表示最后修改时间,1表示创建时间。默认值为0,但在本案例中设置为1。
  • page_size: 每页返回的数据条数,默认值为40。
  • page_no: 页号,不传值时默认从第0页开始。

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

{
  "api": "wdt.stockin.pre.order.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "stockin_no",
  "id": "stockin_id",
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "datetime",
      "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "stockin_pre_no",
      "label": "入库预订单号",
      "type": "string",
      "describe": "预入库单号,若传此参数可以不传时间范围"
    },
    {
      "field": "time_type",
      "label": "时间类型",
      "type": int,
      "describe":"0:最后修改时间,1:创建时间。默认为0",
      value:"1"
    }
  ],
  ...
}

分页处理

由于接口返回的数据可能较多,需要进行分页处理。分页参数包括:

  • page_size: 每页返回的数据条数,可配置范围为1到50,不传递时默认为40。
  • page_no: 页号,从0开始。

分页处理的配置如下:

{
  ...
  otherRequest:[
    {
        field:"page_size",
        label:"分页大小",
        type:"int",
        describe:"每页返回的数据条数,输入值范围1~50,不传本参数,输入值默认为40,使用举例单击这里", 
        value:"{PAGINATION_PAGE_SIZE}"
    },
    {
        field:"page_no", 
        label:"页号", 
        type:"int", 
        describe:"不传值默认从0页开始", 
        value:"{PAGINATION_START_PAGE}"
    }
  ]
}

数据加工与清洗

在获取到原始数据后,需要对其进行清洗和转换,以便后续的写入操作。在轻易云平台上,可以通过内置的ETL工具对数据进行处理。例如,可以过滤掉某些特定仓库的数据:

{
  condition:[
    [
       {"field":"name","logic":"neqv2","value":"海川仓"},
       {"field":"name","logic":"neqv2","value":"海川次品仓"}
    ],
   []
 ]
}

上述条件表示过滤掉名称为“海川仓”和“海川次品仓”的记录。

异常处理与补偿机制

为了确保数据集成过程的稳定性和可靠性,需要设计异常处理和补偿机制。例如,当某次请求失败时,可以通过定时任务重新发起请求:

{
  omissionRemedy:{
     crontab:"2 17 * * *", 
     takeOverRequest:[
       {
         id:"abd24f31-3177-3cc4-b28b-9a5dcb35c62e", 
         field:"start_time", 
         label:"开始时间", 
         type:"datetime", 
         is_required:true, 
         describe:"增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", 
         value:"{{DAYS_AGO_2|datetime}}"
       }
     ]
   }
}

上述配置表示每天17点02分触发一次补偿任务,从两天前的开始时间重新发起请求。

通过以上步骤,我们可以高效地调用旺店通·企业奇门接口wdt.stockin.pre.order.query获取并加工退货预入库单信息,为后续的数据转换与写入打下坚实基础。 打通金蝶云星空数据接口

利用轻易云数据集成平台实现金蝶云星空API接口的数据ETL转换

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。

API接口配置与元数据解析

在本案例中,我们使用金蝶云星空的batchSave API接口来处理退货预入库单对接直接调拨单的数据映射和转换。以下是该接口的元数据配置:

{
    "api": "batchSave",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "rowsKey": "array",
        "rows": 1,
        "method": "batchArraySave"
    },
    "request": [
        {"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{stockin_no}"},
        {"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", 
            "value": "WDTTHRKD", 
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}
        },
        {"field": "FBizType",   "label":"业务类型","type":"string","describe":"下拉列表"},
        {"field":"FTransferDirect","label":"调拨方向","type":"string","describe":"下拉列表"},
        {"field":"FTransferBizType","label":"调拨类型","type":"string","describe":"下拉列表"},
        {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织",
            "value":"100",
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}
        },
        {"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织",
            "value":"100",
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}
        },
        {"field":"FStockOutOrgId","label":"调出库存组织","type":"string","describe":"组织",
            "value":"100",
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}
        },
        {"field":"FStockOrgId","label":"调入库存组织","type":"string","describe":"组织",
            "value":"100",
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}
        },
        {"field": "FDate",      "label":    "日期",       "type":     "string",   "describe":     "日期",       "value": "{{created|datetime}}"},
        {"field":   "FNote",        "label":    "备注",       "type":     "string",   "describe":     "多行文本",     "value": "{remark}"},
        {
            "field":    "FBillEntry",
            "label":    "明细信息",
            "type":     "array",
            "describe": 1,
            "value":    "details_list",
            children: [
                {
                    field:                "FMaterialId",
                    label:                物料编码,
                    type:                 字符串,
                    value:                {{details_list.goods_no}},
                    parser:               { name: ConvertObjectParser, params: FNumber }
                },
                { field: FCNKBarCode, label: 条码, type: 字符串 },
                { field: FQty, label: 调拨数量, type: 字符串, value: {{details_list.goods_count}} },
                {
                    field: FSrcStockId,
                    label: 调出仓库,
                    type: 字符串,
                    value: THC,
                    parser: { name: ConvertObjectParser, params: FNumber }
                },
                {
                    field: FDestStockId,
                    label: 调入仓库,
                    type: 字符串,
                    value:{ name },
                    parser:{ name : ConvertObjectParser , params : FNumber},
                     mapping:{ direction : positive , target :641e5dfc7fd8843eb04b957c}
                },
                { field:FNoteEntry,label:"明细备注",type:"字符串",value:"{refund_remark}"}
            ]
        }
    ],
    otherRequest:[
       { field:"FormId", label:"FormId", type:"字符串", describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder",value:"STK_TransferDirect"},
       { field:"Operation",label:"Operation",type:"字符串",describe:"111",value:"Save"},
       { field:"IsAutoSubmitAndAudit",label:"IsAutoSubmitAndAudit",type:"布尔",value:"true"},
       { field:"IsVerifyBaseDataField",label:"IsVerifyBaseDataField",type:"布尔",describe:"是否验证所有基础资料有效性,布尔类,默认false(非必录)",value:"true"},
       { field:"InterationFlags",label:"允许负库存",type:"字符串",value:"STK_InvCheckResult"},
       { field:“IgnoreInterationFlag”,label:“是否允许忽略交互”,type:“布尔”,value:“true”},
       { field:“BatchCount”,label:“服务端开启的线程数”,type:“整数”,value:2}
    ]
}

数据字段解析与映射

  1. 单据编号 (FBillNo):

    • 字段类型: string
    • : {stockin_no}
    • 描述: 单据编号从源数据中的stockin_no字段获取。
  2. 单据类型 (FBillTypeID):

    • 字段类型: string
    • : 固定值 "WDTTHRKD"
    • 解析器: 使用 ConvertObjectParser 将其转换为目标系统所需格式。
  3. 销售组织、结算组织、调出库存组织、调入库存组织:

    • 字段类型: string
    • : 固定值 "100"
    • 解析器: 使用 ConvertObjectParser 转换为目标系统所需格式。
  4. 日期 (FDate):

    • 字段类型: string
    • : 使用模板引擎将源数据中的创建时间 (created) 转换为日期格式。
  5. 备注 (FNote):

    • 字段类型: string
    • : {remark} 从源数据中的备注字段获取。
  6. 明细信息 (FBillEntry):

    • 包含多个子字段,如物料编码、条码、调拨数量等。
    • 每个子字段都可以通过模板引擎或解析器进行转换和映射,例如:
      • 物料编码 (FMaterialId) 使用 ConvertObjectParser 将源数据中的物料编码 (goods_no) 转换为目标系统格式。
      • 调出仓库 (FSrcStockId)调入仓库 (FDestStockId) 同样使用解析器进行转换。

特殊配置项

  • FormIdOperation 是必须填写的金蝶表单ID和操作类型。
  • IsAutoSubmitAndAudit 设置为 true,表示自动提交和审核。
  • BatchCount 设置为2,表示服务端开启的线程数。

实现过程

  1. 请求构建: 根据元数据配置,将源平台的数据按照上述规则进行转换和映射,构建符合金蝶云星空API要求的请求报文。

  2. 发送请求: 使用HTTP POST方法,将构建好的请求报文发送到金蝶云星空的API接口地址。

  3. 处理响应: 接收并处理API返回的响应,根据响应结果判断操作是否成功,并进行相应的后续处理。

通过上述步骤,我们实现了从源平台到目标平台的数据ETL转换,并成功写入金蝶云星空系统。这一过程不仅确保了数据的一致性和准确性,也极大提升了业务处理效率。 如何开发企业微信API接口

更多系统对接方案