使用轻易云平台将星辰采购入库单转换并导入聚水潭系统

  • 轻易云集成顾问-胡秀丛
### 从金蝶云星辰V2到聚水潭的采购入库单数据集成技术实现 在这一系统对接案例中,实现了从金蝶云星辰V2获取采购入库单数据并高效地写入至聚水潭系统。本文将详细解析如何利用金蝶云星辰V2提供的API接口(/jdy/v2/scm/pur_inbound)抓取数据,并通过轻易云平台进行处理后,调用聚水潭的API接口(/open/jushuitan/purchasein/upload)完成数据上传。 首先,我们面临的一大关键技术点是确保集成过程中的数据不漏单。为此,我们采用定时可靠的数据抓取机制,通过配置定期任务定时获取最新的采购入库单信息。此外,为解决接口分页和限流的问题,我们设计了一套灵活的分页抓取策略,能够自适应调整每次请求的数据条数和间隔时间,从而避免超出API使用限制。 其次,在大量采购入库单数据需要快速写入到聚水潭时,高效率的数据处理成为重中之重。在这里,批量操作起到了关键作用。我们将从金蝶云星辰V2获取到的大量订单先进行清洗和格式转换,再批量推送至聚水潭。这不仅提升了传输速度,还确保了两端系统之间的数据一致性。 最后,关于对接异常处理与错误重试机制也是不可忽视的一环。当出现网络问题或API调用失败时,我们配置了智能监控与日志记录功能,不仅实时捕捉异常事件,还能自动触发错误重试逻辑,从而保证集成工作的稳定性和连续性。同时,对不同类型的异常做出相应级别的告警,以便运维人员及时排查故障。 通过以上几个核心步骤,本方案不仅成功实现了从金蝶云星辰V2到聚水潭采购入库单的数据无缝对接,更在实际运行过程中展现出了极高的可靠性与效率。以下部分内容将进一步剖析具体实施方案与代码实例细节... ![用友BIP接口开发配置](https://pic.qeasy.cloud/D21.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口/jdy/v2/scm/pur_inbound获取并加工数据的技术案例 在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星辰V2接口`/jdy/v2/scm/pur_inbound`,获取采购入库单数据并进行初步加工。 #### 接口基本信息 接口路径:`/jdy/v2/scm/pur_inbound` 请求方法:GET 主要功能:查询采购入库单信息 #### 请求参数配置 根据元数据配置,我们需要设置以下请求参数: - `enable`: 可用状态,1表示可用。 - `search`: 模糊搜索字段,可以根据名称、编码、规格、条形码进行搜索。 - `parent_id`: 商品类别ID。 - `isdataperm`: 数据权限校验,默认值为false。 - `create_start_time`: 创建开始时间戳,-1表示不过滤。 - `create_end_time`: 创建结束时间戳,-1表示不过滤。 - `modify_start_time`: 修改开始时间戳,使用函数`_function {LAST_SYNC_TIME}*1000`自动填充。 - `modify_end_time`: 修改结束时间戳,使用函数`_function {CURRENT_TIME}*1000`自动填充。 - `page`: 当前页,默认值为1。 - `page_size`: 每页显示条数,默认值为10,最大值为100。 - `bill_status`: 单据状态,默认值为C。 示例请求参数配置如下: ```json { "enable": "1", "search": "", "parent_id": "", "isdataperm": "false", "create_start_time": "-1", "create_end_time": "-1", "modify_start_time": "_function {LAST_SYNC_TIME}*1000", "modify_end_time": "_function {CURRENT_TIME}*1000", "page": "1", "page_size": "10", "bill_status": "C" } ``` #### 数据过滤条件 为了确保传输的数据符合业务需求,我们可以设置过滤条件。例如,不传输备注字段包含“不传输”的记录。过滤条件配置如下: ```json { "field": "remark", "logic": "neqv2", "value": "不传输" } ``` #### 调用接口获取数据 通过上述配置,我们可以调用金蝶云星辰V2接口获取采购入库单数据。以下是一个示例API调用代码片段: ```python import requests url = 'https://api.kingdee.com/jdy/v2/scm/pur_inbound' params = { 'enable': '1', 'search': '', 'parent_id': '', 'isdataperm': 'false', 'create_start_time': '-1', 'create_end_time': '-1', 'modify_start_time': int(time.time()) - 86400, # 假设上次同步时间为24小时前 'modify_end_time': int(time.time()), 'page': '1', 'page_size': '10', 'bill_status': 'C' } response = requests.get(url, params=params) data = response.json() # 数据过滤 filtered_data = [item for item in data if item['remark'] != '不传输'] ``` #### 数据加工与处理 在获取到原始数据后,我们需要对其进行初步加工,以便后续的数据转换与写入操作。常见的数据加工操作包括: 1. **字段映射**:将源系统的字段名映射到目标系统的字段名。例如,将`bill_no`映射为目标系统中的订单编号字段。 2. **数据清洗**:去除无效或重复的数据,例如删除空值或格式错误的记录。 3. **格式转换**:将日期、金额等字段转换为目标系统所需的格式。 示例代码如下: ```python def process_data(raw_data): processed_data = [] for item in raw_data: processed_item = { 'order_number': item['bill_no'], # 添加其他必要的字段映射和转换 } processed_data.append(processed_item) return processed_data processed_data = process_data(filtered_data) ``` 通过上述步骤,我们完成了从金蝶云星辰V2接口获取采购入库单数据并进行初步加工的全过程。这些处理后的数据将作为后续生命周期阶段的数据输入,实现最终的数据集成目标。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将星辰采购入库单转换并写入聚水潭API接口 在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将星辰系统的采购入库单数据转换为聚水潭API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 以下是我们需要配置的元数据,以便将星辰系统的采购入库单数据正确映射到聚水潭API接口: ```json { "api": "/open/jushuitan/purchasein/upload", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "is_confirm", "label": "是否自动确认单据", "type": "string", "value": "false"}, {"field": "excute_confirming", "label": "是否自动审核", "type": "string", "value": "false"}, {"field": "wms_co_id", "label": "分仓编号", "type": "int", "value": "{{material_entity.stock_number}}"}, {"field": "supplier_id", "label": "供应商id", "type": "int", "value": "{supplier_number}"}, {"field": "external_id", "label": "外部采购单号", "type": "string", "describe":"单据上传成功之后对应页面外部单号","value":"{bill_no}"}, {"field":"remark","label":"备注","type":"string","value":"{remark}"}, { "field":"items","label":"明细列表","type":"array","value":"material_entity", "children":[ {"field":"sku_id","label":"商品编码","type":"string","value":"{{material_entity.material_number}}"}, {"field":"qty","label":"数量","type":"int","value":"{{material_entity.qty}}"}, {"field":"price","label":"单价","type":"float","value":"{{material_entity.tax_price}}"}, {"field":"remark","label":"明细备注","type":"string","value":"{{material_entity.comment}}"} ] } ], "buildModel": true } ``` #### 数据请求与清洗 在ETL流程中,首先要从源系统(星辰)请求数据并进行清洗。清洗后的数据需要符合目标系统(聚水潭)的格式要求。以下是一个示例: ```json { "_id" : ObjectId("5f6a9e3e2f8b9c0017d7a1c1"), "_class" : “com.xingchen.purchase.PurchaseOrder”, “bill_no” : “PO20200923”, “supplier_number” : “1001”, “remark” : “紧急订单”, “material_entity” : [ { “stock_number” : “2001”, “material_number” : “A1001”, “qty” : 100, “tax_price” : 10.5, “comment” : “优先处理” }, { “stock_number” : “2001”, “material_number” : “A1002”, “qty” : 200, “tax_price” : 20.0, “comment” : null } ] } ``` #### 数据转换与写入 在完成数据清洗后,我们需要按照聚水潭API接口的要求进行转换,并通过POST方法将其写入目标平台。以下是具体的转换步骤: 1. **字段映射**:将星辰系统中的字段映射到聚水潭API所需的字段。例如,将`bill_no`映射到`external_id`,将`supplier_number`映射到`supplier_id`等。 2. **数组处理**:处理包含多个物料明细的数组字段`material_entity`,并将其转换为聚水潭API所需的格式。 3. **构建请求体**:根据元数据配置构建最终的请求体。 以下是构建后的请求体示例: ```json { "is_confirm" : false, "excute_confirming" : false, "wms_co_id" : 2001, "supplier_id" : 1001, "external_id" : PO20200923, "remark" :"紧急订单", "items":[ { "sku_id" :"A1001", "qty" :100, "price" :10.5, "remark" :"优先处理" }, { "sku_id" :"A1002", "qty" :200, "price" :20.0 } ] } ``` #### API调用 最后,通过HTTP POST方法将上述构建好的请求体发送到聚水潭API接口: ```http POST /open/jushuitan/purchasein/upload HTTP/1.1 Host: api.jushuitan.com Content-Type: application/json { ... // 请求体内容 } ``` 通过这种方式,我们实现了从星辰系统到聚水潭系统的数据无缝对接,确保了采购入库单信息的准确传递和及时处理。这一过程极大地提高了业务流程的自动化程度和效率。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/T4.png~tplv-syqr462i7n-qeasy.image)