使用轻易云实现管易发货单到金蝶云星空的数据写入

  • 轻易云集成顾问-林峰
### 管易发货单=>金蝶销售出库【网易互客】实现方案 在管易云·奇门的数据集成到金蝶云星空的过程中,确保数据准确、高效地传递是至关重要的一环。本文将重点分享如何使用轻易云数据集成平台完成这一任务,通过具体技术案例详细解析API接口调用、数据转换及异常处理机制。 #### 如何调用管易云·奇门接口 `gy.erp.trade.deliverys.get` 首先,需要对接管易云·奇门的`gy.erp.trade.deliverys.get` API接口,该接口主要用于获取发货单据。具体步骤如下: 1. **认证与授权**:在进行API请求之前,需要获取相应的API Key和Secret,用于身份验证。 2. **构建请求参数**:根据业务需求设置必要的查询参数,例如订单状态、起止时间等,确保精准抓取所需数据。 3. **处理分页和限流问题**:由于大批量数据可能会超出单次请求限制,因此需要设计分页逻辑,并结合限流策略以避免触发系统防护机制。 ```python import requests def fetch_deliveries(api_key, secret, start_date, end_date): url = "https://api.guanyiyun.com/rest/erp_trade_deliverys_get" params = { "appkey": api_key, "secret": secret, "start_time": start_date, "end_time": end_date, # 其他必要参数 } response = requests.get(url, params=params) return response.json() ``` #### 数据格式差异与批量写入金蝶云星空 成功获取到管易云的数据后,下一步就是将其写入到金蝶云星空。而这往往涉及两者之间的数据格式差异,这就需要我们在中间做相应的转换映射: 1. **定义字段映射关系**:针对两个系统中的不同字段名称及类型,需要预先定义好映射规则。例如,将“delivery_id” 对应为“outbound_id”,并处理相关数值或字符串类型转化。 2. **批量装载准备**:为了提升性能,我们使用了批量提交方式,即通过一次性提交多条记录来减少网络开销。 ```python def transform_data(guanyi_data): transformed_data = [] for record in guanyi_data: new_record = { 'outbound_id': record['delivery_id'], 'product_code': record['item_code'], # 其他字段映射... } transformed_data.append(new_record) return transformed_data def batch_save_to_kingdee(data): url = "https://api.kingdee.com/batchSave" ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D23.png~tplv-syqr462i7n-qeasy.image) ### 调用管易云·奇门接口gy.erp.trade.deliverys.get获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用管易云·奇门接口`gy.erp.trade.deliverys.get`来获取并加工发货单数据。 #### 接口调用配置 首先,我们需要配置API调用的元数据。以下是具体的元数据配置: ```json { "api": "gy.erp.trade.deliverys.get", "method": "POST", "number": "code", "id": "code", "pagination": { "pageSize": 100 }, "omissionRemedy": { "crontab": "*\/20 * * * *", "takeOverRequest": [ { "field": "start_date", "label": "开始时间", "type": "string", "value": "{{HOURE_AGO_1|datetime}}" } ] }, "idCheck": true, "request": [ { "field": "start_delivery_date", "label": "开始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_delivery_date", "label": "结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "delivery", "label": "发货状态", "type": "string", "describe":"默认0 0:创建时间 1:拍单时间2:付款时间3:修改时间", "value":"1" }, { ... ``` #### 请求参数详解 1. **start_delivery_date** 和 **end_delivery_date**:这两个字段用于定义查询的时间范围。`start_delivery_date`取值为上次同步时间,`end_delivery_date`取值为当前时间。 2. **delivery**:表示发货状态,默认为1,即按拍单时间查询。 3. **order_state**:订单类型,默认为0,即查询全部订单。 4. **warehouse_code** 和 **shop_code**:分别表示仓库代码和店铺代码,其中店铺代码固定为"HUKE163"。 5. **vip_name**、**platform_code**、**receiver_mobile**、**code**:这些字段用于进一步过滤查询结果,例如按会员名称、平台单号、收件手机和单据编号等条件进行筛选。 6. **has_cancel_data**:是否附带返回已取消与已删除的订单数据,默认为false。 #### 分页处理 为了处理大批量的数据,我们采用分页机制。配置中的 `pagination` 字段定义了每页的数据量(pageSize),默认设置为100条记录。同时,通过 `otherRequest` 字段中的 `page_no` 和 `page_size` 来控制分页请求。 ```json { ... ,"otherRequest":[ {"field":"page_no","label":"页号","type":"string","describe":"默认1","value":"{PAGINATION_START_PAGE}"}, {"field":"page_size","label":"分页大小","type":"string","describe":"默认为10","value":"10"} ] } ``` #### 数据清洗与异常处理 在获取到原始数据后,需要对其进行清洗和加工。例如,通过 `condition_bk` 字段过滤掉包含特定备注信息的订单: ```json { ... ,"condition_bk":[ [{"field":"buyer_memo","logic":"notlike","value":"系统对接-礼品单"}] ] } ``` 此外,为了确保数据完整性,我们还配置了遗漏补救机制(omissionRemedy)。该机制通过定时任务(crontab)每20分钟执行一次,并使用 `takeOverRequest` 字段指定的开始时间参数来补救可能遗漏的数据: ```json { ... ,"omissionRemedy":{ ... ,"takeOverRequest":[ {"field":"start_date","label":"开始时间","type":"string","value":"{{HOURE_AGO_1|datetime}}"} ] } } ``` #### 数据转换与写入 在完成数据请求与清洗后,下一步是将清洗后的数据转换并写入目标系统。在本案例中,我们将发货单数据写入金蝶销售出库模块。这一步通常涉及字段映射和格式转换,以确保目标系统能够正确解析和存储数据。 通过上述步骤,我们实现了从管易云·奇门接口获取发货单数据,并对其进行清洗和加工,为后续的数据转换与写入奠定了基础。这一过程充分利用了轻易云数据集成平台的强大功能,实现了高效、透明的数据集成。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将管易发货单转换并写入金蝶云星空API接口 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细介绍如何使用轻易云数据集成平台,将管易发货单的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 1. 数据请求与清洗 在进行ETL转换之前,首先需要从源平台(管易)获取发货单数据,并进行必要的清洗和预处理。这一步骤确保了数据的完整性和准确性,为后续的转换和写入提供了可靠的基础。 #### 2. 数据转换与写入 在轻易云数据集成平台上,配置元数据是实现数据转换与写入的核心。以下是详细的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSCKD01_SYS" }, { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{platform_code}" }, { ... } ], ... } ``` #### 3. 配置关键字段解析 在上述配置中,几个关键字段需要特别注意: - `FBillTypeID`: 单据类型,通过`ConvertObjectParser`解析为金蝶系统内部编码。 - `FBillNo`: 单据编号,直接从源平台获取。 - `FDate`: 日期,同样从源平台获取,并格式化为金蝶系统接受的日期格式。 - `FSaleOrgId`, `FCustomerID`, `FStockOrgId`: 这些字段均通过`ConvertObjectParser`解析为金蝶系统内部编码。 #### 4. 子表和明细信息配置 子表和明细信息是复杂的数据结构,需要特别处理: ```json { ... { "field": "SubHeadEntity", ... { ... { ... { ... } } } }, { ... { ... { ... { ... { ... { ... { ... { ... } } } } } } } }, ... } ``` - `SubHeadEntity`: 财务信息,包括结算组织和结算币别等字段。 - `FEntity`: 明细信息,包括物料编码、实发数量、含税单价、是否赠品等字段。 #### 5. 特殊逻辑处理 某些字段需要根据特定逻辑进行处理,例如: ```json { ... { ... { ... "_function case '{{details.price}}' when 0 then 'true' else 'false' end" } }, ... } ``` 此处根据价格判断是否为赠品,如果价格为0,则标记为赠品。 #### 6. 写入目标平台 最后,通过API接口将处理好的数据批量写入金蝶云星空: ```json { ..., {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"}, {"field":"Operation","label":"执行的操作","type":"string","value":"Save"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}, {"field":"SubSystemId","label":"系统模块","type":"string","describe":"默认仓库模块","value":"21"}, {"field":"InterationFlags","label":"是否忽略负库存","type":"string","value":"STK_InvCheckResult"} } ``` 通过以上步骤,我们成功实现了将管易发货单的数据转换并写入到金蝶云星空系统中。整个过程充分利用了轻易云数据集成平台提供的强大功能,实现了高效、准确的数据集成。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T7.png~tplv-syqr462i7n-qeasy.image)