This commit is contained in:
root
2025-09-24 00:53:58 +05:00
parent 7adb815b35
commit a0074078ae
3 changed files with 90 additions and 3 deletions
@@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
import java.util.Optional; import java.util.Optional;
import kz.konturai.parser.dto.PageResponse;
@RestController @RestController
@RequestMapping("/api/parser/report") @RequestMapping("/api/parser/report")
public class ReportController { public class ReportController {
@@ -44,7 +46,8 @@ public class ReportController {
} }
@GetMapping("/history") @GetMapping("/history")
public ResponseEntity<Page<ReportHistory>> history(@RequestParam(name = "page", defaultValue = "0") int page, public ResponseEntity<PageResponse<ReportHistory>> history(
@RequestParam(name = "page", defaultValue = "0") int page,
@RequestParam(name = "size", defaultValue = "20") int size, @RequestParam(name = "size", defaultValue = "20") int size,
@RequestParam(name = "sort", defaultValue = "createdAt,desc") String sort) { @RequestParam(name = "sort", defaultValue = "createdAt,desc") String sort) {
String[] parts = sort.split(","); String[] parts = sort.split(",");
@@ -53,7 +56,14 @@ public class ReportController {
: Sort.Direction.DESC; : Sort.Direction.DESC;
Pageable pageable = PageRequest.of(page, size, Sort.by(dir, sortField)); Pageable pageable = PageRequest.of(page, size, Sort.by(dir, sortField));
Page<ReportHistory> res = reportHistoryRepository.findAll(pageable); Page<ReportHistory> res = reportHistoryRepository.findAll(pageable);
return ResponseEntity.ok(res); PageResponse<ReportHistory> dto = new PageResponse<>(
res.getContent(),
res.getNumber(),
res.getSize(),
res.getTotalElements(),
res.getTotalPages(),
sort);
return ResponseEntity.ok(dto);
} }
@GetMapping("/history/{id}") @GetMapping("/history/{id}")
@@ -0,0 +1,73 @@
package kz.konturai.parser.dto;
import java.util.List;
public class PageResponse<T> {
private List<T> content;
private int page;
private int size;
private long totalElements;
private int totalPages;
private String sort;
public PageResponse() {
}
public PageResponse(List<T> content, int page, int size, long totalElements, int totalPages, String sort) {
this.content = content;
this.page = page;
this.size = size;
this.totalElements = totalElements;
this.totalPages = totalPages;
this.sort = sort;
}
public List<T> getContent() {
return content;
}
public void setContent(List<T> content) {
this.content = content;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public long getTotalElements() {
return totalElements;
}
public void setTotalElements(long totalElements) {
this.totalElements = totalElements;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
}
@@ -180,10 +180,14 @@ public class ReportGenerationService {
} }
private String getCombinedSummaries(List<MarketItem> items) { private String getCombinedSummaries(List<MarketItem> items) {
return items.stream() String combined = items.stream()
.map(i -> i.getAnalytics() != null ? i.getAnalytics().getSummary() : null) .map(i -> i.getAnalytics() != null ? i.getAnalytics().getSummary() : null)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.joining("\n\n")); .collect(Collectors.joining("\n\n"));
if (combined.length() > 8000) {
combined = combined.substring(0, 8000);
}
return combined;
} }
private String buildAnnotation(List<MarketItem> items) { private String buildAnnotation(List<MarketItem> items) {