实时监控与日志记录在吉客云和金蝶云星空数据对接中的应用
### 礼顿吉客云销售单对接案例分享(8:售后退货-退货)
在本技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现吉客云·奇门到金蝶云星空的数据对接,特别是针对礼顿公司的销售单售后退货场景。本次集成任务的核心是确保数据从获取、处理到最终写入的全流程稳定高效。以下便是我们的实际运行方案及关键技术点。
第一步,我们需要调用吉客云·奇门的`jackyun.tradenotsensitiveinfos.list.get`接口来获取销售单相关数据。这一步至关重要,涉及如何处理接口分页和限流问题,以避免漏单现象。同时,我们还需定时可靠地抓取这些数据,确保信息实时更新。
为了应对大规模数据快速写入需求,我们采用了金蝶云星空提供的`batchSave` API接口。在此过程中,要注意处理两者之间的数据格式差异,通过定制化的数据映射方法,将吉客云·奇门中的字段转换为金蝶云星空可识别的格式。此外,在批量操作中,对异常情况进行监控和错误重试机制也是必不可少的一环,以保证系统的鲁棒性和持久稳定。
对于整个集成过程,各个环节都实现了实时监控与日志记录,这不仅提升了透明度,还极大方便了排错与维护工作。通过这些措施,不仅确保整个系统能够准确、高效地完成数据传输,也为日后的优化提供了有力支持。
接下来,让我们深入探讨具体实现步骤及相应代码示例。
![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image)
### 调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get获取并加工数据
在轻易云数据集成平台的生命周期中,第一步是调用源系统接口以获取原始数据。本文将详细探讨如何通过调用吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`来获取销售单数据,并对其进行必要的加工处理。
#### 接口调用配置
首先,我们需要配置接口调用的元数据。以下是关键配置项:
- **API**: `jackyun.tradenotsensitiveinfos.list.get`
- **请求方法**: `POST`
- **分页设置**: 每页记录数为20
- **字段映射与格式化**: 将返回结果中的`consignTime`字段重新命名为`consignTime_new`并格式化为日期类型
- **请求参数**:
- `modified_begin`: 修改起始时间
- `modified_end`: 修改结束时间
- `startModified`: 最后修改时间(起始)
- `endModified`: 最后修改时间(截止)
- `tradeNo`: 销售单号
- `pageSize`: 每页记录数,默认50,最大1000
- `pageIndex`: 页码,0为第1页
- `hasTotal`: 默认返回,首次调用时可以传1获取总记录数
- `startCreated`: 创建时间(起始)
- `endCreated`: 创建时间(截止)
- `startAuditTime`: 审核时间(起始)
- `endAuditTime`: 审核时间(截止)
- `startConsignTime`: 发货时间(起始),使用上次同步时间
- `endConsignTime`: 发货时间(截止),使用当前时间
- `tradeStatus`: 订单状态,值为9090表示售后退货
- `tradeType`: 订单类型,值为8表示退货订单
- `shopIds`: 店铺ID列表,以逗号分隔
#### 请求参数构建
在实际操作中,我们需要根据业务需求动态构建请求参数。例如:
```json
{
"modified_begin": "2023-09-01T00:00:00",
"modified_end": "2023-09-07T23:59:59",
"pageSize": "20",
"pageIndex": "0",
"hasTotal": "1",
"startConsignTime": "{{LAST_SYNC_TIME|datetime}}",
"endConsignTime": "{{CURRENT_TIME|datetime}}",
"tradeStatus": "9090",
"tradeType": "8",
"shopIds": ["1615936578929590912", "1589750679905665664", ...]
}
```
#### 数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换。以下是一些关键步骤:
1. **字段重命名与格式化**:
将返回结果中的`consignTime`字段重命名为`consignTime_new`并格式化为日期类型。
2. **数据过滤**:
根据业务规则过滤掉不符合条件的数据。例如,过滤掉销售数量为零的商品明细:
```json
{
"condition_bk": [
[
{"field":"goodsDetail_sellCount","logic":"neqv2","value":"0"}
]
]
}
```
3. **数组解析**:
对于需要解析的字段,如店铺ID列表,可以使用字符串转数组的解析器:
```json
{
"field":"shopIds",
"parser":{"name":"StringToArray","params":","}
}
```
#### 数据写入目标系统
经过清洗和转换的数据可以写入目标系统。在轻易云平台中,这一步通常通过配置相应的数据写入组件来实现。具体操作包括:
1. 配置目标系统的连接信息。
2. 映射源数据字段到目标系统字段。
3. 设置数据写入规则,如批量写入、错误处理等。
#### 实时监控与日志记录
为了确保数据集成过程的透明度和可追溯性,需要实时监控数据流动和处理状态,并记录日志。轻易云平台提供了丰富的监控和日志功能,可以帮助我们及时发现和解决问题。
通过以上步骤,我们可以高效地调用吉客云·奇门接口获取销售单数据,并对其进行必要的清洗和转换,为后续的数据处理打下坚实基础。
![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台:将源平台数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,数据转换与写入是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据通过ETL(Extract, Transform, Load)过程转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
#### 数据请求与清洗
在进行数据转换之前,首先需要从源系统请求并清洗数据。假设我们已经完成了这一步,接下来我们将重点放在如何将这些清洗后的数据进行ETL处理,并通过API接口写入金蝶云星空。
#### 元数据配置解析
根据提供的元数据配置,我们可以看到需要将礼顿吉客云销售单对接到金蝶云星空的售后退货(8:售后退货-退货)模块。以下是关键配置项的解析:
1. **API调用方式**:
- `api`: `"batchSave"`
- `method`: `"POST"`
2. **主表字段映射**:
- `FBillTypeID`:单据类型,固定值为`"XSTHD07_SYS"`。
- `FBillNo`:单据编号。
- `FSaleOrgId`:销售组织,固定值为`"201"`。
- `FDate`:日期,对应源数据中的`{consignTime_new}`。
- `FStockOrgId`:库存组织,固定值为`"201"`。
- `FRetcustId`:退货客户,通过函数从`{shopCodenew}`中提取。
- 其他字段如货主类型、销售部门等均有相应的固定值或解析方式。
3. **明细信息映射**:
明细信息(FEntity)包含多个子字段,每个字段都有对应的解析和计算规则。例如:
- `FMaterialId`:物料编码,对应源数据中的`{{details.goodsDetail_goodsNo}}`。
- `FRealQty`:实退数量,通过函数计算得到负数值 `_function {{details.goodsDetail_sellCount}}*(-1)`。
- `FTaxPrice`:含税单价,通过函数计算得到 `_function {{details.goodsDetail_shareFavourableAfterFee}}/{{details.goodsDetail_sellCount}}`。
4. **财务信息映射**:
财务信息(SubHeadEntity)包含结算组织等字段,同样有相应的固定值或解析方式。
5. **其他请求参数**:
包括业务对象表单ID、执行操作、是否自动提交审核等配置项。例如:
- `FormId`: `"SAL_RETURNSTOCK"`
- `Operation`: `"Save"`
- `IsAutoSubmitAndAudit`: `true`
#### 数据转换与写入流程
1. **提取(Extract)**:
从源系统中提取所需的数据,这一步通常已经在生命周期的第一步完成。
2. **转换(Transform)**:
根据元数据配置,将提取到的数据进行格式转换和计算。例如,将销售单中的商品编码、数量、价格等信息按照金蝶云星空API要求进行处理。
3. **加载(Load)**:
使用HTTP POST方法,将转换后的数据发送到金蝶云星空API接口。具体代码实现可能如下:
```python
import requests
import json
# 构建请求体
payload = {
"FormId": "SAL_RETURNSTOCK",
"Operation": "Save",
"IsAutoSubmitAndAudit": True,
"IsVerifyBaseDataField": True,
"InterationFlags": "STK_InvCheckResult",
"Model": {
"FBillTypeID": {"FNumber": "XSTHD07_SYS"},
"FBillNo": "<单据编号>",
"FSaleOrgId": {"FNumber": "201"},
"FDate": "<日期>",
# 其他主表字段...
"FEntity": [
{
"FMaterialId": {"FNumber": "<物料编码>"},
"FRealQty": "<实退数量>",
# 其他明细字段...
}
# 更多明细行...
],
# 财务信息...
}
}
# 发送POST请求
response = requests.post("https://api.kingdee.com/batchSave", headers={"Content-Type": "application/json"}, data=json.dumps(payload))
# 检查响应状态
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data: {response.text}")
```
#### 注意事项
- **错误处理**:确保在实际应用中对各种可能的错误情况进行处理,如网络异常、API返回错误等。
- **性能优化**:对于大批量数据,可以考虑分批次提交,以避免一次性提交过多数据导致超时或失败。
通过以上步骤,我们成功地将礼顿吉客云销售单的数据转换并写入到金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提升了业务流程的效率,也确保了数据的一致性和准确性。
![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)