fix download and xml

This commit is contained in:
Eduard Tihomiorv 2025-10-09 11:34:18 +03:00
parent 5e3d0531d2
commit c0c3ce00e5
2 changed files with 48 additions and 9 deletions

View file

@ -126,24 +126,37 @@ public class DownloadService {
validationResults, limit, offset
);
if (query.get(REQUEST_WITH_ADDITIONAL_ID) != null) {
pageIndex--;
SqlDownloadBuildQueryResponse response = (SqlDownloadBuildQueryResponse) query.get(REQUEST_WITH_ADDITIONAL_ID);
String url = response.getSql();
String paramName = response.getParamName();
Collection<List<String>> pages = partitionList(response.getParams(), limit);
for (List<String> page : pages) {
pageIndex++;
String resultSet = "(" + page.stream()
.map(s -> "'" + s.trim() + "'")
.collect(Collectors.joining(", ")) + ")";
url = url.replace("${" + paramName + "}",
resultSet
);
results = new ArrayList<>(executeSqlQuery(connection, url));
if (results.size() <= 1) {
break;
url = url.replaceAll(";(?=[^;]*$)", " ") + " LIMIT " + limit + " OFFSET "
+ offset + ";";
while (true) {
results = new ArrayList<>(executeSqlQuery(connection, url));
if (results.size() <= 1) {
break;
}
File file = writeSingleSqlCsvFile(results, "download-part" + pageIndex + "-", ".csv");
allFiles.add(file);
if (results.size() - 1 < limit) {
break;
}
String oldPagination = " OFFSET " + offset + ";";
offset += limit;
String newPagination = " OFFSET " + offset + ";";
url = url.replace(oldPagination, newPagination);
pageIndex++;
}
File file = writeSingleSqlCsvFile(results, "download-part" + pageIndex + "-", ".csv");
allFiles.add(file);
pageIndex++;
}
}
else {

View file

@ -42,7 +42,10 @@
</AqlConnectionParams>
</AQLDownloadRequest>
<SQLDownloadRequest>
<DownloadRequestType>Type_A</DownloadRequestType>
<DownloadRequestType>По конкретным id</DownloadRequestType>
<RequestValidationRules
isEmptyDatesAllowed="true"
/>
<RequestURL>
Select system_id_ern from public.recruits where id in ${endpointArguments};
</RequestURL>
@ -64,8 +67,8 @@
isEmptyDatesAllowed="true"
isIdsFormatted="true"
/>
<DownloadRequestType>Type_B</DownloadRequestType>
<RequestArgumentLimit>10</RequestArgumentLimit>
<DownloadRequestType>С выделенным подзапросом (100)</DownloadRequestType>
<RequestArgumentLimit>100</RequestArgumentLimit>
<RequestURL>
Select system_id_ern from public.recruits where id in ${additionalArguments};
</RequestURL>
@ -98,5 +101,28 @@
</RequestArgumentConnectionParams>
</RequestArgument>
</SQLDownloadRequest>
<SQLDownloadRequest>
<RequestValidationRules
isEmptyIdsAllowed="true"
isEmptyDatesAllowed="true"
isIdsFormatted="true"
/>
<DownloadRequestType>Одним запросом (50)</DownloadRequestType>
<RequestArgumentLimit>50</RequestArgumentLimit>
<RequestURL>
Select system_id_ern from public.recruits;
</RequestURL>
<SqlConnectionParams>
<JdbcHost>10.10.31.118</JdbcHost>
<JdbcPort>5432</JdbcPort>
<JdbcUsername>ervu</JdbcUsername>
<JdbcPassword>ervu</JdbcPassword>
<JdbcDriverClassName>org.postgresql.Driver</JdbcDriverClassName>
<JdbcXaDataSourceClassName>org.postgresql.xa.PGXADataSource</JdbcXaDataSourceClassName>
<JdbcXaDataSourcePoolSize>50</JdbcXaDataSourcePoolSize>
<JdbcDatabase>person_registry</JdbcDatabase>
<JdbcXaDataSourceBorrowConnectionTimeout>4000</JdbcXaDataSourceBorrowConnectionTimeout>
</SqlConnectionParams>
</SQLDownloadRequest>
</Requests>