From 2ca73e4417daeff1d27d7478de550e0aa66c2220 Mon Sep 17 00:00:00 2001 From: vladp Date: Thu, 12 Mar 2026 02:52:38 +0700 Subject: [PATCH] dev add vio --- .../GlobalSearchStatisticsResponse.java | 6 +++- .../service/file/FileEntityService.java | 2 +- .../search/GlobalSearchStatisticsService.java | 32 +++++++------------ .../service/violation/ViolationService.java | 2 +- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/dto/search/GlobalSearchStatisticsResponse.java b/src/main/java/ru/soune/nocopy/dto/search/GlobalSearchStatisticsResponse.java index 69444ef..0a199b1 100644 --- a/src/main/java/ru/soune/nocopy/dto/search/GlobalSearchStatisticsResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/search/GlobalSearchStatisticsResponse.java @@ -61,7 +61,10 @@ public class GlobalSearchStatisticsResponse { @JsonProperty("duration_seconds") private Long durationSeconds; - public static SearchStatDto fromEntity(GlobalSearchTask task, long violationsCount) { + @JsonProperty("file_ids") + private List fileIds; + + public static SearchStatDto fromEntity(GlobalSearchTask task, long violationsCount, List fileIds ) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); Long duration = null; @@ -75,6 +78,7 @@ public class GlobalSearchStatisticsResponse { .status(task.getStatus()) .totalFiles(task.getTotalFiles()) .violationsFound(violationsCount) + .fileIds(fileIds) .createdAt(task.getCreatedAt() != null ? task.getCreatedAt().format(formatter) : null) .durationSeconds(duration) .build(); diff --git a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java index 3547eec..58cd956 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -133,7 +133,7 @@ public class FileEntityService { } @Transactional(readOnly = true) - public List getAllUserFiles(Long userId, int version) { + public List getAllUserFiles(Long userId) { User user = userRepository.findById(userId).orElseThrow(); List allFiles = new ArrayList<>(); diff --git a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchStatisticsService.java b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchStatisticsService.java index 383f8b4..1fc8c5c 100644 --- a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchStatisticsService.java +++ b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchStatisticsService.java @@ -6,16 +6,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.soune.nocopy.dto.search.GlobalSearchStatisticsResponse; import ru.soune.nocopy.entity.company.Company; +import ru.soune.nocopy.entity.search.GlobalSearchResult; import ru.soune.nocopy.entity.search.GlobalSearchTask; import ru.soune.nocopy.entity.user.User; -import ru.soune.nocopy.repository.GlobalSearchResultRepository; -import ru.soune.nocopy.repository.GlobalSearchTaskRepository; -import ru.soune.nocopy.repository.UserRepository; -import ru.soune.nocopy.repository.ViolationRepository; +import ru.soune.nocopy.repository.*; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; @Slf4j @@ -35,7 +32,7 @@ public class GlobalSearchStatisticsService { public GlobalSearchStatisticsResponse getStatistics(Long userId, Integer limit, Integer days) { User user = userRepository.findById(userId).orElseThrow(); Company company = user.getCompany(); - List userIds = company == null ? Arrays.asList(userId): + List userIds = company == null ? List.of(userId) : user.getCompany() .getUsers() .stream() @@ -83,9 +80,16 @@ public class GlobalSearchStatisticsService { List recentSearchDtos = new ArrayList<>(); for (GlobalSearchTask task : recentTasks) { - long violationsCount = getViolationsCountForTask(task.getTaskId()); + List globalSearchResults = resultRepository.findByTaskId(task.getTaskId()); + List fileIds = globalSearchResults.stream() + .map(GlobalSearchResult::getFileId) + .toList(); - recentSearchDtos.add(GlobalSearchStatisticsResponse.SearchStatDto.fromEntity(task, violationsCount)); + GlobalSearchStatisticsResponse.SearchStatDto searchStatDto = + GlobalSearchStatisticsResponse.SearchStatDto.fromEntity(task, + violationRepository.countByFileEntityIdIn(fileIds), fileIds); + + recentSearchDtos.add(searchStatDto); } return GlobalSearchStatisticsResponse.builder() @@ -94,16 +98,4 @@ public class GlobalSearchStatisticsService { .recentSearches(recentSearchDtos) .build(); } - - @Transactional(readOnly = true) - public long getViolationsCountForTask(String taskId) { - List fileIds = resultRepository.findByTaskId(taskId).stream() - .map(result -> result.getFileId()) - .toList(); - - if (fileIds.isEmpty()) { - return 0; - } - return violationRepository.countByFileEntityIdIn(fileIds); - } } diff --git a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java index dca5b8d..6cff26f 100644 --- a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java +++ b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java @@ -136,7 +136,7 @@ public class ViolationService { userFiles = List.of(file); } else { - userFiles = fileEntityService.getAllUserFiles(userId, 1); + userFiles = fileEntityService.getAllUserFiles(userId); } if (userFiles.isEmpty()) {