利用轻易云实现金蝶与旺店通数据ETL转换和写入

  • 轻易云集成顾问-林峰

金蝶云星空与旺店通·企业奇门的数据对接技术分享

在本案例中,我们将探讨如何高效集成金蝶云星空系统中的简单生产入库单数据到旺店通·企业奇门平台。具体方案名称为:简单生产入库单对接其他入库单==>金蝶—旺店通。

数据获取与处理

首先,通过调用金蝶云星空接口 executeBillQuery 来实现生产入库单数据的抓取。该接口提供分页查询功能,有效避免了大数据量导致的接口性能问题,并支持定时批量抓取,确保数据的可靠性和实时性。在这一过程中,需要特别注意处理分页和限流问题,以保证从源系统获取的数据完整无误,不存在遗漏。

def fetch_kd_data():
    # 使用 executeBillQuery 接口获取数据
    # 这里需要根据实际需求设置分页参数

    response = call_execute_bill_query_api({
        "pageSize": 100, 
        "pageNumber": current_page
    })

    if response.status_code == 200:
        return response.json()

# 示例代码仅供参考,需结合实际开发语言及环境调整

数据格式转换与映射

当成功获取原始数据后,需要对其进行格式转换和映射,使之符合旺店通·企业奇门所需的数据结构。这一部分是至关重要的,因为两个系统之间的数据表述方式可能存在显著差异。因此,针对业务场景进行定制化映射显得尤为必要:

def map_to_wdt_format(kd_data):
    wdt_formatted_data = []

    for item in kd_data:
        mapped_item = {
            "orderCode": item["billNo"],
            "warehouseId": item["whId"],
            "items": [{
                "skuCode": detail["materialCode"],
                "quantity": detail["qty"]
            } for detail in item["details"]]
        }

        wdt_formatted_data.append(mapped_item)

    return wdt_formatted_data

通过上述步骤,可以使得从金蝶云星空获取到的数据适配到旺店通·企业奇门要求的格式,为后续的大规模、快速写入做好准备。

数据写入操作

为了将已转换好的数据批量导入到旺店通·企业奇门系统中,我们使用其提供的API wdt.stockin.order.push 完成订单推送操作:

def push_to_wdt(wdt_data):
    response = call_wdt_stockin_order_push_api(wdt_data)

    if response.status_code != 200:
        handle_write_error(response.json())  # 错误处理机制

