如何配置并优化金蝶云星空与旺店通接口数据传输

  • 轻易云集成顾问-陈洁琳

金蝶云星空数据集成到旺店通·企业奇门的技术实践

在复杂多变的商业环境中,实现系统间的数据无缝对接已经成为企业高效运营的重要保障。本篇技术案例将深入探讨如何通过轻易云数据集成平台,成功实现金蝶云星空与旺店通·企业奇门之间的数据对接。在具体操作中,我们主要关注直接调拨单对接其他出库单这一实际业务需求,方案名称为“直接调拨单对接其他出库单==>金蝶—旺店通”。

  1. 保证集成数据不漏单 在应用executeBillQuery接口从金蝶云获取调拨单时,通过定时任务可靠地抓取接口数据,是确保不漏掉业务订单信息的关键。一旦抓取到新数据,本次处理则立即结束,为下一次调用准备充足时间。

  2. 大量数据快速写入 为了提高效率,将批量提取的数据传递到旺店通,并调用wdt.stockout.order.push API进行批量写入。在这里需要特别注意的是,一次性处理的大量数据会影响系统性能,因此要根据实际情况合理设置分页和限流策略。

  3. 实时监控与日志记录 实现整个过程的透明化管理至关重要。每当触发一次API调用,都应当生成详细的日志记录,并且配合实时监控组件,以便了解当前所有处理中或已完成的数据状态。这不仅能有效防止问题,还能在出现异常状况时迅速响应并提升修复效率。

  4. 异构系统间格式转换 金蝶云星空与旺店通·企业奇门之间存在一定的数据格式差异。为了确保两者顺利衔接,需要设立一套完整而可靠的映射规则,从字段名称、类型,到值域范围均需完全匹配。此外,这些规则还必须满足灵活调整,以适应未来可能发生的新变化。

  5. 错误重试机制 尽管我们尽可能优化各个环节,但意外情况总是难以避免。比如网络波动导致请求失败,此时预先设计好的异常处理和重试机制就显得尤为重要。通过精准捕获错误信息并重新尝试发送,无疑大幅提升整体稳定性和容错率。

本文将详细介绍上述步骤及相关技术细节,旨在帮助大家更好地理解如何利用现代化工具高效、安全地进行系统集成工作。同时,也希望能够提供一些实战经验,为类似场景下的问题解决提供参考依据。 打通金蝶云星空数据接口

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与请求参数

首先,我们需要理解元数据配置中的各个字段及其作用。以下是关键字段的解析:

  • api: "executeBillQuery",表示我们调用的是金蝶云星空的查询接口。
  • method: "POST",请求方法为POST。
  • number: "FBillNo",单据编号。
  • id: "FBillEntry_FEntryID",分录ID。
  • idCheck: true,表示需要进行ID检查。

请求参数主要分为两部分:requestotherRequest

