使用轻易云平台进行ETL转换:将数据写入旺店通·企业奇门

  • 轻易云集成顾问-蔡威

金蝶云星空数据集成到旺店通·企业奇门的案例分享:组装父项入库

在实际业务中,如何实现金蝶云星空与旺店通·企业奇门之间的数据对接,是许多企业面临的一大挑战。本文将以“组装父项入库”为方案名称,深入探讨其实现过程,并重点关注关键技术点。

确保数据不漏单

在进行系统对接时,第一步是确保从金蝶云星空获取的数据完整且无遗漏。为此,我们利用了executeBillQuery接口,这个API提供了强大的查询功能,可以精确抓取所需的所有订单数据。这一过程中需要注意分页处理和限流问题,以保证批量数据抓取的效率和稳定性。

{
  "method": "POST",
  "url": "https://api.kingdee.com/kdcloud/executeBillQuery",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    //请求参数
  }
}

数据格式差异处理及快速写入

金蝶云星空与旺店通·企业奇门的数据格式存在一定差异,为了平滑转换,我们设计了一套定制化的数据映射逻辑。同时,为确保大量数据能快速、准确地写入到旺店通·企业奇门系统中,通过调用wdt.stockin.order.push接口推进至目标系统。

{
  "method": "POST",
  "url": "/openapi/v1/stockin/order/push",
  "headers": {
    // 请求头信息
    },
    "body":{
        // 请求体内容,包括转换后的批量订单数据等   
    }
}

以上示例展示了整体流程中的两个核心环节——从金蝶云星空提取有价值的数据,并通过适当的转化逻辑推动到目标平台。在后续部分,将进一步揭示如何应对更加复杂的情况,例如异常处理和错误重试机制,以及实时监控和日志记录等细节工作的具体实现方法。 用友与WMS系统接口开发配置

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

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

接口配置与请求参数

首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
    {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
    {"field":"FEE","label":"费用","type":"string","value":"FEE"},
    {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
    {"field":"FNote","label":"备注","type":"","value":""},
    {"field":"","label":"","type":"","value":""}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "TopRowCount", "label": "", "type":"","describe":"","value":"",
      },
      {
        field: 'FilterString',
        label: '过滤条件',
        type: 'string',
        describe: '示例写法 FSupplierId.FNumber = \'VEN00010\' and FApproveDate>=',
        value: 'FApproveDate>=\'{{LAST_SYNC_TIME|datetime}}\' and FAFFAIRTYPE = \'Assembly\' and FStockID.FNumber <>\'39\''
      },
      {
        field: 'FieldKeys',
        label: '需查询的字段key集合',
        type: 'array',
        describe: '金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber',
        parser: {
          name: 'ArrayToString',
          params: ','
        }
      },
      {
        field: 'FormId',
        label: '业务对象表单Id',
        type: 'string',
        describe: '必须填写金蝶的表单ID如:PUR_PurchaseOrder',
        value: 'STK_AssembledApp'
      },
      {
        field:'FBillNo', 
        label:'FBillNo', 
        type:'string'
      }
  ]
}

请求参数详解

  1. API与方法api字段指定了要调用的接口名称executeBillQuery,而method字段则指定了HTTP请求方法为POST。
  2. 分页设置:通过pagination字段设置每页的数据量为500条。
  3. 请求字段:在request数组中定义了需要从源系统获取的数据字段,如实体主键(FID)、单据编号(FBillNo)、单据状态(FDocumentStatus)等。这些字段将用于后续的数据处理和分析。
  4. 其他请求参数
    • LimitStartRow用于分页控制。
    • FilterString用于定义过滤条件,以确保只获取符合特定条件的数据。例如,过滤条件可以设置为“审核日期大于等于上次同步时间,并且事务类型为‘Assembly’,且仓库编号不等于‘39’”。
    • FieldKeys用于指定需要查询的字段集合。
    • FormId指定业务对象表单ID,这里为“STK_AssembledApp”。

数据请求与清洗

在完成元数据配置后,我们可以发起HTTP POST请求来调用金蝶云星空的接口。以下是一个示例请求体:

