@@ -8,6 +8,8 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.soune.nocopy.dto.file.YandexSearchResponse;
|
||||
import ru.soune.nocopy.dto.violation.FileViolationSummaryDTO;
|
||||
import ru.soune.nocopy.dto.violation.ViolationInfoDTO;
|
||||
import ru.soune.nocopy.dto.violation.ViolationStatisticsResponse;
|
||||
import ru.soune.nocopy.entity.file.FileEntity;
|
||||
import ru.soune.nocopy.entity.search.GlobalSearchResult;
|
||||
@@ -18,6 +20,7 @@ import ru.soune.nocopy.repository.ViolationRepository;
|
||||
import ru.soune.nocopy.service.file.FileEntityService;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -57,29 +60,49 @@ public class ViolationService {
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, Map<String, Object>> getFileViolationsSummary(Long userId) {
|
||||
public List<FileViolationSummaryDTO> getFileViolationsSummary(Long userId) {
|
||||
List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId);
|
||||
List<Violation> violations = violationRepository.findByFileEntityIn(userFiles);
|
||||
|
||||
Map<String, List<Violation>> violationsByFileId = violations.stream()
|
||||
.collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
|
||||
|
||||
Map<String, Map<String, Object>> result = new HashMap<>();
|
||||
return userFiles.stream()
|
||||
.map(file -> {
|
||||
List<Violation> fileViolations = violationsByFileId.getOrDefault(file.getId(),
|
||||
Collections.emptyList());
|
||||
|
||||
for (Map.Entry<String, List<Violation>> entry : violationsByFileId.entrySet()) {
|
||||
List<Violation> fileViolations = entry.getValue();
|
||||
List<ViolationInfoDTO> violationDtos = fileViolations.stream()
|
||||
.map(v -> ViolationInfoDTO.builder()
|
||||
.violationId(v.getId())
|
||||
.url(v.getUrl())
|
||||
.pageUrl(v.getPageUrl())
|
||||
.host(v.getHost())
|
||||
.createdDate(v.getCreatedDate())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Map<String, Object> info = new HashMap<>();
|
||||
info.put("count", fileViolations.size());
|
||||
info.put("latestDate", fileViolations.stream()
|
||||
.map(Violation::getCreatedDate)
|
||||
.max(LocalDateTime::compareTo)
|
||||
.orElse(null));
|
||||
LocalDateTime latestDate = fileViolations.stream()
|
||||
.map(Violation::getCreatedDate)
|
||||
.max(LocalDateTime::compareTo)
|
||||
.orElse(null);
|
||||
|
||||
result.put(entry.getKey(), info);
|
||||
}
|
||||
|
||||
return result;
|
||||
return FileViolationSummaryDTO.builder()
|
||||
.fileId(file.getId())
|
||||
.supportId(file.getSupportId())
|
||||
.fileName(file.getOriginalFileName())
|
||||
.storedFileName(file.getStoredFileName())
|
||||
.filePath(file.getFilePath())
|
||||
.fileSize(file.getFileSize())
|
||||
.mimeType(file.getMimeType())
|
||||
.status(file.getStatus())
|
||||
.createdAt(file.getCreatedAt())
|
||||
.violationCount(fileViolations.size())
|
||||
.latestViolationDate(latestDate)
|
||||
.violations(violationDtos)
|
||||
.build();
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<Violation> violationsByFileId(FileEntity file) {
|
||||
|
||||
Reference in New Issue
Block a user