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.search.GlobalSearchService;
import ru.soune.nocopy.service.violation.ViolationService; import ru.soune.nocopy.service.violation.ViolationService;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
@@ -69,29 +69,27 @@ public class ViolationService {
return violationRepository.findById(violationId).orElse(null); return violationRepository.findById(violationId).orElse(null);
} }
public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection, Integer page, public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection,
Integer size, String start, String end) { Integer page, Integer size, String start, String end) {
List<FileEntity> userFiles = fileName == null || fileName.isEmpty() ? fileEntityService.getAllUserFiles(userId) List<FileEntity> userFiles = fileName == null || fileName.isEmpty()
? fileEntityService.getAllUserFiles(userId)
: fileEntityService.getAllUserFilesWithFileName(userId, fileName, : fileEntityService.getAllUserFilesWithFileName(userId, fileName,
List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION)); List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION));
Sort sort = Sort.by(sortDirection.equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC, List<Violation> allViolations;
"createdDate");
Pageable pageable = PageRequest.of(page, size, sort);
Page<Violation> violations;
if (start == null || end == null) { if (start == null || end == null) {
violations = violationRepository.findByFileEntityInAndStatusNot( userFiles, allViolations = violationRepository.findByFileEntityInAndStatusNot(userFiles,
ViolationStatus.NOT_OWNER_FILE.name(),pageable); ViolationStatus.NOT_OWNER_FILE.name());
} else { } else {
violations = violationRepository.findByFileEntityInAndStatusNotAndCreatedDateBetween( allViolations = violationRepository.findByFileEntityInAndCreatedDateBetweenAndStatusNot(
userFiles, ViolationStatus.NOT_OWNER_FILE.name(), parseDate(start), parseDate(end), pageable); 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())); .collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
List<FileViolationSummaryDTO> dtoList = violationsByFileId.entrySet().stream() List<FileViolationSummaryDTO> allDTOs = violationsByFileId.entrySet().stream()
.map(entry -> { .map(entry -> {
List<Violation> fileViolations = entry.getValue(); List<Violation> fileViolations = entry.getValue();
FileEntity file = fileViolations.get(0).getFileEntity(); FileEntity file = fileViolations.get(0).getFileEntity();
@@ -115,8 +113,67 @@ public class ViolationService {
}) })
.collect(Collectors.toList()); .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) { public List<FileViolationSummaryDTO> getFileViolationsSummary(Long userId) {
List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId); List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId);