轻易云平台ETL转换与旺店通API对接技术案例

  • 轻易云集成顾问-曹润
### 金蝶-退料申请单到旺店通·采购退货单的数据集成方案 在企业业务流程中,金蝶云星空与旺店通·旗舰奇门的系统集成为供应链管理提供了高效和精确的支持。本文将分享如何通过轻易云数据集成平台,实现金蝶云星空的退料申请单无缝对接到旺店通·旗舰奇门的采购退货单,从而优化仓储和物流操作。 #### 数据获取与接口调用配置 为了实现这一目标,首先需要通过金蝶云星空的API接口 `executeBillQuery` 获取最新的退料申请单数据。在该过程中,需要处理分页和限流问题,以确保大规模数据拉取时不漏掉任何一条记录。同时,通过自定义转换逻辑,将金蝶云星空中的数据格式标准化,为后续传输做好准备。 ```SQL SELECT * FROM executeBillQuery WHERE billType='RTLA' AND status='approved' ``` 以上查询语句用于从金蝶云星空中抓取已经审批过的退料申请单,并实时监控这部分数据以确保及时性。 #### 数据写入与任务调度管理 抓取到的数据将被批量写入到旺店通·旗舰奇门,这里采用的是其API接口 `wdt.purchase.purchasereturn.createorder`。借助于轻易云的平台强大的吞吐能力以及定制化的数据映射功能,不仅实现快速写入,还很大程度上减少了由于数据结构差异带来的负面影响。 ```HTTP POST /api/wdt.purchase.purchasereturn.createorder HTTP/1.1 Content-Type: application/json { "warehouse_code": "EXTERNAL", "purchase_no": "{{billNo}}", ... } ``` #### 实时监控与日志记录 整个流程由集中监控体系保障,每一个步骤都会生成详细日志以供追踪。例如,当发生网络异常或接口调用失败,系统会自动重试并告警,以便运维团队迅速响应。这种闭环式管理极大提升了整体工作的可靠性与稳定性。 综上,通过合理利用APIs, 定制化转换逻辑,以及严格的问题报警机制,我们成功实现了一个高效、透明且稳定的数据集成解决方案,在保证数据质量前提下,也显著提升了业务处理效率。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D10.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取退料申请单的数据,并对其进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以便正确地调用金蝶云星空的API。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "name": "FBillNo", "idCheck": true, "request": [ {"field":"FID","label":"FID","type":"string","describe":"FID","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态 \n暂存:Z \n创建:A \n审核中:B\n已审核:C","value":"FDocumentStatus"}, {"field":"FBillTypeID_Fnumber","label":"单据类型","type":"string","describe":"标准退料申请:TLSQDD01 SYS\n资产退回申请单:TLSQDD02 SYS\n委外退料申请单:TLSQDD03 SYS\n现购退料申请:TLSQDD0D04 SYS\nVMI退料由请:TLSQDD05 SYS","value":"FBillTypeID.Fnumber"}, {"field":"FDate","label":"申请日期","type":"string","describe":"申请日期","value":"FDate"}, {"field":"FPURCHASEORGID_Fnumber","label":"采购组织","type":"string","describe":"采购组织","value":"FPURCHASEORGID.Fnumber"}, {"field":"FRMTYPE","label":"退料类型","type":"string","describe":"退料类型\n检验退料:A\n库存退料:B","value":"FRMTYPE"}, {"field":"FAPPORGID_Fnumber","label":"申请组织","type":"string","describe":"申请组织","value":"FAPPORGID.Fnumber"}, {"field":"FAPPDEPTID_Fnumber","label":"申请部门","type":"string","describe":"申请部门","value":"FAPPDEPTID.Fnumber"}, {"field":...} ], ... } ``` 在这个配置中,我们定义了需要从金蝶云星空获取的字段及其对应的描述和类型。这些字段包括`FID`、`FBillNo`、`FDocumentStatus`等,这些字段将用于后续的数据处理和转换。 #### 构建请求体 根据上述元数据配置,我们需要构建一个请求体来调用金蝶云星空的API。以下是一个示例请求体: ```json { "FormId": "PUR_MRAPP", "FieldKeys": ["FID", "FBillNo", "FDocumentStatus", ...], "FilterString": "FApproveDate>='2023-01-01' and FPURCHASEORGID.Fnumber = '100.01'", "Limit": 100, "StartRow": 0 } ``` 在这个请求体中: - `FormId`指定了业务对象表单Id,这里是`PUR_MRAPP`。 - `FieldKeys`列出了需要查询的字段集合。 - `FilterString`用于过滤条件,例如只查询特定日期之后的数据。 - `Limit`和`StartRow`用于分页控制。 #### 调用API并处理响应 通过轻易云数据集成平台,我们可以发送上述请求体到金蝶云星空,并接收响应。假设我们已经成功获取了响应数据,接下来我们需要对数据进行初步加工。 ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'PUR_MRAPP', 'FieldKeys': ['FID', 'FBillNo', 'FDocumentStatus', ...], 'FilterString': "FApproveDate>='2023-01-01' and FPURCHASEORGID.Fnumber = '100.01'", 'Limit': 100, 'StartRow': 0 } response = requests.post(url, headers=headers, json=payload) data = response.json() # 初步加工数据 processed_data = [] for item in data: processed_item = { '单据编号': item['FBillNo'], '单据状态': item['FDocumentStatus'], # 添加更多字段处理... } processed_data.append(processed_item) # 输出或进一步处理processed_data print(processed_data) ``` 在这个示例代码中,我们使用Python的requests库发送POST请求,并对返回的数据进行初步加工。我们提取了每个记录中的关键字段,如“单据编号”和“单据状态”,并将其存储在一个新的列表中以供后续使用。 #### 数据清洗与转换 在获取并初步加工数据后,下一步通常是进行更深入的数据清洗与转换。这可能包括: - 数据格式转换(例如日期格式)。 - 数据校验(例如检查必填字段是否为空)。 - 数据映射(例如将金蝶系统中的编码转换为目标系统中的编码)。 这些步骤可以通过轻易云平台提供的可视化工具或编写自定义脚本来实现。 通过以上步骤,我们成功地调用了金蝶云星空的接口,获取并初步加工了所需的数据。这为后续的数据转换与写入奠定了基础。在实际项目中,根据具体需求可能还需要进一步优化和调整每个步骤,以确保数据集成过程的高效性和准确性。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与旺店通·旗舰奇门API接口对接技术案例 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将深入探讨如何利用轻易云数据集成平台,将金蝶退料申请单的数据转换为旺店通·旗舰奇门API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 首先,我们需要从源平台(金蝶)获取退料申请单的数据。假设我们已经完成了数据请求与清洗阶段,接下来我们将重点放在数据的转换与写入。 #### 数据转换与写入 为了实现数据的无缝对接,我们需要将金蝶退料申请单的数据映射到旺店通·旗舰奇门API接口所需的格式。以下是元数据配置: ```json { "api": "wdt.purchase.purchasereturn.createorder", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FStockId_Fnumber,FSUPPLIERID_Fnumber", "bodyName": "details", "header": ["FBillNo", "FStockId_Fnumber", "FDESCRIPTION", "FSUPPLIERID_Fnumber"], "body": ["FMATERIALID_Fnumber", "FMRAPPQTY", "FAPPROVEPRICE_F", "FStockStatusId_FNumber", "FMaterialId_FBARCODE"] }, "request": [ { "field": "orderInfo", "label": "采购退货单单据信息", ... }, { ... } ] } ``` #### 配置解析 1. **API接口与方法**: - `api`字段指定了目标API接口`wdt.purchase.purchasereturn.createorder`。 - `method`字段指定了HTTP请求方法为`POST`。 2. **操作配置**: - `operation`字段定义了如何处理和合并数据。 - `field`字段列出了需要合并的关键字段:`FBillNo`, `FStockId_Fnumber`, `FSUPPLIERID_Fnumber`。 - `header`和`body`分别定义了表头和表体字段。 3. **请求结构**: - `request`数组定义了具体的请求结构,包括订单信息和明细信息。 #### 数据映射 根据元数据配置,我们需要将金蝶退料申请单的数据映射到旺店通·旗舰奇门API接口所需的字段。以下是具体的映射关系: - **订单信息(orderInfo)**: - `outer_no`: 映射自金蝶的`FBillNo` - `warehouse_no`: 映射自金蝶的`FStockId_Fnumber` - `provider_no`: 映射自金蝶的`FSUPPLIERID_Fnumber` - 其他字段如邮费、联系人等可以根据业务需求进行填充。 - **明细信息(detailList)**: - `spec_no`: 映射自金蝶的`FMaterialId_FBARCODE` - `num`: 映射自金蝶的`FMRAPPQTY` - 单价、折扣、税率等可以根据业务规则进行设置。 #### 实现代码示例 以下是一个简单的Python示例,展示如何将清洗后的数据通过HTTP POST请求发送到旺店通·旗舰奇门API接口: ```python import requests import json # 假设已清洗后的数据 data = { 'FBillNo': '12345', 'FStockId_Fnumber': 'WH001', 'FSUPPLIERID_Fnumber': 'SUP001', 'details': [ { 'FMATERIALID_Fnumber': 'MAT001', 'FMRAPPQTY': '10', 'FAPPROVEPRICE_F': '100.00', 'FStockStatusId_FNumber': '1', 'FMaterialId_FBARCODE': 'BAR001' } # 更多明细项... ] } # 构建请求payload payload = { 'orderInfo': { 'outer_no': data['FBillNo'], 'warehouse_no': data['FStockId_Fnumber'], 'provider_no': data['FSUPPLIERID_Fnumber'], # 更多订单信息... }, 'detailList': [ { 'spec_no': item['FMaterialId_FBARCODE'], 'num': item['FMRAPPQTY'], # 更多明细信息... } for item in data['details'] ], # 是否审核等其他参数... } # 发起POST请求 response = requests.post( url='https://api.wangdian.cn/openapi2/wdt.purchase.purchasereturn.createorder', headers={'Content-Type': 'application/json'}, data=json.dumps(payload) ) # 检查响应状态 if response.status_code == 200: print('Data successfully posted to WDT API') else: print('Failed to post data:', response.text) ``` 通过上述步骤,我们实现了从金蝶退料申请单到旺店通·旗舰奇门采购退货单的数据转换与写入。这一过程充分利用了轻易云数据集成平台提供的元数据配置,实现了不同系统间的数据无缝对接。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)