request部分
[
  {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","describe":"FEntryID","value":"FBillEntry_FEntryID"},
  {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
  {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
  {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
  {"field":"FStockOrgId_FNumber","label":"调入库存组织","type":"string","describe":"调入库存组织","value":"FStockOrgId.FNumber"},
  // ...其他字段省略
]

这些字段定义了我们需要从金蝶云星空获取的数据项。每个字段包含以下信息:

  • field: 字段名
  • label: 字段标签
  • type: 数据类型
  • describe: 字段描述
  • value: 对应的实际值
otherRequest部分
[
  {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"500"},
  {"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser":{"name": "ArrayToString", "params": ","}},
  {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"},
  {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FDocumentStatus='C' and FSrcStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"},
  {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_TransferDirect"},
  {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数"}
]

这些字段用于控制查询行为,例如分页、过滤条件等。

调用接口

在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空接口的调用。以下是一个示例请求:

{
  "apiName": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
  "methodName": "",
  // 请求体内容
  {
    ...
    // 填充请求参数
    ...
    // 填充otherRequest参数
    ...
  }
}

数据清洗与加工

获取到数据后,我们需要对其进行清洗和加工。这一步通常包括以下几个步骤:

  1. 数据验证:确保每个字段的数据类型和内容符合预期。例如,检查日期格式是否正确,数值是否在合理范围内等。
  2. 数据转换:根据业务需求,将原始数据转换为目标系统所需的格式。例如,将日期格式从YYYY-MM-DD转换为MM/DD/YYYY
  3. 数据过滤:根据特定条件筛选出需要的数据。例如,只保留状态为“已审核”的记录。

实践案例

假设我们需要从金蝶云星空中获取所有状态为“已审核”的直接调拨单,并将其导入到旺店通系统中。具体步骤如下:

  1. 配置元数据:如上文所述,设置好所有必要的字段和过滤条件。
  2. 发起请求:通过轻易云平台调用executeBillQuery接口,并传递配置好的请求参数。
  3. 处理响应:对返回的数据进行清洗、转换和过滤。
  4. 写入目标系统:将处理后的数据通过相应接口写入旺店通系统。

通过以上步骤,我们可以实现从金蝶云星空到旺店通系统的数据无缝对接。这不仅提高了工作效率,还确保了数据的一致性和准确性。 轻易云数据集成平台金蝶集成接口配置

数据集成案例:将源平台数据ETL转换并写入旺店通·企业奇门API接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台——旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

API接口及元数据配置

首先,我们需要了解目标API接口及其元数据配置。本文的目标API接口为wdt.stockout.order.push,该接口用于将其他出库单的数据推送到旺店通系统中。以下是该接口的元数据配置:

{
  "api": "wdt.stockout.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "outer_no",
      "label": "外部单号",
      "type": "string",
      "describe": "外部系统的唯一单据编号,避免重复推送数据",
      "value": "{FBillNo}"
    },
    {
      "field": "warehouse_no",
      "label": "仓库编号",
      "type": "string",
      "describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)",
      "value": "{FSrcStockId_FNumber}"
    },
    {
      "field": "remark",
      "label": "备注",
      "type": "string",
      "describe": "其他出库单备注",
      "value": "调拨出库"
    },
    {
      "field": "reason",
      "label": "其他出库原因",
      "type": "string",
      "describe": ""
    },
    {
      "field": "detail_list",
      ...
    }
  ],
  ...
}

配置与转换步骤

  1. 提取源数据: 首先,从源平台提取需要转换的数据。假设我们从金蝶系统中提取了一个调拨单,其字段包括FBillNo(单据编号)、FSrcStockId_FNumber(源仓库编号)、FMaterialId_FNumber(物料编码)、FQty(数量)等。

  2. 转换数据格式: 根据旺店通API接口的要求,将提取的数据进行格式转换。具体步骤如下:

    • 外部单号:将金蝶系统中的FBillNo字段映射到旺店通API的outer_no字段。
    • 仓库编号:将金蝶系统中的FSrcStockId_FNumber字段映射到旺店通API的warehouse_no字段。
    • 备注:固定值“调拨出库”映射到旺店通API的remark字段。
    • 货品列表节点:将金蝶系统中的物料编码和数量分别映射到旺店通API的detail_list.spec_nodetail_list.num字段。
  3. 生成请求报文: 根据上述映射关系,生成符合旺店通API要求的请求报文。例如:

{
  ...
  {
    ...
    {
        ...
        {
            ...
            {
                ...
                {
                    ...
                    {
                        ...
                        {
                            ...
                            {
                                ...
                                {
                                    ... 
                                    { 
                                        ... 
                                        { 
                                            ... 
                                            { 
                                                ... 
                                                { 
                                                    ... 
                                                    { 
                                                        ... 
                                                        { 
                                                            ... 
                                                            { 
                                                                ... 
                                                                { 
                                                                    ... 
                                                                    { 
                                                                        ... 
                                                                        { 
                                                                            ... 
                                                                            { 
                                                                                ...  
                                                                                {  
                                                                                    ...  
                                                                                    {  
                                                                                        ...  
                                                                                        {  
                                                                                            outer_no: '12345',  
                                                                                            warehouse_no: 'WH001',  
                                                                                            remark: '调拨出库',  
                                                                                            reason: '',  
                                                                                            detail_list: [  
                                                                                                { spec_no: 'MAT001', num: '10' },  
                                                                                                { spec_no: 'MAT002', num: '20' }  
                                                                                            ],  
                                                                                            is_check: '1'  
                                                                                        }   
                                                                                    }   
                                                                                }   
                                                                            }   
                                                                        }   
                                                                    }   
                                                                }   
                                                            }   
                                                        }   
                                                    }   
                                                }   
                                            }   
                                        }   
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
  1. 发送请求并写入目标平台: 使用HTTP POST方法,将生成的请求报文发送至旺店通·企业奇门API接口,实现数据写入。

实践案例

假设我们有一条从金蝶系统中提取的数据如下:

{
  FBillNo: '12345',
  FSrcStockId_FNumber: 'WH001',
  FMaterialId_FNumber: ['MAT001', 'MAT002'],
  FQty: ['10', '20']
}

根据上述配置和步骤,我们最终生成并发送给旺店通·企业奇门API接口的数据报文如下:

{
  outer_no: '12345',
  warehouse_no: 'WH001',
  remark: '调拨出库',
  reason: '',
  detail_list: [
    { spec_no: 'MAT001', num: '10' },
    { spec_no: 'MAT002', num: '20' }
  ],
  is_check: '1'
}

通过轻易云数据集成平台,我们可以高效地完成从金蝶系统到旺店通系统的数据ETL转换和写入过程,实现不同系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。 如何开发金蝶云星空API接口

更多系统对接方案