历史版本2 :API取数-以起始行数作为参数 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

从 金蝶 k3Cloud 系统接口 进行分页报表取数时,接口中没有提供页码参数,因此不能使用API取数-按页数取数方案。

但是接口中会返回所取数据的总行数,且接口请求参数中有开始行索引参数(从哪一行开始取数)、最大返回行数限制参数。

1701658338254382.png

1701673262270473.png

1.2 接口简介

1)接口地址

http://{服务器地址}/k3cloud/Kingdee.K3.SCM.WebApi.ServicesStub.StockReportQueryService.GetReportData,Kingdee.K3.SCM.WebApi.ServicesStub.common.kdsvc

2)接口说明

根据传入条件从 金蝶云星空接口 中获取分页报表数据。

请求参数如下所示:

{
    "FORMID": "报表FORMID",
    "FSCHEMEID": "过滤方案ID",
    "QuicklyCondition": [/*对应于过滤框中的快捷页签以及选项页签中的条件*/
        {
            "FieldName": "快捷过滤字段绑定属性1",
            "FieldValue": "具体数值"
        },
        {
            "FieldName": "快捷过滤字段绑定属性2",
            "FieldValue": "具体数值"
        }
    ],
    "MoreCondition": [/*高级过滤条件,对应于过滤框中【条件】、【高级】条件*/
        {
            "Left": "左括号(,有则填,无则留空",
            "FieldName": "字段名,【条件】或【高级】页签中的字段标识",
            "Compare": "比较符,如=、>、<",
            "FieldValue": "过滤值",
            "Right": "右括号)",
            "Logic": "逻辑词,AND或者OR"
        },
        {
            "Left": "左括号(,有则填,无则留空",
            "FieldName": "字段名",
            "Compare": "比较符,如=、>、<",
            "FieldValue": "过滤值",
            "Right": "右括号)",
            "Logic": "逻辑词,AND或者OR"
        }
    ],
    "StartRow": "开始行索引,从0开始",
    "Limit": "最大返回行数,最大10000",
    "CurQueryId": "本次查询标识ID,在间隔时间比较短且进行分页查询时使用,根据查询返回的CurQueryId进行填写",
    "FieldKeys":"设置返回字段,多个字段使用英文逗号分隔"
}

1.3 实现思路

注:本文方案仅适用于新增数据。


1.4 任务展示

2. 操作步骤编辑

2.1 获取来源端数据行数

本文使用 数据服务发布的 API 接口模拟从金蝶云星空接口中取数,返回值中包含所取数据总行数。

1)新建定时任务,拖入「参数赋值」节点,从接口中取数。如下图所示:

1701659933195040.png

点击「数据预览」,会看到返回结果中包含总行数。如下图所示:

1701669448293298.png

2)将返回数据中的总页数,输出为参数 rows_source 。如下图所示:

1701661343701223.png

2.2 获取目标表现有数据行

获取目标表现有数据行,并输出为参数 rows_goal 。如下图所示:

1701669639773264.png

2.3 获取本次同步后所预期的目标数据量

由于后续我们将使用循环容器节点循环取出接口的数据,循环执行条件为:预期的目标数据量(本节获得该参数)>现实的目标数据量(后续步骤获得该参数)。

拖入参数赋值节点,将 2.1 节、2.2 节的参数值相加,获取本次同步后所预期的目标数据量,并输出为参数 totalrows(预期的目标数据量)。如下图所示:

1701670474335216.png

2.4 循环取出接口数据

2.4.1 获取目标表数据行数、本次循环的起始行号

「循环容器」节点中拖入「参数赋值」节点,获取目标表的数据行数、本次循环的起始数据行号,并依次输出为参数 totalrows_goal、rows_start。如下图所示:

1701671107279997.png

2.4.2 接口取数

根据 2.4.1 节输出的 rows_start ,从分页报表取数接口中取数。

1)拖入「数据转换」节点,进入「数据转换」节点后,拖入「API输入」节点,进行取数。如下图所示:

本节使用 数据服务发布的 API 接口模拟用户实际场景中接口取数。

1701671769243734.png

2)点击「数据预览」。如下图所示:

1701671855912489.png

3)拖入DB表输出算子,将数据输出到目标数据表,写入方式选择追加写入数据。如下图所示:

1701672042399282.png

4)点击右上角保存按钮。

2.4.3 获取目标表数据行数

拖入参数赋值节点,获取目标表数据行数(现实的目标数据量),输出参数 totalrows_goal 。如下图所示:

1701672672170795.png

2.4.4 设置循环容器

循环容器节点循环方式选择「条件循环」,执行条件设置为:totalrows(期的目标数据量,2.3节获得)>totalrows_goal(现实的目标数据量,2.4.3节获得。如下图所示:

1701672833857078.png

2.5 效果查看