### 金蝶云星空数据集成到旺店通·企业奇门的技术实践
在复杂多变的商业环境中,实现系统间的数据无缝对接已经成为企业高效运营的重要保障。本篇技术案例将深入探讨如何通过轻易云数据集成平台,成功实现金蝶云星空与旺店通·企业奇门之间的数据对接。在具体操作中,我们主要关注直接调拨单对接其他出库单这一实际业务需求,方案名称为“直接调拨单对接其他出库单==>金蝶—旺店通”。
1. **保证集成数据不漏单**
在应用executeBillQuery接口从金蝶云获取调拨单时,通过定时任务可靠地抓取接口数据,是确保不漏掉业务订单信息的关键。一旦抓取到新数据,本次处理则立即结束,为下一次调用准备充足时间。
2. **大量数据快速写入**
为了提高效率,将批量提取的数据传递到旺店通,并调用wdt.stockout.order.push API进行批量写入。在这里需要特别注意的是,一次性处理的大量数据会影响系统性能,因此要根据实际情况合理设置分页和限流策略。
3. **实时监控与日志记录**
实现整个过程的透明化管理至关重要。每当触发一次API调用,都应当生成详细的日志记录,并且配合实时监控组件,以便了解当前所有处理中或已完成的数据状态。这不仅能有效防止问题,还能在出现异常状况时迅速响应并提升修复效率。
4. **异构系统间格式转换**
金蝶云星空与旺店通·企业奇门之间存在一定的数据格式差异。为了确保两者顺利衔接,需要设立一套完整而可靠的映射规则,从字段名称、类型,到值域范围均需完全匹配。此外,这些规则还必须满足灵活调整,以适应未来可能发生的新变化。
5. **错误重试机制**
尽管我们尽可能优化各个环节,但意外情况总是难以避免。比如网络波动导致请求失败,此时预先设计好的异常处理和重试机制就显得尤为重要。通过精准捕获错误信息并重新尝试发送,无疑大幅提升整体稳定性和容错率。
本文将详细介绍上述步骤及相关技术细节,旨在帮助大家更好地理解如何利用现代化工具高效、安全地进行系统集成工作。同时,也希望能够提供一些实战经验,为类似场景下的问题解决提供参考依据。
![打通金蝶云星空数据接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。
#### 接口配置与请求参数
首先,我们需要理解元数据配置中的各个字段及其作用。以下是关键字段的解析:
- **api**: `"executeBillQuery"`,表示我们调用的是金蝶云星空的查询接口。
- **method**: `"POST"`,请求方法为POST。
- **number**: `"FBillNo"`,单据编号。
- **id**: `"FBillEntry_FEntryID"`,分录ID。
- **idCheck**: `true`,表示需要进行ID检查。
请求参数主要分为两部分:`request`和`otherRequest`。
##### request部分
```json
[
{"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部分
```json
[
{"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": "金蝶的查询分页参数"}
]
```
这些字段用于控制查询行为,例如分页、过滤条件等。
#### 调用接口
在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空接口的调用。以下是一个示例请求:
```json
{
"apiName": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
"methodName": "",
// 请求体内容
{
...
// 填充请求参数
...
// 填充otherRequest参数
...
}
}
```
#### 数据清洗与加工
获取到数据后,我们需要对其进行清洗和加工。这一步通常包括以下几个步骤:
1. **数据验证**:确保每个字段的数据类型和内容符合预期。例如,检查日期格式是否正确,数值是否在合理范围内等。
2. **数据转换**:根据业务需求,将原始数据转换为目标系统所需的格式。例如,将日期格式从`YYYY-MM-DD`转换为`MM/DD/YYYY`。
3. **数据过滤**:根据特定条件筛选出需要的数据。例如,只保留状态为“已审核”的记录。
#### 实践案例
假设我们需要从金蝶云星空中获取所有状态为“已审核”的直接调拨单,并将其导入到旺店通系统中。具体步骤如下:
1. **配置元数据**:如上文所述,设置好所有必要的字段和过滤条件。
2. **发起请求**:通过轻易云平台调用`executeBillQuery`接口,并传递配置好的请求参数。
3. **处理响应**:对返回的数据进行清洗、转换和过滤。
4. **写入目标系统**:将处理后的数据通过相应接口写入旺店通系统。
通过以上步骤,我们可以实现从金蝶云星空到旺店通系统的数据无缝对接。这不仅提高了工作效率,还确保了数据的一致性和准确性。
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image)
### 数据集成案例:将源平台数据ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台——旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。
#### API接口及元数据配置
首先,我们需要了解目标API接口及其元数据配置。本文的目标API接口为`wdt.stockout.order.push`,该接口用于将其他出库单的数据推送到旺店通系统中。以下是该接口的元数据配置:
```json
{
"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_no`和`detail_list.num`字段。
3. **生成请求报文**:
根据上述映射关系,生成符合旺店通API要求的请求报文。例如:
```json
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
outer_no: '12345',
warehouse_no: 'WH001',
remark: '调拨出库',
reason: '',
detail_list: [
{ spec_no: 'MAT001', num: '10' },
{ spec_no: 'MAT002', num: '20' }
],
is_check: '1'
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
```
4. **发送请求并写入目标平台**:
使用HTTP POST方法,将生成的请求报文发送至旺店通·企业奇门API接口,实现数据写入。
#### 实践案例
假设我们有一条从金蝶系统中提取的数据如下:
```json
{
FBillNo: '12345',
FSrcStockId_FNumber: 'WH001',
FMaterialId_FNumber: ['MAT001', 'MAT002'],
FQty: ['10', '20']
}
```
根据上述配置和步骤,我们最终生成并发送给旺店通·企业奇门API接口的数据报文如下:
```json
{
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接口](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)