轻易云ETL案例:领星FBA出库单对接金蝶分布式调出单
### 领星FBA出库单 => 金蝶分布式调出单(FBA出库)数据集成案例
在企业的运营中,数据的高效流转和准确集成是提升业务效率的重要环节。本文将分享一个实践案例:如何利用轻易云数据集成平台,将领星ERP系统中的FBA(全称Fulfillment by Amazon)出库单数据无缝对接到金蝶云星空系统,实现业务流程的自动化和高效化。
本次任务中的核心挑战包括定时可靠地抓取领星ERP接口提供的数据、处理API请求过程中可能出现的分页和限流问题,以及确保在传输过程中的数据完整性与准确性。此外,我们还需要考虑两个系统之间的数据格式差异,并通过自定义转换逻辑进行适配。最终,实现大量FBA出库单快速批量写入到金蝶云星空。
#### 获取领星ERP FBA 出库单
首先,通过调用领星ERP接口 `/erp/sc/storage/shipment/getInboundShipmentList` 定时获取最新的FBA出库单信息。为了保证不漏单,我们采用了可靠的抓取机制,包括重试策略和异常监控。一旦获取到所有需要的数据,将进入下一步处理阶段。
#### 数据转换与映射
由于领星ERP与金蝶云星空两者间存在数据结构上的差异,因此我们使用了轻易云平台提供的数据转换功能,对获取到的数据进行必要的字段映射及格式调整。这一步主要涉及:
- 字段重命名
- 数据类型校正
- 特定业务逻辑实现,例如状态码转换等
上述操作均可通过轻易云的平台可视化工具来完成,使得整个过程直观且易于维护。
#### 批量写入金蝶云星空
对于已经整合成功后的数据,使用金蝶开放API `batchSave` 进行批量写入。在这一步骤中,需要特别注意以下技术细节:
1. **分页处理**: 确保每次提交不超过API允许的一页最大容量,以防请求被拒绝。
2. **错误监控与重试**: 开启实时监控,如果在执行过程中发生错误,可以自动触发重试机制,提高任务完成率。
3. **性能优化**: 在确保各步骤顺利执行同时,还要关注整体吞吐量以提高效率。
经过这一系列严格控制后,大批量且精准无误的数据即可成功同步至金蝶系统,为后续业务应用奠定基础。
上述所述仅为本项目实施过程中的部分关键技术点,具体实现方案将在后续内容中详细探讨,包括如何应对突发故障、如何进一步优化性能以及更多实际操作经验分享。
![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image)
### 调用领星ERP接口获取并加工数据的技术案例
在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用领星ERP的`/erp/sc/storage/shipment/getInboundShipmentList`接口获取FBA出库单数据,并进行初步加工。
#### 接口调用配置
首先,我们需要配置API接口调用的元数据。以下是关键的元数据配置:
```json
{
"api": "/erp/sc/storage/shipment/getInboundShipmentList",
"effect": "QUERY",
"method": "POST",
"number": "shipment_sn",
"id": "id",
"idCheck": true,
"request": [
{"field": "search_value", "label": "搜索的值", "type": "string"},
{"field": "search_field", "label": "搜索字段", "type": "string"},
{"field": "time_type", "label": "时间类型", "type": "int", "value": "2"},
{"field": "start_date", "label": "开始日期", "type": "string",
"value":"{{LAST_SYNC_TIME|date}}"},
{"field": "end_date", "label":"结束日期","type":"string",
"value":"{{CURRENT_TIME|date}}"},
{"field":"offset","label":"分页偏移量,默认0","type":"int"},
{"field":"length","label":"分页长度,默认20","type":"int","value":"20"}
],
...
}
```
#### 请求参数详解
1. **search_value** 和 **search_field**:用于定义查询条件,可以根据具体业务需求设置。
2. **time_type**:固定值为2,表示按时间范围查询。
3. **start_date** 和 **end_date**:分别表示查询的起始和结束日期,通过模板变量动态生成。
4. **offset** 和 **length**:用于分页控制,确保每次请求的数据量适中。
#### 数据请求与清洗
在实际操作中,我们通过POST方法向`/erp/sc/storage/shipment/getInboundShipmentList`接口发送请求。以下是一个示例请求体:
```json
{
"search_value": "",
"search_field": "",
"time_type": 2,
"start_date": "{{LAST_SYNC_TIME|date}}",
"end_date": "{{CURRENT_TIME|date}}",
...
}
```
接收到的数据可能包含多个字段,但我们只关心特定字段,例如`shipment_sn`(出库单号)和其他业务相关信息。在此阶段,我们需要对原始数据进行清洗,包括去除无效字段、标准化日期格式等操作。
#### 数据转换与写入
清洗后的数据需要进一步转换,以符合目标系统(金蝶分布式调出单)的要求。假设目标系统要求的数据格式如下:
```json
{
...
{
“shipment_sn”: “123456”,
“product_code”: “ABC123”,
“quantity”: “100”,
...
}
}
```
我们可以使用轻易云平台提供的数据转换工具,将清洗后的数据映射到目标格式。例如,将领星ERP返回的`shipment_sn`字段直接映射到目标系统的同名字段。
#### 实际案例应用
在一个实际案例中,我们从领星ERP获取了FBA出库单列表,并将其成功转换为金蝶分布式调出单所需的数据格式。以下是简化后的处理流程:
1. **调用API获取原始数据**:
```json
POST /erp/sc/storage/shipment/getInboundShipmentList
{
...
}
```
2. **清洗原始数据**:
```json
[
{
“shipment_sn”: “123456”,
...
},
...
]
```
3. **转换并写入目标系统**:
```json
[
{
“shipment_sn”: “123456”,
“product_code”: “ABC123”,
“quantity”: “100”,
...
},
...
]
```
通过上述步骤,我们实现了从领星ERP到金蝶分布式调出单的数据无缝对接。这不仅提高了业务处理效率,还确保了数据的一致性和准确性。
以上就是通过轻易云平台调用领星ERP接口获取并加工FBA出库单数据的详细技术案例,希望能为您在实际操作中提供参考和帮助。
![如何对接用友BIP接口](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台将领星FBA出库单转换为金蝶分布式调出单
在数据集成的生命周期中,将源平台的数据转换并写入目标平台是一个关键步骤。本文将深入探讨如何使用轻易云数据集成平台,将领星FBA出库单的数据进行ETL转换,并通过金蝶云星空API接口写入到目标平台。
#### API接口配置与元数据解析
在本案例中,我们使用金蝶云星空的`batchSave` API接口来实现数据写入。以下是详细的元数据配置:
```json
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","value":"{shipment_sn}"},
{"field":"FOwnerTypeIdHead","label":"调出货主类型","type":"string","value":"BD_OwnerOrg"},
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FBDC03_SYS"},
{"field":"FTransferBizType","label":"调拨类型","type":"string"},
{"field":"FOwnerIdHead","label":"调出货主","type":"string","value":"107","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FOwnerTypeInIdHead","label":"调入货主类型","type":"string","value":"BD_OwnerOrg"},
{"field":"FTransferDirect","label":"调拨方向","type":"string","value":"GENERAL"},
{"field":"FOwnerInIdHead","label":"调入货主","type":"string","value":"107","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FStockOrgID","label":"调出库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"107"},
{"field":"FStockInOrgID","label":"调入库存组织","type":"string","value":"107","parser":{"name\":\"ConvertObjectParser\",\"params\":\"FNumber\"}},
{"field\":\"FDate\",\"label\":\"日期\",\"type\":\"string\",\"value\":\"{gmt_create}\"},
{"field\":\"FVESTONWAY\",\"label\":\"在途归属\",\"type\":\"string\"},
{"field\":\"FNOTE\",\"label\":\"备注\",\"type\":\"string\",\"value\":\"{remark}\"},
{"field\":\"FBizType\",\"label\":\"业务类型\",\"type\":\"string\"},
{
"field": "FSTKTRSOUTENTRY",
"label": "明细信息",
"type": "array",
"children": [
{"field\": \"FMaterialID\", \"label\": \"物料编码\", \"type\": \"string\", \"parser\": {\"name\": \"ConvertObjectParser\", \"params\": \"FNumber\"}, \"value\": \"{{items.sku}}\", \"parent\": \"FSTKTRSOUTENTRY\"},
{\"field\": \"FQty\", \"label\": \"数量\", \"type\": \"string\", \"value\": \"{num}\", \"parent\": \"FSTKTRSOUTENTRY\"},
{\"field\": \"FSrcStockID\", \"label\": \"调出仓库\", \"type\": \"string\", \"parser\": {\"name\": \"ConvertObjectParser\", \"params\": \"FNumber\"}, \"value\": \"{wid}\", \"parent\": \“ FSTKTRSOUTENTRY \”},
{\" field \": \“ FOwnerTypeID \”, \“ label \”: \“ 调出货主类型 \”, \“ type \”: \“ string \”, \“ value \”: \“ BD_OwnerOrg \”, “ parent ”: “ FSTKTRSOUTENTRY ”},
{\" field \": “ FOwnerID ”, “ label ”: “ 调出货主 ”, “ type ”: “ string ”, “ parser ”: {“ name ”: “ ConvertObjectParser ”, “ params ”: “ FNumber ”}, “ value ”: “ 107 ”, “ parent ”: “ FSTKTRSOUTENTRY ”},
{\" field \": “ FOwnerTypeInID ”, “ label ”: “ 调入货主类型 ”, “ type ”: “ string ”, “ value ”: “ BD_OwnerOrg ”, “ parent ”: “ FSTKTRSOUTENTRY ”},
{\" field \": “ FKeeperTypeInID ”, “ label ”: “ 调入保管者类型 ”, “ type ”: “ string ”, “ value ”: “ BD_KeeperOrg ”, `` parent '' : `` FSTKTRSOUTENTRY '' },
{`` field '': `` FKeeperInID '', `` label '': `` 调入保管者 '', `` type '': `` string '', `` value '': `` 107 '', `` parser '': {`` name '': `` ConvertObjectParser '', `` params '': `` FNumber '' }, `parent`: ` ` FSTKTRSOUTENTRY ` ` },
{`` field '': `` FDestMaterialID '', `` label '': `` 调入物料 '', `` type '': `` string '', `` value '': ` {{items.sku}} ``, `parent`: ` ` FSTKTRSOUTENTRY ``, ` parser`: `{` name`: ` ConvertObjectParser`, ` params`: ` FNumber` } },
{`` field '':`` FKeeperTypeID'',`` label'':'' 调出保管者类型'',`` type'':'' string'',`` value'':'' BD_KeeperOrg'',`` parent'':'' FSTKTRSOUTENTRY'' },
{`` field'':'' FKeeperID'',`` label'':'' 调出保管者'',`` type'':'' string'',`` value'':'' 107'',`` parser'':'' ConvertObjectParser'',`` params'':'' FNumber'' },`parent`:` ` FSTKTRSOUTENTRY`}
],
"value": "items"
}
],
"otherRequest":[
{"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_TRANSFEROUT"},
{"field": "Operation", "label": "Operation", "type": "string", "value": "BatchSave"},
{"field": "IsAutoSubmitAndAudit", "label": "IsAutoSubmitAndAudit", "type": bool ",`` value'' : true },
{' field ':' IsVerifyBaseDataField ',' label ':' 验证基础资料 ',' type ':' bool ',' describe ':' 是否验证所有的基础资料有效性,布尔类,默认false(非必录) ',' value ':' true '}
],
operation:{ method:' batchArraySave ', rows:1 , rowsKey:' array '}
}
}
```
#### 数据请求与清洗
首先,我们需要从领星系统获取原始的FBA出库单数据。这些数据通常包括订单编号、物料编码、数量、仓库信息等。在获取到这些原始数据后,需要对其进行清洗和标准化处理,以确保数据格式的一致性和完整性。
例如,订单编号字段`shipment_sn`需要映射到目标系统中的`FBillNo`字段,物料编码字段`sks`需要映射到`items.sku`字段。通过轻易云的数据清洗功能,可以轻松实现这些映射和转换。
#### 数据转换与写入
接下来,我们将清洗后的数据进行ETL转换,并通过配置好的API接口写入到金蝶云星空系统中。以下是具体的步骤:
1. **构建请求体**:根据元数据配置,构建符合API要求的JSON请求体。例如:
```json
{
...
{
`"FBillNo"`:`"12345"`,
`"FOwnerTypeIdHead"`:`"BD_OwnerOrg"`,
`"FBillTypeID"`:`"FBDC03_SYS"`,
...
`"items"`:[
{
`"sku"`:`"ABC123"`,
`"num"`:`100`,
`"wid"`:`"W001"`
}
]
}
...
}
```
2. **调用API接口**:使用HTTP POST方法,将构建好的请求体发送到金蝶云星空的`batchSave`接口。
3. **处理响应**:接收并处理API响应,确保数据成功写入。如果出现错误,根据错误信息进行相应调整和重试。
#### 数据验证与监控
为了确保数据准确无误地写入目标系统,需要对每一步骤进行验证和监控。轻易云提供了实时监控功能,可以跟踪每个数据包的处理状态,并及时发现和解决问题。
通过上述步骤,我们可以高效地将领星系统中的FBA出库单数据转换为金蝶分布式调出单,并成功写入金蝶云星空系统。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。
![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)