将销售数据转换为金蝶云星辰V2API格式并写入目标平台

  • 轻易云集成顾问-卢剑航
### 实现聚水潭·奇门数据集成到金蝶云星辰V2:销售出库单的无缝对接 通过轻易云数据集成平台,我们成功实现了聚水潭·奇门销售出库单的数据高效对接至金蝶云星辰V2。这个过程中,我们利用API接口和定制化映射,确保了数据在整个传输过程中的准确和及时。 #### 可靠的数据抓取与接口调用 首先,为确保没有遗漏任何待处理的订单,我们调用了聚水潭·奇门提供的`jushuitan.saleout.list.query`接口,该接口支持分页查询,用于抓取最新生成和更新的销售出库单。在使用该API时,需要特别注意其限流机制,通过适当设置请求频率,避免触发限制条件导致丢单的问题。 为进一步保证数据抓取的稳定性,我们采用了定时调度策略,每隔固定时间周期自动执行一次数据拉取任务,并结合日志记录实时监控每次拉取操作。如遇异常,还能根据日志信息迅速定位问题并进行重试,提升整体系统可靠性。 #### 数据格式差异与批量写入 获取到的原始数据需要进行必要的转换,以符合金蝶云星辰V2 API `/jdy/v2/scm/sal_out_bound` 的要求。在这一环节中,通过自定义规则,对字段名称、结构层级等方面进行精细化映射,解决两者间格式不一致的问题。例如,将聚水潭中的客户编号对应到金蝶云系统中的买方代码字段,这是一个典型的数据转换案例。 经过清洗和转换后的数据会被批量写入到金蝶云星辰V2。这一步骤不仅提高了传输效率,还减少了网络延迟影响。我们采取分段式提交的方法,将大量待写入的数据划分成若干小块,使之更有效地通过网络通道,而不是一次性传输全部内容,从而降低失败风险。 #### 实时监控与异常处理 在整个集成过程中,每个关键步骤都会实时记录详细日志,包括成功上传的数据条目数以及可能出现的错误信息。一旦发现有某些记录未成功插入目标系统,会立即触发错误重试机制,通过再次尝试或人工介入修正,实现精准化故障恢复。此外,这些日志还可用于后续分析与优化,为将来的改进提供宝贵参考依据。 要点总结: 1. **可靠抓取**:定时调度+限流处理。 2. **精准映射**:格式差异自定义调整。 3. **效能保障**:批量提交+错误重启。 下一步将深入展示具体配置流程及参数设定细节,以指导类似 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口获取并加工数据 在数据集成生命周期的第一步,我们需要调用聚水潭·奇门接口 `jushuitan.saleout.list.query` 来获取销售出库单数据,并进行必要的加工处理。以下将详细介绍如何配置和使用该接口。 #### 接口概述 `jushuitan.saleout.list.query` 是一个用于查询销售出库单的API接口。该接口采用POST请求方式,主要参数包括页数、每页行数、修改时间范围以及单据状态等。通过这些参数,我们可以灵活地获取所需的数据。 #### 请求参数配置 根据元数据配置,我们需要设置以下请求参数: - `page_index`: 页数,从第一页开始,默认值为1。 - `page_size`: 每页行数,默认25,最大25。在这里我们设置为30。 - `start_time`: 修改开始时间,格式为 `{{LAST_SYNC_TIME|datetime}}`,表示上次同步时间。 - `end_time`: 修改结束时间,格式为 `{{CURRENT_TIME|datetime}}`,表示当前时间。 - `status`: 单据状态,这里我们设置为 "Confirmed" 表示已出库的单据。 - `date_type`: 固定值2。 以下是请求参数的JSON配置示例: ```json { "page_index": "1", "page_size": "30", "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "Confirmed", "date_type": "2" } ``` #### 数据过滤与清洗 在获取数据后,我们需要对数据进行过滤和清洗,以确保数据质量。根据元数据配置中的条件部分,我们需要排除标签中包含“导入发货”的记录。具体条件如下: ```json { "field": "labels", "logic": "notlike", "value": "导入发货" } ``` 这意味着我们需要在处理过程中检查每条记录的标签字段,如果包含“导入发货”,则将其排除。 #### 自动填充响应与接管机制 为了确保数据的完整性和连续性,我们启用了自动填充响应功能,并配置了接管机制。在某些情况下(例如定时任务失败),接管机制会自动填充缺失的数据。具体配置如下: ```json { "crontab": "0 0 * * *", "takeOverRequest": [ { "field": "start_time", "value": "_function FROM_UNIXTIME( unix_timestamp() -604800 , '%Y-%m-%d %H:%i:%s' )", "type": "string" } ] } ``` 上述配置表示每隔一周(604800秒)重新计算一次起始时间,以确保不会遗漏任何数据。 #### 数据转换与写入 在完成数据请求与清洗后,我们需要将数据转换并写入目标系统。在这个案例中,我们将聚水潭销售出库单的数据转换为星辰销售出库单的数据格式。这一步骤涉及字段映射和格式转换,需要根据目标系统的要求进行相应处理。 #### 实际操作步骤 1. **发送请求**:使用POST方法向 `jushuitan.saleout.list.query` 接口发送请求,携带上述配置的参数。 2. **接收响应**:解析接口返回的数据,根据条件过滤不符合要求的记录。 3. **数据清洗**:对剩余的数据进行必要的清洗和格式转换。 4. **写入目标系统**:将处理后的数据写入星辰销售出库单系统。 通过以上步骤,我们实现了从聚水潭·奇门接口获取销售出库单并加工处理的数据集成过程。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 将源平台数据转换为金蝶云星辰V2API格式并写入目标平台 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星辰V2API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现过程。 #### API接口元数据配置解析 根据提供的元数据配置,我们需要将聚水潭销售出库单的数据转换为金蝶云星辰V2API接口所需的格式。该接口的基本信息如下: - **API路径**: `/jdy/v2/scm/sal_out_bound` - **HTTP方法**: `POST` - **操作类型**: `EXECUTE` #### 数据字段映射与转换 我们需要将源平台的数据字段映射到目标平台所需的数据字段,并进行必要的转换。以下是主要字段的映射和转换逻辑: 1. **出库日期(bill_date)** - 源字段:`io_date` - 目标字段:`bill_date` - 描述:出库日期,格式为`YYYY-MM-DD` 2. **单据编号(bill_no)** - 源字段:`o_id` - 目标字段:`bill_no` - 描述:单据ID,修改单据时必填 3. **客户信息(customer_id)** - 源字段:`shop_id` - 目标字段:`customer_id` - 描述:通过查找集合获取客户信息 ```sql _findCollection find id from 6f83c928-6667-36fa-a154-9bd0ab2b9d4b where number={shop_id} ``` 4. **整单折扣额(bill_dis_amount)** - 源字段:`order_type`, `free_amount` - 目标字段:`bill_dis_amount` - 描述:根据订单类型进行条件判断 ```sql _function CASE '{order_type}' WHEN '换货订单' THEN '0.0' WHEN '补发订单' THEN '0' ELSE '{free_amount}' END ``` 5. **操作类型(operation_key)** - 固定值:`audit` 6. **单据备注(remark)** - 源字段:`remark` - 目标字段:`remark` 7. **商品分录(material_entity)** 商品分录是一个数组,每个商品项包含以下子字段: a. **商品编号(material_number)** - 源字段:`items.sku_id` - 目标字段:`material_number` b. **仓库编号(stock_id)** - 源字段:`wms_co_id` - 目标字段:`stock_id` ```sql _findCollection find id from 07c0fe43-86f2-30da-9fe5-d7459ecb961d where number={wms_co_id}-1 ``` c. **数量(qty)** - 源字段:`items.qty` - 目标字段:`qty` d. **单位(unit_id)** - 源字段:`items.sku_id` - 目标字段:`unit_id` ```sql _findCollection find base_unit_id from b4a428a0-beb9-3d69-b96c-97c34a217550 where number={{items.sku_id}} ``` e. **含税单价(tax_price)** - 源字段:`order_type`, `items.sale_price` - 目标字段:`tax_price` ```sql _function CASE '{order_type}' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '{{items.sale_price}}' END ``` f. **是否赠品(is_free)** - 源字段:`items.is_gift` - 目标字段:`is_free` ```sql _function CASE '{{items.is_gift}}' WHEN '1' THEN 'true' ELSE 'false' END ``` g. **金额(amount)** - 源字段:`items.sale_amount` - 目标字段:`amount` 8. **费用明细分录(cus_bear_fee_entry)** a. **客户承担金额(cus_bear_amount)** - 源字段: `order_type`, `freight` ```sql _function CASE '{order_type}' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '{freight}' END ``` b. **备注(comment)** 固定值: `客户承担运费` c. **收入名称ID(income_name_id)** 固定值: `1` #### 实际请求示例 基于上述映射和转换逻辑,构建实际请求示例如下: ```json { "bill_date": "2023-10-01", "bill_no": "O123456789", "customer_id": "_findCollection find id from 6f83c928-6667-36fa-a154-9bd0ab2b9d4b where number=SHOP123", "bill_dis_amount": "_function CASE '普通订单' WHEN '换货订单' THEN '0.0' WHEN '补发订单' THEN '0' ELSE '100' END", "operation_key": "audit", "remark": "这是一个测试备注", "material_entity": [ { "material_number": "SKU12345", "stock_id": "_findCollection find id from 07c0fe43-86f2-30da-9fe5-d7459ecb961d where number=WMS001", "qty": "10", "unit_id": "_findCollection find base_unit_id from b4a428a0-beb9-3d69-b96c-97c34a217550 where number=SKU12345", "tax_price": "_function CASE '普通订单' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '50' END", "is_free": "_function CASE '1' WHEN '1' THEN 'true' ELSE 'false' END", "amount": "500" } ], "cus_bear_fee_entry": [ { "cus_bear_amount": "_function CASE '普通订单' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '20' END", "comment": "客户承担运费", "income_name_id": "1" } ] } ``` 通过上述配置和示例,我们可以将聚水潭销售出库单的数据成功转换并写入金蝶云星辰V2API接口,实现系统间的数据无缝对接。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)