From 8bc576da27d89009e66e830022ae99fd991f7bd8 Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Thu, 4 Jun 2026 11:11:17 +0700 Subject: [PATCH] Add file info public --- .../soune/nocopy/handler/ViolationHandler.java | 2 +- .../repository/FileMonitoringRepository.java | 4 ++++ .../nocopy/scheduler/MonitoringScheduler.java | 4 +++- .../nocopy/service/file/FileEntityService.java | 18 ++++++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java b/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java index 667049e..81ef7ad 100644 --- a/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java @@ -76,7 +76,7 @@ public class ViolationHandler implements RequestHandler { targetFiles = List.of(file); } else { - targetFiles = fileEntityService.getAllUserFiles(userId); + targetFiles = fileEntityService.getAllUserFilesExcludingBlockedAndRemoved(userId); } LocalDateTime startDate = null; diff --git a/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java b/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java index eb85885..1510d8a 100644 --- a/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java @@ -23,6 +23,10 @@ public interface FileMonitoringRepository extends JpaRepository findReadyForRun(@Param("now") LocalDateTime now); + @Query("SELECT fm FROM FileMonitoringEntity fm LEFT JOIN FETCH FileEntity f ON f.id = fm.file.id WHERE" + + " fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now AND f.status IN :statuses") + List findReadyForRun(@Param("now") LocalDateTime now, @Param("statuses") List statuses); + List findByMonitoringTypeAndIsActiveTrue(MonitoringType type); @Query("SELECT COUNT(m) FROM FileMonitoringEntity m " + diff --git a/src/main/java/ru/soune/nocopy/scheduler/MonitoringScheduler.java b/src/main/java/ru/soune/nocopy/scheduler/MonitoringScheduler.java index cb7681f..67c105b 100644 --- a/src/main/java/ru/soune/nocopy/scheduler/MonitoringScheduler.java +++ b/src/main/java/ru/soune/nocopy/scheduler/MonitoringScheduler.java @@ -8,6 +8,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import ru.soune.nocopy.entity.file.FileStatus; import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity; import ru.soune.nocopy.entity.notification.NotificationType; import ru.soune.nocopy.repository.FileMonitoringRepository; @@ -37,7 +38,8 @@ public class MonitoringScheduler { log.info("Starting scheduled monitoring check at 02:01 MSK"); LocalDateTime now = LocalDateTime.now(); - List readyForRun = monitoringRepository.findReadyForRun(now); + List readyForRun = monitoringRepository.findReadyForRun(now, + List.of(FileStatus.ACTIVE.name(), FileStatus.MODERATION.name())); Map> groupingFilesMonitoring = readyForRun.stream() .collect(Collectors.groupingBy(FileMonitoringEntity::getUserId)); 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 b3051df..0e5c0b5 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -97,6 +97,24 @@ public class FileEntityService { return allFiles; } + @Transactional(readOnly = true) + public List getAllUserFilesExcludingBlockedAndRemoved(Long userId) { + User user = userRepository.findById(userId).orElseThrow(); + List allFiles = new ArrayList<>(); + + if (user.getCompany() != null) { + for (Long uId : userRepository.findByCompanyId(user.getCompany().getId()).stream() + .map(User::getId) + .toList()) { + allFiles.addAll(getAllUserFiles(uId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION))); + } + } else { + allFiles = getAllUserFiles(userId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION)); + } + + return allFiles; + } + public List getAllUserFiles(Long userId, List statuses) { User user = userRepository.findById(userId).orElseThrow(); List allFiles = new ArrayList<>();