从旺店通到金蝶云星空的集成方案详解:其他入库单

  • 轻易云集成顾问-彭亮
### 旺店通·旗舰奇门数据集成到金蝶云星空的实现:其他入库单案例分享 在系统集成中,经常会遇到不同业务系统间的数据同步需求。本案例聚焦于如何通过轻易云平台,将旺店通·旗舰奇门系统中的“其他入库单”数据高效、安全地集成到金蝶云星空中。具体方案命名为“旺店通-其他入库单-->金蝶-其他入库单”。 首先,我们需要调用`wdt.wms.stockin.other.querywithdetail`接口从旺店通·旗舰奇门获取详细的“其他入库单”数据。在高并发环境下,处理分页和限流问题是关键技术要点,通过优化API调用策略,可以确保大批量数据能够快速且可靠地抓取。 接下来,为了适应两套系统之间的数据格式差异,需要自定义转换逻辑,这不仅包括字段映射,还涵盖复杂的数据规范化处理。使用轻易云的平台,可视化设计工具帮助我们直观、便捷地完成这些工作,同时支持调试和预览功能,确保转换后的数据符合预期。 将整理好的数据写入到金蝶云星空则通过`batchSave` API 实现。为了保障高速、大吞吐量的数据写操作,我们需要配置合理的批处理参数,并结合重试机制来提高成功率。另外,在实际操作过程中提供实时监控与告警服务,即时追踪各个任务的执行状态,从而有效避免潜在的问题,如漏单或异常情况发生。 最终,通过这一整合过程,不仅提升了业务透明度和效率,也使得企业信息流转更加顺畅,实现了资源的最优配置与利用。这一完整解决方案为今后类似项目提供了可借鉴的重要参考。 以上是该技术实现案例的大致框架内容,以下文章部分将详述每一步骤及其细节,以便对该实施方法进行深层次解读。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口获取并加工数据 在数据集成生命周期的第一步中,调用源系统的API接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口 `wdt.wms.stockin.other.querywithdetail` 获取并加工数据。 #### 接口调用配置 首先,我们需要配置API接口的元数据。根据提供的元数据配置,我们可以看到该接口采用POST方法,主要参数包括分页参数和业务参数。 ```json { "api": "wdt.wms.stockin.other.querywithdetail", "method": "POST", "number": "order_no", "id": "stockin_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "string", "value": "50", "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "string", "value": "1", "parent": "pager" } ] }, { "field": "params", ... } ], ... } ``` #### 分页参数设置 分页参数用于控制每次请求的数据量和页码。这里我们设置了每页50条记录,初始页码为1。 ```json { ... { "field": "pager", ... { ... { "field": "page_size", ... { ... } }, { ... { ... } } } }, ... } ``` #### 业务参数设置 业务参数部分包含了时间范围、状态、仓库编号等信息,这些参数用于过滤和查询特定条件下的数据。 ```json { ... { ... { ... { ... { ... }, { ... { ... { ... } }, { ... { ... } }, { ... { ... } }, { ... { ... } }, { ... { ... } }, { ... { ... } } } } } }, ... } ``` #### 条件过滤 为了确保获取的数据符合业务需求,我们需要设置条件过滤。例如,排除备注包含“不抓到”的记录,以及原因字段不在“无,工厂生产入库”中的记录。 ```json { ..., condition_bk: [ [ { field: 'detail_list.remark', logic: 'notlike', value: '不抓到' } ] ], condition: [ [ { field: 'remark', logic: 'notlike', value: '不抓到' }, { logic: 'notin', value: '无,工厂生产入库', field: 'reason' } ] ], } ``` #### 自动填充响应 在处理API响应时,启用自动填充功能可以简化数据处理过程,使得返回的数据能够直接映射到目标系统中。 ```json { ..., autoFillResponse: true } ``` #### 数据请求与清洗 通过上述配置,我们可以发起对 `wdt.wms.stockin.other.querywithdetail` 接口的请求,并获取原始数据。接下来,需要对这些数据进行清洗和转换,以便后续写入目标系统。在清洗过程中,可以利用条件过滤来剔除不符合要求的数据,并根据业务逻辑进行必要的字段映射和转换。 例如,可以使用以下代码片段来实现数据请求与清洗: ```python import requests import json url = 'https://api.example.com/wdt.wms.stockin.other.querywithdetail' headers = {'Content-Type': 'application/json'} payload = json.dumps({ # 填充请求体内容 }) response = requests.post(url, headers=headers, data=payload) data = response.json() # 清洗和转换数据 cleaned_data = [] for record in data['records']: if '不抓到' not in record['remark'] and record['reason'] not in ['无', '工厂生产入库']: cleaned_data.append(record) # 后续处理... ``` 通过以上步骤,我们成功地调用了旺店通·旗舰奇门接口获取并加工了所需的数据,为后续的数据转换与写入奠定了基础。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image) ### 数据集成技术案例:将源平台数据转换并写入金蝶云星空 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程至关重要。本文将重点探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。 #### API 接口配置 在本案例中,我们需要将旺店通的“其他入库单”数据转换并写入金蝶云星空。金蝶云星空提供了一个名为`batchSave`的API接口,用于批量保存数据。该接口通过POST方法提交请求,并支持多种字段类型和复杂的数据结构。 以下是元数据配置的关键部分: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{reason}"}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100.01"}, {"field":"FStockDirect","label":"库存方向","type":"string","value":"GENERAL"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{stockin_time|dateTime}}"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"货主","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100.01"}, {"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000008"}, {"field": "FNOTE", "label": "备注", "type": "string", "describe": "多行文本", "value": "{remark}"}, { "field": "FEntity", "label": "明细信息", "type": "array", ... } ], ... } ``` #### 数据转换与映射 1. **单据编号(FBillNo)**: - 从源数据中的`order_no`字段获取,并直接映射到目标字段`FBillNo`。 2. **单据类型(FBillTypeID)**: - 使用`ConvertObjectParser`解析器,将源数据中的`reason`字段转换为目标系统可识别的编码格式。 3. **库存组织(FStockOrgId)**: - 固定值设置为“100.01”,并通过解析器转换为目标系统的编码格式。 4. **日期(FDate)**: - 使用模板语言将源数据中的`stockin_time`字段格式化为目标系统所需的日期格式。 5. **明细信息(FEntity)**: - 明细信息是一个数组,包含多个子字段,如物料编码、收货仓库、实收数量等。 - 每个子字段都需要从源数据中提取相应的信息。例如,物料编码从`detail_list.goods_no`获取,实收数量从`detail_list.goods_count`获取。 - 使用解析器将这些值转换为目标系统可识别的格式。 #### 请求示例 以下是一个完整的请求示例: ```json { "FormId": "STK_MISCELLANEOUS", "IsVerifyBaseDataField": true, "Operation": { ... }, ... } ``` #### 提交与审核 为了确保数据在写入后能够立即生效,我们可以设置自动提交和审核: ```json { ... "IsAutoSubmitAndAudit": true, ... } ``` #### 实践中的挑战与解决方案 1. **数据格式不一致**: - 源平台和目标平台的数据格式可能不一致,需要通过解析器进行转换。 2. **复杂的数据结构**: - 明细信息通常包含嵌套数组,需要特别注意每个子字段的映射和转换。 3. **实时性要求**: - 数据集成过程中需要确保实时性,这要求我们在配置时尽量减少延迟,并使用异步处理机制。 通过以上步骤,我们成功地将旺店通“其他入库单”数据转换并写入到金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提高了业务流程的效率,也确保了数据的一致性和准确性。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)