案例分享:旺店通·企业奇门数据集成到金蝶云星空
在本次技术案例中,我们聚焦于实现旺店通·企业奇门的数据高效无缝对接至金蝶云星空,具体方案命名为“退货预入库单对接直接调拨单1_映射_RK”。此方案重点解决了两大系统间的数据格式差异、分页限流处理以及异常情况的重试机制。
1. 确保数据不漏单
为了保证从旺店通·企业奇门获取的数据完整性,我们调用 wdt.stockin.pre.order.query
接口逐页提取数据。通过定时任务和可靠的抓取机制,确保每一笔退货预入库订单都能够被捕捉,并防止遗漏。
2. 数据快速写入与批量操作
利用金蝶云星空提供的 batchSave
API,实现大量数据的快速批量写入。这种方式不仅提高了效率,还减少了网络请求次数,极大提升了系统性能。
3. 处理数据格式差异
不同系统之间的数据格式往往存在不一致性。因此,在将旺店通·企业奇门中的数据转换为符合金蝶云标准之前,需要进行细致的数据映射和转换,确保信息准确无误地传递给目标系统。
4. 实现实时监控与日志记录
为了保证整个流程透明可追溯,通过实施实时监控和详细的日志记录,对每个环节进行有效跟踪。如果发生任何异常情况,系统将自动触发错误重试机制,以最大程度保障业务过程顺利进行。
简单来说,该技术方案以精准对接、稳定运行和高效处理为核心,通过充分运用API接口特性,实现了两个平台之间的数据高度集成。在随后的部分,我们将进一步深入探讨各步骤的具体实现及优化策略。
调用旺店通·企业奇门接口wdt.stockin.pre.order.query获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.pre.order.query
来获取并加工数据。
接口概述
接口wdt.stockin.pre.order.query
用于查询退货预入库单信息。该接口采用POST请求方式,支持分页查询,能够根据时间范围或预订单号进行增量数据获取。
请求参数配置
为了实现高效的数据请求,我们需要配置一系列请求参数。以下是关键参数及其配置:
- start_time: 开始时间,用于增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。在实际应用中,这个参数通常会设置为上次同步的时间点({{LAST_SYNC_TIME|datetime}}
)。 - end_time: 结束时间,同样用于增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。一般设置为当前时间({{CURRENT_TIME|datetime}}
)。 - stockin_pre_no: 入库预订单号,如果传递此参数,可以不传递时间范围。
- time_type: 时间类型,0表示最后修改时间,1表示创建时间。默认值为0,但在本案例中设置为1。
- page_size: 每页返回的数据条数,默认值为40。
- page_no: 页号,不传值时默认从第0页开始。
以下是请求参数的具体配置:
{
"api": "wdt.stockin.pre.order.query",
"effect": "QUERY",
"method": "POST",
"number": "stockin_no",
"id": "stockin_id",
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "datetime",
"describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "stockin_pre_no",
"label": "入库预订单号",
"type": "string",
"describe": "预入库单号,若传此参数可以不传时间范围"
},
{
"field": "time_type",
"label": "时间类型",
"type": int,
"describe":"0:最后修改时间,1:创建时间。默认为0",
value:"1"
}
],
...
}
分页处理
由于接口返回的数据可能较多,需要进行分页处理。分页参数包括:
- page_size: 每页返回的数据条数,可配置范围为1到50,不传递时默认为40。
- page_no: 页号,从0开始。
分页处理的配置如下:
{
...
otherRequest:[
{
field:"page_size",
label:"分页大小",
type:"int",
describe:"每页返回的数据条数,输入值范围1~50,不传本参数,输入值默认为40,使用举例单击这里",
value:"{PAGINATION_PAGE_SIZE}"
},
{
field:"page_no",
label:"页号",
type:"int",
describe:"不传值默认从0页开始",
value:"{PAGINATION_START_PAGE}"
}
]
}
数据加工与清洗
在获取到原始数据后,需要对其进行清洗和转换,以便后续的写入操作。在轻易云平台上,可以通过内置的ETL工具对数据进行处理。例如,可以过滤掉某些特定仓库的数据:
{
condition:[
[
{"field":"name","logic":"neqv2","value":"海川仓"},
{"field":"name","logic":"neqv2","value":"海川次品仓"}
],
[]
]
}
上述条件表示过滤掉名称为“海川仓”和“海川次品仓”的记录。
异常处理与补偿机制
为了确保数据集成过程的稳定性和可靠性,需要设计异常处理和补偿机制。例如,当某次请求失败时,可以通过定时任务重新发起请求:
{
omissionRemedy:{
crontab:"2 17 * * *",
takeOverRequest:[
{
id:"abd24f31-3177-3cc4-b28b-9a5dcb35c62e",
field:"start_time",
label:"开始时间",
type:"datetime",
is_required:true,
describe:"增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
value:"{{DAYS_AGO_2|datetime}}"
}
]
}
}
上述配置表示每天17点02分触发一次补偿任务,从两天前的开始时间重新发起请求。
通过以上步骤,我们可以高效地调用旺店通·企业奇门接口wdt.stockin.pre.order.query
获取并加工退货预入库单信息,为后续的数据转换与写入打下坚实基础。
利用轻易云数据集成平台实现金蝶云星空API接口的数据ETL转换
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。
API接口配置与元数据解析
在本案例中,我们使用金蝶云星空的batchSave
API接口来处理退货预入库单对接直接调拨单的数据映射和转换。以下是该接口的元数据配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{stockin_no}"},
{"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型",
"value": "WDTTHRKD",
"parser":{"name":"ConvertObjectParser","params":"FNumber"}
},
{"field": "FBizType", "label":"业务类型","type":"string","describe":"下拉列表"},
{"field":"FTransferDirect","label":"调拨方向","type":"string","describe":"下拉列表"},
{"field":"FTransferBizType","label":"调拨类型","type":"string","describe":"下拉列表"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织",
"value":"100",
"parser":{"name":"ConvertObjectParser","params":"FNumber"}
},
{"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织",
"value":"100",
"parser":{"name":"ConvertObjectParser","params":"FNumber"}
},
{"field":"FStockOutOrgId","label":"调出库存组织","type":"string","describe":"组织",
"value":"100",
"parser":{"name":"ConvertObjectParser","params":"FNumber"}
},
{"field":"FStockOrgId","label":"调入库存组织","type":"string","describe":"组织",
"value":"100",
"parser":{"name":"ConvertObjectParser","params":"FNumber"}
},
{"field": "FDate", "label": "日期", "type": "string", "describe": "日期", "value": "{{created|datetime}}"},
{"field": "FNote", "label": "备注", "type": "string", "describe": "多行文本", "value": "{remark}"},
{
"field": "FBillEntry",
"label": "明细信息",
"type": "array",
"describe": 1,
"value": "details_list",
children: [
{
field: "FMaterialId",
label: 物料编码,
type: 字符串,
value: {{details_list.goods_no}},
parser: { name: ConvertObjectParser, params: FNumber }
},
{ field: FCNKBarCode, label: 条码, type: 字符串 },
{ field: FQty, label: 调拨数量, type: 字符串, value: {{details_list.goods_count}} },
{
field: FSrcStockId,
label: 调出仓库,
type: 字符串,
value: THC,
parser: { name: ConvertObjectParser, params: FNumber }
},
{
field: FDestStockId,
label: 调入仓库,
type: 字符串,
value:{ name },
parser:{ name : ConvertObjectParser , params : FNumber},
mapping:{ direction : positive , target :641e5dfc7fd8843eb04b957c}
},
{ field:FNoteEntry,label:"明细备注",type:"字符串",value:"{refund_remark}"}
]
}
],
otherRequest:[
{ field:"FormId", label:"FormId", type:"字符串", describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder",value:"STK_TransferDirect"},
{ field:"Operation",label:"Operation",type:"字符串",describe:"111",value:"Save"},
{ field:"IsAutoSubmitAndAudit",label:"IsAutoSubmitAndAudit",type:"布尔",value:"true"},
{ field:"IsVerifyBaseDataField",label:"IsVerifyBaseDataField",type:"布尔",describe:"是否验证所有基础资料有效性,布尔类,默认false(非必录)",value:"true"},
{ field:"InterationFlags",label:"允许负库存",type:"字符串",value:"STK_InvCheckResult"},
{ field:“IgnoreInterationFlag”,label:“是否允许忽略交互”,type:“布尔”,value:“true”},
{ field:“BatchCount”,label:“服务端开启的线程数”,type:“整数”,value:2}
]
}
数据字段解析与映射
-
单据编号 (FBillNo):
字段类型
: string值
:{stockin_no}
描述
: 单据编号从源数据中的stockin_no
字段获取。
-
单据类型 (FBillTypeID):
字段类型
: string值
: 固定值"WDTTHRKD"
解析器
: 使用ConvertObjectParser
将其转换为目标系统所需格式。
-
销售组织、结算组织、调出库存组织、调入库存组织:
字段类型
: string值
: 固定值"100"
解析器
: 使用ConvertObjectParser
转换为目标系统所需格式。
-
日期 (FDate):
字段类型
: string值
: 使用模板引擎将源数据中的创建时间 (created
) 转换为日期格式。
-
备注 (FNote):
字段类型
: string值
:{remark}
从源数据中的备注字段获取。
-
明细信息 (FBillEntry):
- 包含多个子字段,如物料编码、条码、调拨数量等。
- 每个子字段都可以通过模板引擎或解析器进行转换和映射,例如:
- 物料编码 (FMaterialId) 使用
ConvertObjectParser
将源数据中的物料编码 (goods_no
) 转换为目标系统格式。 - 调出仓库 (FSrcStockId) 和 调入仓库 (FDestStockId) 同样使用解析器进行转换。
- 物料编码 (FMaterialId) 使用
特殊配置项
- FormId 和 Operation 是必须填写的金蝶表单ID和操作类型。
- IsAutoSubmitAndAudit 设置为 true,表示自动提交和审核。
- BatchCount 设置为2,表示服务端开启的线程数。
实现过程
-
请求构建: 根据元数据配置,将源平台的数据按照上述规则进行转换和映射,构建符合金蝶云星空API要求的请求报文。
-
发送请求: 使用HTTP POST方法,将构建好的请求报文发送到金蝶云星空的API接口地址。
-
处理响应: 接收并处理API返回的响应,根据响应结果判断操作是否成功,并进行相应的后续处理。
通过上述步骤,我们实现了从源平台到目标平台的数据ETL转换,并成功写入金蝶云星空系统。这一过程不仅确保了数据的一致性和准确性,也极大提升了业务处理效率。