dev fix add count
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-04-28 17:11:51 +07:00
parent e5d4ec2f07
commit 5c8431195b
2 changed files with 72 additions and 18 deletions
@@ -19,9 +19,6 @@ import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.search.GlobalSearchService;
import ru.soune.nocopy.service.violation.ViolationService;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*;
@Slf4j
@@ -69,29 +69,27 @@ public class ViolationService {
return violationRepository.findById(violationId).orElse(null);
}
public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection, Integer page,
Integer size, String start, String end) {
List<FileEntity> userFiles = fileName == null || fileName.isEmpty() ? fileEntityService.getAllUserFiles(userId)
public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection,
Integer page, Integer size, String start, String end) {
List<FileEntity> userFiles = fileName == null || fileName.isEmpty()
? fileEntityService.getAllUserFiles(userId)
: fileEntityService.getAllUserFilesWithFileName(userId, fileName,
List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION));
Sort sort = Sort.by(sortDirection.equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC,
"createdDate");
Pageable pageable = PageRequest.of(page, size, sort);
Page<Violation> violations;
List<Violation> allViolations;
if (start == null || end == null) {
violations = violationRepository.findByFileEntityInAndStatusNot( userFiles,
ViolationStatus.NOT_OWNER_FILE.name(),pageable);
allViolations = violationRepository.findByFileEntityInAndStatusNot(userFiles,
ViolationStatus.NOT_OWNER_FILE.name());
} else {
violations = violationRepository.findByFileEntityInAndStatusNotAndCreatedDateBetween(
userFiles, ViolationStatus.NOT_OWNER_FILE.name(), parseDate(start), parseDate(end), pageable);
allViolations = violationRepository.findByFileEntityInAndCreatedDateBetweenAndStatusNot(
userFiles, parseDate(start), parseDate(end),
ViolationStatus.NOT_OWNER_FILE.name());
}
Map<String, List<Violation>> violationsByFileId = violations.getContent().stream()
Map<String, List<Violation>> violationsByFileId = allViolations.stream()
.collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
List<FileViolationSummaryDTO> dtoList = violationsByFileId.entrySet().stream()
List<FileViolationSummaryDTO> allDTOs = violationsByFileId.entrySet().stream()
.map(entry -> {
List<Violation> fileViolations = entry.getValue();
FileEntity file = fileViolations.get(0).getFileEntity();
@@ -115,8 +113,67 @@ public class ViolationService {
})
.collect(Collectors.toList());
return new PageImpl<>(dtoList, pageable, violations.getTotalElements());
Comparator<FileViolationSummaryDTO> comparator = Comparator.comparing(
FileViolationSummaryDTO::getLatestViolationDate,
sortDirection.equalsIgnoreCase("desc") ? Comparator.reverseOrder(): Comparator.naturalOrder());
allDTOs.sort(comparator);
int startIdx = page * size;
int endIdx = Math.min(startIdx + size, allDTOs.size());
List<FileViolationSummaryDTO> pageContent = startIdx < allDTOs.size()
? allDTOs.subList(startIdx, endIdx)
: Collections.emptyList();
return new PageImpl<>(pageContent, PageRequest.of(page, size), allDTOs.size());
}
// public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection,
// Integer page, Integer size, String start, String end) {
// List<FileEntity> userFiles = fileName == null || fileName.isEmpty() ? fileEntityService.getAllUserFiles(userId)
// : fileEntityService.getAllUserFilesWithFileName(userId, fileName,
// List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION));
//
// Sort sort = Sort.by(sortDirection.equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC,
// "createdDate");
// Pageable pageable = PageRequest.of(page, size, sort);
// Page<Violation> violations;
//
// if (start == null || end == null) {
// violations = violationRepository.findByFileEntityInAndStatusNot(userFiles,
// ViolationStatus.NOT_OWNER_FILE.name(),pageable);
// } else {
// violations = violationRepository.findByFileEntityInAndStatusNotAndCreatedDateBetween(
// userFiles, ViolationStatus.NOT_OWNER_FILE.name(), parseDate(start), parseDate(end), pageable);
// }
//
// Map<String, List<Violation>> violationsByFileId = violations.getContent().stream()
// .collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
//
// List<FileViolationSummaryDTO> dtoList = violationsByFileId.entrySet().stream()
// .map(entry -> {
// List<Violation> fileViolations = entry.getValue();
// FileEntity file = fileViolations.get(0).getFileEntity();
//
// LocalDateTime latestDate = fileViolations.stream()
// .map(Violation::getCreatedDate)
// .max(LocalDateTime::compareTo)
// .orElse(null);
//
// return FileViolationSummaryDTO.builder()
// .fileId(file.getId())
// .supportId(file.getSupportId())
// .fileName(file.getOriginalFileName())
// .fileSize(file.getFileSize())
// .mimeType(file.getMimeType())
// .status(file.getStatus())
// .createdAt(file.getCreatedAt())
// .violationCount(fileViolations.size())
// .latestViolationDate(latestDate)
// .build();
// })
// .collect(Collectors.toList());
//
// return new PageImpl<>(dtoList, pageable, violations.getTotalElements());
// }
public List<FileViolationSummaryDTO> getFileViolationsSummary(Long userId) {
List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId);