### 吉客云·奇门数据集成到金蝶云星空的案例分享:销售订单转销售出库单
在系统集成项目中,高效地实现吉客云·奇门与金蝶云星空之间的数据对接是一个关键的挑战。本文将以实际运行方案`(吉客云奇门->金蝶)(线上)销售订单->销售出库单9090`为例,深入探讨如何顺利完成这一任务。
为了确保吉客云·奇门的数据准确无误地被写入到金蝶云星空,我们首先利用其API接口`jackyun.tradenotsensitiveinfos.list.get`来定时抓取数据。这一过程不仅需要解决分页和限流问题,还要处理两者间的数据格式差异。与此同时,为提高大批量数据传输的效率,我们采用了轻易平台提供的批量集成功能,通过调用金蝶云星空的`batchSave`接口,实现快速写入。
具体实施过程中,透明化和实时监控机制尤为重要。在操作每一步时,可以借助日志记录功能追踪数据流动状态,并在出现异常情况时及时进行错误重试。此外,对接双方的一些特性也需特别注意,例如金蝶云星空所需的数据映射规则、字段匹配以及必要的转换逻辑。这些都将在后续步骤详细解析,以保障整个流程高效稳定。
通过以上技术手段,不仅可以确保业务环节中的每一个订单精准传递,同时也极大程度上提升了企业运营效率及可靠性。在下一部分中,我们将详述从获取吉客云·奇门接口数据,到最终写入金蝶云星空各个技术细节与最佳实践。
![用友BIP接口开发配置](https://pic.qeasy.cloud/D23.png~tplv-syqr462i7n-qeasy.image)
### 调用吉客云·奇门接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`,并对返回的数据进行初步加工处理。
#### 接口配置与请求参数
首先,我们需要配置接口的元数据,以便正确调用吉客云·奇门的API。以下是该接口的元数据配置:
```json
{
"api": "jackyun.tradenotsensitiveinfos.list.get",
"effect": "QUERY",
"method": "POST",
"number": "tradeNo",
"id": "tradeNo",
"idCheck": true,
"request": [
{"field":"startModified","label":"startModified","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"endModified","label":"endModified","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"pageSize","label":"pageSize","type":"string","describe":"111","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"pageIndex","label":"pageIndex","type":"string","describe":"111","value":"{PAGINATION_START_PAGE}"},
{"field":"fields","label":"fields","type":"string","describe":"111","value":
"tradeNo,orderNo,shopName,companyName,warehouseName,logisticName,mainPostid,goodsDetail.goodsNo,flagNames,columnExt,sourceAfterNo,goodsDetail.outerId,pickUpCode,expense.expenseFee,expense.expenseItemName,billDate,goodsPlatDiscountFee,goodsDetail.shareOrderDiscountFee,goodsDetail.shareOrderPlatDiscountFee,customizeGoodsColumn9,goodsDetail.goodsId,goodsDetail.goodsNo,goodsDetail.goodsName,goodsDetail.specName,goodsDetail.barcode,goodsDetail.sellCount,goodsDetail.unit,goodsDetail.sellPrice,goodsDetail.sellTotal,goodsDetail.cost,goodsDetail.discountTotal,goodsDetail.discountPoint,taxFee,taxRate"
},
{"field": "isDelete", "label": "isDelete", "type": "string"},
{"field": "tradeStatus", "label": "tradeStatus", "type": "string", "value": "9090"},
{"field": "tradeTypeList", "label": "tradeTypeList", "type": "string",
"value":
"1,2,3,4,5,6,7,9,10,11,13,91,92"
,"parser":{"name":"StringToArray","params": ","}}
],
"condition":[
[{"field":"shopCode","logic":"neqv2","value":"0007"},{"field":"goodsDetail.goodsNo","logic":"neqv2","value":"88888"},{"field":"goodsDelivery.tradeId"}]
],
"beatFlat":["goodsDelivery"]
}
```
#### 请求参数解析
1. **时间参数**:`startModified`和`endModified`分别表示查询的起始和结束时间,使用动态变量`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`来获取。
2. **分页参数**:`pageSize`和`pageIndex`用于分页查询,确保每次请求的数据量适中。
3. **字段选择**:通过`fields`字段指定需要返回的数据字段,包括订单号、商品详情等。
4. **过滤条件**:使用条件过滤器,如排除特定店铺代码(如不等于“0007”)和特定商品编号(如不等于“88888”)。
#### 数据请求与清洗
在完成接口配置后,通过POST方法发送请求以获取数据。返回的数据可能包含多个嵌套结构,如商品详情(`goodsDetail`)和商品交付信息(`goodsDelivery`)。我们需要对这些嵌套结构进行扁平化处理,以便后续的数据转换与写入。
以下是一个简单的Python示例,用于发送请求并处理返回的数据:
```python
import requests
import json
url = 'https://api.jackyun.com/tradenotsensitiveinfos/list/get'
headers = {'Content-Type': 'application/json'}
payload = {
'startModified': '2023-01-01T00:00:00Z',
'endModified': '2023-01-31T23:59:59Z',
'pageSize': 100,
'pageIndex': 1,
'fields': 'tradeNo,...', # 完整字段列表见上文
'isDelete': False,
'tradeStatus': '9090',
'tradeTypeList': [1,...] # 完整类型列表见上文
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 扁平化处理示例
def flatten_data(data):
flat_data = []
for item in data['result']:
base_info = {k: item[k] for k in item if k != 'goodsDetail'}
for detail in item['goodsDetail']:
flat_item = {**base_info}
flat_item.update(detail)
flat_data.append(flat_item)
return flat_data
flat_data = flatten_data(data)
```
#### 数据转换与写入准备
在完成数据清洗后,可以将扁平化后的数据传递给下一个阶段进行转换与写入。此过程包括将数据映射到目标系统所需的格式,并执行必要的转换逻辑,如单位换算、字段重命名等。
通过上述步骤,我们实现了从吉客云·奇门接口获取并初步加工数据,为后续的数据集成奠定了基础。这一过程展示了如何利用轻易云数据集成平台的强大功能,实现高效、透明的数据处理。
![打通企业微信数据接口](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台ETL转换与写入金蝶云星空API接口技术案例
在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式并写入,是一个至关重要的步骤。本文将详细探讨如何利用轻易云数据集成平台,将吉客云奇门的销售订单数据转换为金蝶云星空API接口所能接收的格式,并最终写入金蝶云星空系统。
#### 数据请求与清洗
首先,我们从吉客云奇门获取销售订单数据。这一步骤包括数据请求和初步清洗,确保数据完整性和一致性。假设我们已经完成了这部分工作,接下来进入关键的ETL(Extract, Transform, Load)过程。
#### 数据转换与写入
我们需要将已清洗的数据转换为金蝶云星空API接口所能接受的格式。以下是具体的元数据配置及其应用:
##### API接口配置
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "tradeNo",
"bodyName": "details",
"bodySum": ["goodsDetail_goodsDelivery_sendCount"],
"header": ["tradeNo", "shopCode", "warehouseCode", "sourceTradeNos", "consignTime", "onlineTradeNo"],
"body": ["goodsDetail_goodsNo", "goodsDetail_goodsDelivery_sendCount", "goodsDetail_goodsDelivery_batchamount",
"goodsDetail_goodsDelivery_batchNo", "goodsDetail_shareFavourableAfterFee",
"goodsDetail_sellTotal", "goodsDetail_sellCount"]
},
...
}
```
该配置定义了如何将源数据映射到目标API接口字段中。主要包括以下几个部分:
1. **API基本信息**:`api`字段指定了调用的API名称`batchSave`,`method`字段指定了HTTP方法为POST。
2. **操作配置**:通过`operation`字段定义了合并策略、主键字段、明细体名称以及汇总字段等。
3. **请求参数映射**:通过`request`数组定义了各个字段的映射关系。
##### 请求参数映射
```json
[
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{tradeNo}"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{consignTime|date}}"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shopCode}"},
...
]
```
每个请求参数都包含以下信息:
- `field`: 对应金蝶云星空中的字段名。
- `label`: 字段标签,用于描述该字段。
- `type`: 字段类型,如字符串、日期等。
- `describe`: 字段描述。
- `parser`: 用于解析和转换值的解析器,例如`ConvertObjectParser`。
- `value`: 映射值,可以是静态值或动态值(如模板变量)。
##### 明细信息映射
```json
{
"field": "FEntity",
...
"children": [
{"field": "FCustMatID", ...},
{"field": "FMaterialID", ...},
{"field": "FBarcode", ...},
{"field": "FRealQty", ...},
...
]
}
```
明细信息通过嵌套结构进行映射,每个子字段都包含类似的配置,确保每个明细项都能正确映射到目标系统中。
##### 特殊处理逻辑
在某些情况下,需要对特定字段进行特殊处理。例如,计算含税单价和判断是否赠品:
```json
{"field": "FTaxPrice", ... ,
"value": "_function {{details.goodsDetail_shareFavourableAfterFee}}/{{details.goodsDetail_sellCount}}"},
{"field": "FIsFree", ... ,
"value": "_function CASE WHEN {{details.goodsDetail_sellTotal}}>0 THEN 'false' ELSE 'true' END"}
```
这些特殊处理逻辑通过自定义函数实现,以满足业务需求。
#### 数据写入
最后,通过调用配置好的API接口,将转换后的数据写入金蝶云星空系统。整个过程由轻易云数据集成平台自动化执行,确保高效、准确地完成数据集成任务。
以上即是利用轻易云数据集成平台,将吉客云奇门销售订单数据转换并写入金蝶云星空API接口的技术案例。通过合理配置元数据和请求参数,实现了不同系统间的数据无缝对接。
![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)