# 异常处理机制示
![金蝶云星空API接口配置](https://pic.qeasy.cloud/D12.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据

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

#### 接口配置与请求参数

首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据提供的元数据配置,以下是该接口的主要参数:

- **API名称**: `executeBillQuery`
- **请求方法**: `POST`
- **主要字段**:
  - `FEntity_FEntryID`: 明细分录行id
  - `FID`: 实体主键
  - `FBillNo`: 单据编号
  - `FStockOrgId_FNumber`: 入库组织
  - `FMaterialId_FNumber`: 物料编码
  - `FMaterialId_FName`: 物料名称
  - `FRealQty`: 实收数量
  - `FDate`: 日期
  - `FStockId`: 仓库编码
  - `FStockId_Fname`: 仓库名称
  - `FMemo`: 备注
  - `FDocumentStatus`: 单据状态(A:创建, B:审核中, C:审核, D:重新审核, Z:暂存)
  - `FBillType`: 单据类型(SCRKD01_SYS:汇报入库, SCRKD02_SYS:生产入库)
  - `FWorkShopId1`: 生产车间

此外,还有一些分页和过滤参数,例如:
- **Limit**: 最大行数
- **StartRow**: 开始行索引
- **TopRowCount**: 返回总行数
- **FilterString**: 过滤条件(例如,`FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'`)
- **FieldKeys**: 查询字段key集合(例如,`FPOOrderEntry_FEntryId,FMaterialId.FNumber`)
- **FormId**: 表单ID(例如,`SP_InStock`)

#### 请求示例

为了更好地理解如何调用该接口,我们来看一个具体的请求示例:

```json
{
    "FormId": "SP_InStock",
    "FieldKeys": "FID,FBillNo,FDate,FMaterialId.FNumber,FMaterialId.FName,FRealQty,FStockOrgId.FNumber,FStockId.FNumber,FDocumentStatus",
    "FilterString": "FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='2023-01-01'",
    "Limit": "100",
    "StartRow": "0"
}

在这个请求中,我们查询了表单ID为SP_InStock的数据,并指定了需要返回的字段以及过滤条件。分页参数设置为每次返回最多100行,从第0行开始。

数据处理与清洗

获取到数据后,需要对其进行清洗和转换,以确保数据符合目标系统的要求。例如,可以对日期格式进行转换,对物料编码进行标准化处理等。

假设我们从金蝶云星空获取到以下原始数据:

[
    {
        "FID": "12345",
        "FBillNo": "RK20230101001",
        "FDate": "2023-01-01",
        "FMaterialId_FNumber": "MAT001",
        "FMaterialId_FName": "原材料A",
        "FRealQty": "100",
        "FStockOrgId_FNumber": "ORG001",
        "FStockId_FNumber": "WH001",
        "FDocumentStatus": "C"
    },
    ...
]

我们可以对这些数据进行如下处理:

  1. 日期格式转换:将日期从"YYYY-MM-DD"格式转换为目标系统所需的格式。
  2. 字段重命名或映射:根据目标系统要求,将字段名进行重命名或映射。
  3. 数据校验与清洗:检查数据完整性,如实收数量是否为正数,单据状态是否有效等。

数据写入目标系统

经过清洗和转换后的数据,可以通过轻易云平台的数据写入功能,将其无缝对接到目标系统中。这一步通常涉及调用目标系统的API接口,并确保数据格式和内容符合目标系统的要求。

总结

通过轻易云平台调用金蝶云星空的executeBillQuery接口,可以高效地获取所需的数据,并通过一系列的数据清洗和转换步骤,将其无缝集成到目标系统中。这一过程不仅提高了业务透明度和效率,还确保了不同系统间的数据一致性和准确性。 系统集成平台API接口配置

利用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口

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

API接口配置

在本案例中,我们需要对接的API接口是wdt.stockin.order.push,其请求方法为POST。该接口用于推送生产入库单到旺店通系统。以下是该接口的元数据配置:

{
  "api": "wdt.stockin.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": "仓库编号",
      "value": "{FStockId}"
    },
    {
      "field": "remark",
      "label": "备注",
      "type": "string",
      "describe": "备注",
      "value":"简单生产入库"
    },
    {
      "field": "is_check",
      "label":"是否审核",
      "type":"string",
      "describe":"是否审核",
      “value”:”1”
    },
    {
      “field”:”reason”,
      “label”:”入库原因”,
      “type”:”string”,
      “describe”:”入库原因”
    },
    {
       “field”:”goods_list”,
       “label”:”货品明细节点”,
       “type”:”array”,
       “describe”:”货品明细节点”,
       “children":[
         {
           “field”:”spec_no”,
           “label”:”商家编码”,
           “type”:”string”,
           “describe”:”商家编码”, 
           “value”:“{FMaterialId_FNumber}”
         },
         {
           “field”:“stockin_num”, 
           “label”:“入库数量”, 
           “type”:“string”, 
           “describe”:"入库数量", 
           ”value”:"{FRealQty}"
         },
         {
            ”field”:"src_price", 
            ”label”:"原价", 
            ”type”:"string", 
            ”describe”:"原价"
         },
         {
            ”field”:"stockin_price", 
            ”label”:"入库价", 
            ”type”:"string", 
            ”describe”:"入库价"
         },
         {
            ”field”:"batch_no", 
            ”label”:"批次", 
            ”type”:"string", 
            ”describe”:"批次"
         },
         {
            ”field”:"tax", 
            ”label”:"税率", 
            ”type”:"string", 
            ”describe”:"对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16"
          }
        ]
     }
   ],
   otherRequest: [
     { field: 'stockin_info', label: 'stockin_info', type: 'string', describe: '111' }
   ],
   groupCalculate: { headerGroup: ['FBillNo', 'FStockId'], bodyGroup: ['FMaterialId_FNumber', 'FRealQty'], bodyName: 'list', calculate: [], sortfield: [] }
}

数据转换与写入

在数据转换过程中,我们需要确保源平台的数据字段与目标平台API接口字段一一对应,并进行必要的数据清洗和格式转换。以下是具体步骤:

  1. 外部单号(outer_no):源平台字段FBillNo直接映射到目标字段outer_no
  2. 仓库编号(warehouse_no):源平台字段FStockId直接映射到目标字段warehouse_no
  3. 备注(remark):固定值“简单生产入库”,直接赋值给目标字段remark
  4. 是否审核(is_check):固定值“1”,表示已审核,直接赋值给目标字段is_check
  5. 入库原因(reason):该字段可根据业务需求从源平台获取或设置固定值。
  6. 货品明细节点(goods_list)
    • 商家编码(spec_no):源平台字段FMaterialId_FNumber映射到目标字段spec_no
    • 入库数量(stockin_num):源平台字段FRealQty映射到目标字段stockin_num
    • 原价、入库价、批次、税率等其他字段根据业务需求进行映射或设置固定值。

实际操作示例

假设我们从金蝶系统获取了一条生产入库单数据,包含以下信息:

{
  FBillNo: '20231001',
  FStockId: 'WH001',
  FMaterialId_FNumber: 'M001',
  FRealQty: 100
}

通过轻易云数据集成平台,我们将上述数据转换为旺店通·企业奇门API所需的格式:

{
  outer_no: '20231001',
  warehouse_no: 'WH001',
  remark: '简单生产入库',
  is_check: '1',
  reason: '',
  goods_list: [
    {
      spec_no: 'M001',
      stockin_num: '100',
      src_price: '',
      stockin_price: '',
      batch_no:'',
      tax:''
    }
  ],
  stockin_info:'111'
}

最后,通过POST请求将上述JSON数据推送至旺店通·企业奇门API接口,实现数据写入。

小结

通过以上步骤,我们成功地完成了从金蝶系统到旺店通·企业奇门API接口的数据ETL转换和写入。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接。 金蝶与WMS系统接口开发配置

更多系统对接方案