fix: 修复API分页抽取数据丢失

This commit is contained in:
taojinlong 2024-12-23 16:57:39 +08:00 committed by xuwei-fit2cloud
parent c5f71956dd
commit 8a8366f16b
7 changed files with 45 additions and 17 deletions

View File

@ -85,10 +85,11 @@ public class ApiUtils {
result.put("fieldList", fieldList);
if (apiDefinition.getRequest().getPage().getPageType().equalsIgnoreCase("pageNumber")) {
int pageCount = JsonPath.read(response, apiDefinition.getRequest().getPage().getResponseData().get(0).getResolutionPath());
int beginPage = Integer.valueOf(apiDefinition.getRequest().getPage().getRequestData().get(0).getParameterDefaultValue());
if (apiDefinition.getRequest().getPage().getResponseData().get(0).getResolutionPathType().equalsIgnoreCase("totalNumber")) {
pageCount = pageCount / Integer.valueOf(apiDefinition.getRequest().getPage().getRequestData().get(1).getParameterDefaultValue());
pageCount = pageCount / Integer.valueOf(apiDefinition.getRequest().getPage().getRequestData().get(1).getParameterDefaultValue()) + 1;
}
for (int i = 1; i < pageCount + 1; i++) {
for (int i = beginPage; i <= pageCount; i++) {
apiDefinition.getRequest().getPage().getRequestData().get(0).setParameterDefaultValue(String.valueOf(i));
response = execHttpRequest(false, apiDefinition, apiDefinition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), params(datasourceRequest));
dataList.addAll(fetchResult(response, apiDefinition));

View File

@ -90,7 +90,8 @@ export default {
response: 'Response',
please_enter_jsonpath: 'Please enter JsonPath',
enter_parameter_name: 'Please enter parameter name',
enter_default_value: 'Please enter default value'
enter_default_value: 'Please enter default value',
enter_first_page: 'Please enter the page number of the first page'
},
operate_log: {
name: 'Operation log',
@ -273,6 +274,7 @@ export default {
view_data_structure: 'View data structure',
the_data_structure: 'No data yet, please check the fields in the data structure',
parameter: 'Parameter',
page_parameter: 'Page Parameter',
fixed_value: 'Fixed value',
time_function: 'Time function',
customize: 'Customize',

View File

@ -90,7 +90,8 @@ export default {
response: '回應',
please_enter_jsonpath: '請輸入 JsonPath',
enter_parameter_name: '請輸入參數名稱',
enter_default_value: '請輸入預設值'
enter_default_value: '請輸入預設值',
enter_first_page: '請輸入第一頁的頁碼'
},
operate_log: {
name: '操作日誌',
@ -265,6 +266,7 @@ export default {
view_data_structure: '查看資料結構',
the_data_structure: '暫無數據請在資料結構勾選欄位',
parameter: '參數',
page_parameter: '分页參數',
fixed_value: '固定值',
time_function: '時間函數',
customize: '自訂',

View File

@ -91,7 +91,8 @@ export default {
response: '响应',
please_enter_jsonpath: '请输入 JsonPath',
enter_parameter_name: '请输入参数名称',
enter_default_value: '请输入默认值'
enter_default_value: '请输入默认值',
enter_first_page: '请输入第一页的页码'
},
operate_log: {
name: '操作日志',
@ -266,6 +267,7 @@ export default {
view_data_structure: '查看数据结构',
the_data_structure: '暂无数据请在数据结构勾选字段',
parameter: '参数',
page_parameter: '分页参数',
fixed_value: '固定值',
time_function: '时间函数',
customize: '自定义',

View File

@ -109,6 +109,10 @@ const options = [
label: t('data_source.parameter'),
value: 'params'
},
{
label: t('data_source.page_parameter'),
value: 'pageParams'
},
{
label: t('data_source.fixed_value'),
value: 'fixed'
@ -122,6 +126,16 @@ const options = [
value: 'custom'
}
]
const pageParams = [
{
label: '${pageNumber}',
value: '${pageNumber}'
},
{
label: '${pageSize}',
value: '${pageSize}'
}
]
const timeFunLists = [
{
label: t('data_source.that_day') + 'yyyy-MM-dd',
@ -221,11 +235,23 @@ const timeFunLists = [
:value="item.value"
/>
</el-select>
<el-select
v-model="element.value"
v-if="!needMock && activeName === 'table' && element.nameType === 'pageParams'"
>
<el-option
v-for="item in pageParams"
:key="item.originName"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-input
v-if="
activeName === 'table' &&
element.nameType !== 'params' &&
element.nameType !== 'timeFun'
element.nameType !== 'timeFun' &&
element.nameType !== 'pageParams'
"
v-model="element.value"
:disabled="isReadOnly"

View File

@ -140,21 +140,16 @@ const handleNumberSizeChange = () => {
prop="builtInParameterName"
:label="t('api_pagination.built_in_parameter_name')"
/>
<el-table-column :label="t('api_pagination.request_parameter_name')" width="220">
<template #default="scope">
<el-input
v-model="scope.row.requestParameterName"
style="width: 100%"
:placeholder="t('api_pagination.enter_parameter_name')"
/>
</template>
</el-table-column>
<el-table-column :label="t('api_pagination.parameter_default_value')" width="220">
<template #default="scope">
<el-input
v-model="scope.row.parameterDefaultValue"
style="width: 100%"
:placeholder="t('api_pagination.enter_default_value')"
:placeholder="
scope.row.builtInParameterName === '${pageNumber}'
? t('api_pagination.enter_first_page')
: t('api_pagination.enter_default_value')
"
/>
</template>
</el-table-column>

@ -1 +1 @@
Subproject commit 07d5ca7b79e6b4a2e2077d2969d80ae44d0867d6
Subproject commit 9afdcb94d80d3dc9567547e1a71462cd6ff68062