Skip to content

Commit 39e1d1c

Browse files
committed
feat: add compliance report module
1 parent a235370 commit 39e1d1c

2 files changed

Lines changed: 34 additions & 11 deletions

File tree

backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/requests/RequestDsl.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
import com.park.utmstack.service.elasticsearch.SearchUtil;
1010
import com.park.utmstack.util.TimezoneUtil;
1111
import com.park.utmstack.util.exceptions.UtmElasticsearchException;
12+
import com.park.utmstack.util.exceptions.UtmSerializationException;
1213
import org.opensearch.client.opensearch._types.SortOrder;
1314
import org.opensearch.client.opensearch._types.aggregations.*;
1415
import org.opensearch.client.opensearch.core.SearchRequest;
1516
import org.opensearch.client.opensearch.core.search.TrackHits;
17+
import org.springframework.data.domain.Pageable;
1618
import org.springframework.util.Assert;
1719
import org.springframework.util.CollectionUtils;
1820

@@ -34,29 +36,48 @@ public RequestDsl(UtmVisualization visualization) {
3436
}
3537

3638
public SearchRequest.Builder getSearchSourceBuilder() throws UtmElasticsearchException {
39+
return getSearchSourceBuilder(null, 10000);
40+
}
41+
42+
public SearchRequest.Builder getSearchSourceBuilder(Pageable pageable, int top) throws UtmElasticsearchException {
3743
final String ctx = CLASSNAME + ".getSearchSourceBuilder";
3844
try {
39-
List<FilterType> filters = visualization.getFilterType();
40-
41-
if (CollectionUtils.isEmpty(filters))
42-
filters = new ArrayList<>();
43-
44-
searchRequestBuilder.query(SearchUtil.toQuery(filters));
45+
prepareSearchRequest();
4546

46-
if (visualization.getChartType() != ChartType.LIST_CHART &&
47-
visualization.getChartType() != ChartType.TEXT_CHART) {
47+
if (isAggregatedChart()) {
4848
buildAggregation();
4949
searchRequestBuilder.size(0);
5050
searchRequestBuilder.trackTotalHits(TrackHits.of(t -> t.enabled(true)));
5151
} else {
52-
searchRequestBuilder.size(10000);
52+
applyPagination(pageable, top);
5353
}
5454
return searchRequestBuilder;
5555
} catch (Exception e) {
5656
throw new UtmElasticsearchException(ctx + ": " + e.getMessage());
5757
}
5858
}
5959

60+
private void prepareSearchRequest() throws UtmSerializationException {
61+
List<FilterType> filters = visualization.getFilterType();
62+
if (CollectionUtils.isEmpty(filters)) {
63+
filters = new ArrayList<>();
64+
}
65+
searchRequestBuilder.query(SearchUtil.toQuery(filters));
66+
}
67+
68+
private boolean isAggregatedChart() {
69+
return visualization.getChartType() != ChartType.LIST_CHART &&
70+
visualization.getChartType() != ChartType.TEXT_CHART;
71+
}
72+
73+
private void applyPagination(Pageable pageable, int top) {
74+
if (pageable != null && pageable.isPaged()) {
75+
SearchUtil.applyPaginationAndSort(searchRequestBuilder, pageable, top);
76+
} else {
77+
searchRequestBuilder.size(10000);
78+
}
79+
}
80+
6081
public SearchRequest.Builder getSearchSourceBuilderForCount() throws UtmElasticsearchException {
6182
final String ctx = CLASSNAME + ".getSearchSourceBuilderForCount";
6283
try {

backend/src/main/java/com/park/utmstack/web/rest/chart_builder/UtmVisualizationResource.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,9 @@ public ResponseEntity<Void> bulkDelete(@RequestParam List<Long> ids) {
280280
}
281281

282282
@PostMapping("/utm-visualizations/run")
283-
public ResponseEntity<List<?>> run(@RequestBody UtmVisualization visualization) throws UtmChartBuilderException {
283+
public ResponseEntity<List<?>> run(@RequestBody UtmVisualization visualization,
284+
Pageable pageable,
285+
@RequestParam(defaultValue = "200") int top) throws UtmChartBuilderException {
284286
final String ctx = CLASSNAME + ".run";
285287
try {
286288
Assert.notNull(visualization, "Param utmVisualization must not be null");
@@ -289,7 +291,7 @@ public ResponseEntity<List<?>> run(@RequestBody UtmVisualization visualization)
289291
return ResponseEntity.ok(Collections.emptyList());
290292

291293
RequestDsl requestQuery = new RequestDsl(visualization);
292-
SearchResponse<ObjectNode> result = elasticsearchService.search(requestQuery.getSearchSourceBuilder().build(), ObjectNode.class);
294+
SearchResponse<ObjectNode> result = elasticsearchService.search(requestQuery.getSearchSourceBuilder(pageable, 200).build(), ObjectNode.class);
293295
ResponseParser<?> responseParser = responseParserFactory.instance(visualization.getChartType());
294296
return ResponseEntity.ok().body(responseParser.parse(visualization, result));
295297
} catch (Exception e) {

0 commit comments

Comments
 (0)