从数据获取到数据写入:轻易云平台的金蝶云星空接口实践
### 管易云数据集成到金蝶云星空:cp_GK-采购入库单案例分享
在企业信息系统的对接过程中,确保不同平台之间的数据无缝流动和一致性是至关重要的任务。本篇文章将聚焦于如何通过轻易云数据集成平台,实现管易云平台与金蝶云星空系统的高效对接,具体分析`cp_GK-采购入库单`这一实际运行方案。
首先,我们需要从管易云获取准确和及时的数据。这一过程主要依赖于API接口`gy.erp.purchase.arrive.get`进行定时可靠的数据抓取。在实现过程中,我们利用了轻易云提供的批量处理功能,以保障高吞吐量的数据能够快速、高效地被写入到金蝶云星空。
为了应对API调用中的分页和限流问题,我们进行了以下优化:
1. **批次处理**:分段获取大规模数据,同时避免接口请求过多导致限流。
2. **重试机制**:针对接口偶尔返回错误或超时情况,引入了自动重试机制,提高数据抓取成功率。
获取到原始数据后,下一个关键步骤是进行必要的数据转换,以匹配金蝶云星空所需的格式。这一部分可以借助自定义转换逻辑模块,该模块灵活支持特定业务需求,确保每条记录都符合目标系统要求。最后,通过调用金蝶云星空提供的`batchSave` API,将处理后的采购入库单数据批量写入系统中。
此外,为确保整个过程透明可控,实时监控和告警功能发挥了重要作用。从初始抓取、格式转换,到最终写入,每一步都能够通过集中化控制台实时跟踪。一旦出现异常情况,如网络波动或服务器响应时间延长,对应监控会立刻发出告警,并触发预设恢复操作,以最大限度降低业务影响。
总之,通过以上技术手段,有效解决了跨平台间的大规模异构集成问题,使管易云与金蝶云星空两者之间实现稳定、高效、实时的数据联通。
![用友与MES系统接口开发配置](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台调用管易云接口gy.erp.purchase.arrive.get获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用管易云的`gy.erp.purchase.arrive.get`接口,获取采购入库单数据并进行初步加工。
#### 接口调用与请求参数配置
轻易云数据集成平台提供了全透明可视化的操作界面,使得配置和调用API接口变得直观且高效。以下是针对`gy.erp.purchase.arrive.get`接口的元数据配置:
```json
{
"api": "gy.erp.purchase.arrive.get",
"method": "POST",
"number": "code",
"id": "code",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{"field": "start_create", "label": "创建时间开始段", "type": "string"},
{"field": "end_create", "label": "创建时间结束段", "type": "string"},
{"field": "start_approve", "label": "审核时间开始段", "type":"string"},
{"field": "end_approve", "label":"审核时间结束段","type":"string"},
{"field":"warehouse_code","label":"仓库代码","type":"string"},
{"field":"supplier_code","label":"供应商代码","type":"string"},
{"field":"code","label":"单据编号","type":"string"},
{"field":"status","label":"审核状态","type":"string"},
{"field":"start_modify","label":"修改时间开始段","type":"string"},
{"field":"end_modify","label":"修改时间结束段","type":"string"},
{"field":"has_cancel_data","label":"是否返回已作废的入库单数据","type":"string"},
{"field":"has_account","label":"记账状态","type":"string"}
],
"otherRequest":[
{"field": "page_size", "label": "分页大小", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "page_no", "label": "页号", "type": "string", "value": "{PAGINATION_START_PAGE}"}
]
}
```
#### 请求参数详解
1. **基本请求参数**:
- `start_create` 和 `end_create`: 用于指定查询的创建时间范围。
- `start_approve` 和 `end_approve`: 用于指定查询的审核时间范围。
- `warehouse_code`: 指定仓库代码,过滤特定仓库的数据。
- `supplier_code`: 指定供应商代码,过滤特定供应商的数据。
- `code`: 单据编号,用于精确查询某一特定单据。
- `status`: 审核状态,过滤不同审核状态的数据。
- `start_modify` 和 `end_modify`: 用于指定查询的修改时间范围。
- `has_cancel_data`: 是否返回已作废的入库单数据。
- `has_account`: 记账状态。
2. **分页参数**:
- `page_size`: 每页返回的数据条数,这里设置为100条。
- `page_no`: 当前页号,用于分页查询。
#### 数据请求与清洗
在配置好请求参数后,通过轻易云平台发起POST请求,从管易云系统获取采购入库单数据。以下是一个示例请求:
```json
{
"start_create": "<开始日期>",
"end_create": "<结束日期>",
...
//其他必要参数
}
```
成功获取到数据后,需要对原始数据进行清洗和初步加工。这一步骤包括但不限于:
- **字段映射**:将管易云返回的数据字段映射到目标系统所需的字段格式。例如,将`purchase_order_id`映射为目标系统中的`order_id`。
- **数据类型转换**:确保所有字段的数据类型符合目标系统要求。例如,将日期字符串转换为标准日期格式。
- **异常处理**:处理可能出现的数据异常,如空值、格式错误等。
#### 实践案例
假设我们需要获取2023年1月1日至2023年1月31日之间所有已审核且未作废的采购入库单,并将其导入到目标系统。具体步骤如下:
1. **配置请求参数**:
```json
{
...
//其他必要参数
{
field: 'start_create',
value: '2023-01-01'
},
{
field: 'end_create',
value: '2023-01-31'
},
{
field: 'status',
value: 'approved'
},
{
field: 'has_cancel_data',
value: 'false'
}
}
```
2. **发起API请求**:
使用轻易云平台发起POST请求,获取符合条件的数据。
3. **清洗与加工**:
对返回的数据进行字段映射、类型转换和异常处理,以确保数据质量和一致性。
通过上述步骤,我们可以高效地从管易云系统中提取所需的采购入库单数据,并为后续的数据转换与写入阶段做好准备。这种方法不仅提高了工作效率,还确保了数据处理过程中的透明度和准确性。
![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image)
### 利用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入
在数据集成过程中,将源平台的数据转换为目标平台所能接受的格式是关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将采购入库单数据转换并写入金蝶云星空API接口。
#### 元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析:
- `api`: 指定调用的API接口名称,这里是`batchSave`。
- `method`: HTTP请求方法,这里是`POST`。
- `idCheck`: 是否进行ID检查,这里设置为`true`。
- `request`: 请求体参数列表,包含多个字段,每个字段有其特定的属性和解析器。
#### 主要字段及解析器
1. **单据类型 (FBillTypeID)**
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
- 固定值: "RKD01_SYS"
2. **业务类型 (FBusinessType)**
- 类型: string
- 固定值: "CG"
3. **单据编号 (FBillNo)**
- 类型: string
4. **供应商 (FSupplierId)**
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
5. **入库日期 (FDate)**
- 类型: string
6. **收料组织 (FStockOrgId)**
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
7. **收料部门 (FStockDeptId)**
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
8. **采购组织 (FPurchaseOrgId)**
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
9. **送货单号 (FDeliveryBill)**
- 类型: string
10. **提货单号 (FTakeDeliveryBill)**
- 类型: string
11. **供货方 (FSupplyId)**
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
12. **财务信息 (FInStockFin)**:
包含两个子字段:
- 结算组织 (FSettleOrgId)
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
- 付款组织 (FPayOrgId)
- 类型: string
- 解析器: ConvertObjectParser,参数为FNumber
13. **明细信息 (FInStockEntry)**:
包含多个子字段:
- 关联关系 (FInStockEntry_Link)
包含子字段:
* 源单ID (FSBillId)
* 类型:string
* 下推关系 (FRuleId)
* 固定值:"PUR_PurchaseOrder-STK_InStock"
* 表体ID (FSId)
* 类型:string
* 源单表名 (FSTableName)
* 固定值:"t_PUR_POOrderEntry"
* 物料编码 (FMaterialId)
* 类型:string
* 解析器:ConvertObjectParser,参数为 FNumber
* 零售条形码 (FCMKBarCode)
* 类型:string
* 实收数量 (FRealQty)
* 类型:string
* 单价 (FPrice)
* 类型:string
* 批号(FLot)
* 类型:string
* 仓库(FStockId)
* 类型:string
* 解析器:ConvertObjectParser,参数为 FNumber
...(略去部分字段)
#### 数据转换与写入流程
1. **数据请求与清洗**:
首先,通过轻易云平台从源系统请求采购入库单数据,并进行必要的数据清洗。这一步确保了数据的准确性和完整性,为后续的ETL转换打下基础。
2. **ETL转换**:
在ETL阶段,我们利用元数据配置对数据进行转换。具体步骤如下:
a. 根据元数据配置中的`request`字段,将源系统的数据映射到目标系统所需的格式。例如,将源系统中的供应商ID通过`ConvertObjectParser`转换成金蝶云星空所需的格式。
b. 对于复杂对象,如财务信息和明细信息,需要递归处理其子字段。例如,在处理财务信息时,需要分别处理结算组织和付款组织,并确保它们符合目标系统的要求。
3. **数据写入**:
转换完成后,通过调用金蝶云星空API接口(如`batchSave`),将处理后的数据写入目标系统。在这个过程中,需要注意以下几点:
a. 确保所有必填字段都有正确的值,并且符合目标系统的格式要求。
b. 如果某些字段需要固定值(如业务类型、下推关系等),确保在请求体中正确设置这些值。
#### 实际案例应用
假设我们有一条采购入库单记录,其源系统的数据如下:
```json
{
"FBillNo": "PO20231001",
"FSupplierId": "SUP123",
"FDate": "2023-10-01",
"FPurchaseOrgId": "ORG001",
"FInStockEntry": [
{
"FSBillId": "SO20231001",
"FSId": "1",
"FMaterialId": "MAT001",
"FCMKBarCode": "1234567890123",
"FRealQty": "100",
...
}
]
}
```
通过轻易云平台,我们将上述记录转换并写入金蝶云星空API接口。最终生成的请求体如下:
```json
{
"FormId": "STK_InStock",
"IsAutoSubmitAndAudit": true,
"Operation": "Save",
...
}
```
通过这种方式,我们实现了从源系统到目标系统的数据无缝对接,大大提高了业务效率和透明度。
![数据集成平台API接口配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)