使用轻易云平台进行金蝶采购退料单到旺店通的ETL转换

  • 轻易云集成顾问-曹润
### 金蝶云星空与旺店通·旗舰版数据集成案例分享 在本案例中,我们将探讨如何通过轻易云数据集成平台,实现金蝶云星空的采购退料单高效、稳定地对接到旺店通·旗舰版中的委外仓退(出库业务)。本方案不仅确保了每一笔业务数据的不漏单,而且能够处理大量数据快速写入,并具备定时可靠的数据抓取及异常处理机制。 首先,核心挑战之一是从金蝶云星空系统获取准确、详尽的采购退料单数据信息。我们采用其提供的API接口`executeBillQuery`进行调用,通过分页和限流策略,保证大批量请求下的数据完整性和服务稳定性。在执行过程中,会实时监控并记录日志,以便及时发现和解决潜在问题。 其次,在对接至旺店通·旗舰版阶段,我们利用其API接口`wms.stockother.Out.push`完成数据的高速写入。特别设计了一套兼顾效率与安全性的批量写入机制,同时结合定制化的数据映射,对两者间存在差异的数据格式进行自动转换,从而保证系统之间数据的一致性。 此外,为进一步完善对接流程,还考虑到了可能出现的各种异常情况,如网络波动或接口响应时间过长等。为此,构建了灵活且智能化的错误重试机制,以最大化地减少人为干预,提高整体运转效率。这种弹性的设计理念,同样应用于所有关键环节,包括接口调用、分页抓取以及最终的数据推送动作。 综上,通过合理规划与精密实施,本方案有效实现了金蝶云星空与旺店通·旗舰版之间采购退料单信息无缝、高效、安全地传输。接下来,将深入解析具体细节及实现步骤…… ![如何开发企业微信API接口](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取采购退料单数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FPURMRBENTRY_FEntryID", "name": "FBillNo", "idCheck": true, "request": [ {"field":"FPURMRBENTRY_FEntryID","label":"明细信息ID","type":"string","describe":"明细信息ID","value":"FPURMRBENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","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":"FStockOrgId_FNumber","label":"退料组织","type":"string","describe":"退料组织","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"退料日期","type":"string","describe":"退料日期","value":"FDate"}, {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型\n标准退料单:TLD01_SYS\n零散采购退料单:TLD02_SYS\n资产退回单:TLD03_SYS\n委外退料单:TLD04_SYS\n分销购销退料单:TLD05_SYS\nVMI退料单:TLD06_SYS\n现购退料单:TLD07_SYS\n直运退料单:TLD08_SYS","value":"FBillTypeID.FNumber"}, {"field":"FTAKEDELIVERYNO","label":"提货单号","type":"string","describe":"提货单号","value":"FTAKEDELIVERYNO"}, {"field":...} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field":...} ], ... } ``` #### 请求参数详解 在上述配置中,`request`部分定义了我们需要从金蝶云星空获取的数据字段。这些字段包括但不限于: - `FPURMRBENTRY_FEntryID`: 明细信息ID - `FID`: 实体主键 - `FBillNo`: 单据编号 - `FDocumentStatus`: 单据状态(如暂存、创建、审核中、已审核) - `FStockOrgId_FNumber`: 退料组织 - `FDate`: 退料日期 - `FBillTypeID_FNumber`: 单据类型(如标准退料单、零散采购退料单等) 此外,`otherRequest`部分定义了分页参数和过滤条件,例如: - `Limit`: 最大行数,用于控制每次查询返回的数据量。 - `StartRow`: 开始行索引,用于分页查询。 - `FilterString`: 过滤条件,用于精确筛选所需的数据。 #### 调用接口与数据处理 通过轻易云平台,我们可以使用上述配置调用金蝶云星空的`executeBillQuery`接口。以下是一个示例请求: ```json { "FormId": "PUR_MRB", "FieldKeys": ["FPURMRBENTRY_FEntryID", ..., ...], ... } ``` 在这个请求中,`FormId`指定了业务对象表单Id(例如采购退料表),而`FieldKeys`则列出了我们需要查询的字段集合。 调用成功后,返回的数据将包含多个采购退料单的信息。接下来,我们可以对这些数据进行初步加工,例如: 1. **数据清洗**: 移除无效或重复的数据。 2. **格式转换**: 将日期格式统一为标准格式,将数值字段转换为适当的小数位数。 3. **字段映射**: 根据业务需求,将字段名称映射为目标系统所需的名称。 #### 示例代码 以下是一个简单的Python示例代码,用于调用接口并处理返回的数据: ```python import requests import json url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'PUR_MRB', 'FieldKeys': 'FPURMRBENTRY_FEntryID,FID,FBillNo,...', 'FilterString': 'FApproveDate>=\'2024-08-05\' and FStockOrgId.FNumber=\'101\'', 'Limit': 100, 'StartRow': 0 } response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据处理逻辑 for entry in data: entry_id = entry['FPURMRBENTRY_FEntryID'] bill_no = entry['FBillNo'] # 更多处理逻辑... ``` 通过上述步骤,我们能够高效地从金蝶云星空获取所需的采购退料单数据,并进行初步加工,为后续的数据转换与写入做好准备。这一过程不仅提升了数据集成的效率,也确保了数据的一致性和准确性。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶采购退料单到旺店通·旗舰版的ETL转换 在数据集成生命周期中,将源平台的数据转换为目标平台所需的格式是关键步骤。本文将详细探讨如何使用轻易云数据集成平台将金蝶系统中的采购退料单数据转换为旺店通·旗舰版API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在此阶段,我们已经从金蝶系统中提取了采购退料单的数据,并进行了必要的清洗和预处理。接下来,我们将重点放在如何将这些清洗后的数据进行ETL转换,以适配旺店通·旗舰版API接口。 #### 数据转换与写入 根据提供的元数据配置,我们需要将金蝶系统中的字段映射到旺店通·旗舰版API接口所需的字段。以下是具体的元数据配置解析: ```json { "api": "wms.stockother.Out.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "order", "label": "单据头", "type": "object", "children": [ {"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"}, {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FSTOCKID_FNumber}"}, {"field": "reason", "label": "出库原因", "type": "string", "value": "采购退料出库"}, {"field": "is_check", "label": "是否审核", "type": "string", "value":"true"}, {"field":"remark","label":"备注","type":"string","value":"供应商:{FSupplierID_FNumber} {FDESCRIPTION}"}, {"field":"receiver_name","label":"收件人名称","type":"string","value":"接口传单"}, {"field":"receiver_mobile","label":"收件人电话","type":"string","value":"18888888888"}, {"field":"receiver_province","label":"省","type":"string","value":"广东省"}, {"field":"receiver_city","label":"市","type":"string","value":"广州市"}, {"field":"receiver_district","label":"区","type":"string","value":"白云区"}, {"field":"receiver_address","label":"地址","type":"string","value":"接口传单"} ] }, { "field": "order_details", "label": "单据明细", "type": "array", ... } ], ... } ``` #### 单据头字段映射 1. **外部单号 (outer_no)**: - 来源字段:`{FBillNo}` - 描述:对应金蝶系统中的单据编号。 2. **仓库编号 (warehouse_no)**: - 来源字段:`{FSTOCKID_FNumber}` - 描述:对应金蝶系统中的仓库编号。 3. **出库原因 (reason)**: - 固定值:"采购退料出库" - 描述:表示出库原因,固定为“采购退料出库”。 4. **是否审核 (is_check)**: - 固定值:"true" - 描述:表示该单据是否已审核,固定为“true”。 5. **备注 (remark)**: - 来源字段:`供应商:{FSupplierID_FNumber} {FDESCRIPTION}` - 描述:包含供应商信息和描述。 6. **收件人信息**: - 收件人名称、电话、省、市、区、地址均为固定值,用于接口传递时填写默认信息。 #### 单据明细字段映射 1. **商家编码 (spec_no)**: - 来源字段:`{FMATERIALID_FNumber}` - 描述:对应金蝶系统中的物料编码。 2. **数量 (num)**: - 来源字段:`{FRMREALQTY}` - 描述:对应金蝶系统中的实际数量。 3. **明细备注 (remark)**: - 来源字段:`{FNOTE}` - 描述:对应金蝶系统中的备注信息。 #### 数据聚合与计算 在元数据配置中,还定义了如何对数据进行聚合和计算: ```json "groupCalculate":{ ... ,"calculate":{"FRMREALQTY":"$sum"} } ``` - `FRMREALQTY` 字段需要进行求和操作,以便在转换过程中正确计算总数量。 #### 构建请求模型 根据上述配置,我们可以构建一个符合旺店通·旗舰版API接口要求的请求模型。通过轻易云平台的可视化操作界面,可以方便地进行这一过程,确保每个步骤都透明可见且易于监控。 #### 最终写入目标平台 完成上述所有步骤后,通过POST方法将构建好的请求模型发送到旺店通·旗舰版的API接口,实现数据写入。此过程确保了从源平台到目标平台的数据无缝对接,并且通过实时监控可以及时发现并解决潜在问题,提高了业务效率和透明度。 通过以上详细解析和操作步骤,成功实现了从金蝶采购退料单到旺店通·旗舰版的数据ETL转换,为业务流程提供了可靠的数据支持。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)