{
  "FormId": "STK_AssembledApp",
  "FieldKeys": ["FID", ...],
  ...
}

通过这个请求,我们能够从源系统中获取到所需的数据。接下来,需要对这些数据进行清洗和转换,以便后续的数据处理和写入。

数据转换与写入

在清洗过程中,可以根据业务需求对数据进行各种转换操作,例如:

  • 格式化日期字段
  • 转换货币单位
  • 合并或拆分字段

完成清洗和转换后,将处理好的数据写入目标系统,确保数据的一致性和完整性。

实时监控与错误处理

在整个过程中,轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。如果出现错误,可以及时进行排查和修复,确保数据集成过程顺利进行。

通过上述步骤,我们成功实现了从金蝶云星空获取并加工数据,为后续的数据处理奠定了基础。这一过程不仅提高了业务透明度,还极大提升了工作效率。 用友与外部系统接口集成开发

使用轻易云数据集成平台将源数据转换并写入旺店通·企业奇门API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将重点探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。

API接口元数据配置

在进行ETL转换时,首先需要理解目标API接口的元数据配置。以下是旺店通·企业奇门API接口wdt.stockin.order.push的具体元数据配置:

{
    "api": "wdt.stockin.order.push",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {
            "field": "outer_no",
            "label": "外部单号",
            "type": "string",
            "value": "{FBillNo}"
        },
        {
            "field": "warehouse_no",
            "label": "仓库编号",
            "type": "string",
            "value": "{FStockID_FNumber}"
        },
        {
            "field": "remark",
            "label": "备注",
            "type": "string",
            "value": "组装单父项入库"
        },
        {
            "field": "is_check",
            "label": "是否审核",
            "type": "string",
            "value": "1"
        },
        {
            "field": "goods_list",
            "label": "货品明细节点",
            "type": "array",
            ...

数据请求与清洗

首先,我们需要从源系统中提取原始数据,并进行必要的清洗操作。假设我们从ERP系统中获取了如下原始数据:

{
    FBillNo: 'SO20231001',
    FStockID_FNumber: 'WH001',
    FEntity: [
        {
            FMaterialID_FNumber: 'P001',
            FQty: 100,
            FYXQDate: '2023-10-01',
            FSCDate: '2024-10-01'
        },
        ...
    ]
}

数据转换

接下来,我们需要将上述原始数据转换为目标API接口所需的格式。根据元数据配置,我们可以使用轻易云的数据映射功能,将字段一一对应:

  1. outer_no 对应 {FBillNo}
  2. warehouse_no 对应 {FStockID_FNumber}
  3. remark 固定值为 组装单父项入库
  4. is_check 固定值为 1
  5. goods_list 对应 {FEntity},其中每个子字段也需要进行相应的映射:

    • spec_no 对应 {FMaterialID_FNumber}
    • stockin_num 对应 {FQty}
    • production_date 对应 {FYXQDate}
    • expire_date 对应 {FSCDate}

通过轻易云的数据转换工具,我们可以生成如下目标格式的数据:

{
    outer_no: 'SO20231001',
    warehouse_no: 'WH001',
    remark: '组装单父项入库',
    is_check: '1',
    goods_list: [
        {
            spec_no: 'P001',
            stockin_num: 100,
            production_date: '2023-10-01',
            expire_date: '2024-10-01'
        },
        ...
    ]
}

数据写入

最后一步是将转换后的数据通过POST请求写入到旺店通·企业奇门API接口。我们使用轻易云提供的HTTP请求功能,配置好目标URL和请求头信息,并将上述JSON数据作为请求体发送出去。

import requests

url = 'https://api.wangdian.cn/openapi2/stockin_order_push.php'
headers = {'Content-Type': 'application/json'}
data = {
    # 转换后的JSON数据
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
    print('Data successfully written to Wangdian API')
else:
    print('Failed to write data:', response.text)

通过以上步骤,我们成功地完成了从源系统到目标系统的数据ETL过程,实现了不同系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据处理过程中的准确性和一致性。 如何对接钉钉API接口

更多系统对接方案