diff --git a/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java b/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java index 2765f28..6f5d709 100644 --- a/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java +++ b/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java @@ -2,12 +2,14 @@ package ru.soune.nocopy.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import ru.soune.nocopy.dto.search.GlobalSearchStartRequest; import ru.soune.nocopy.dto.search.GlobalSearchStartResponse; import ru.soune.nocopy.dto.search.GlobalSearchStatusResponse; import ru.soune.nocopy.dto.violation.FileViolationSummaryDTO; +import ru.soune.nocopy.dto.violation.ViolationRequest; import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.search.GlobalSearchTask; import ru.soune.nocopy.entity.search.SearchStatus; @@ -17,6 +19,9 @@ 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 @@ -105,33 +110,61 @@ public class GlobalSearchController { return ResponseEntity.ok(taskOptional.get()); } - @GetMapping("/violation-summary") - public ResponseEntity getSummary(@RequestHeader(value = "Authorization", required = false) String tokenHeader) { +// @GetMapping("/violation-summary") +// public ResponseEntity getSummary(@RequestHeader(value = "Authorization", required = false) String tokenHeader) { +// +// if (tokenHeader == null || tokenHeader.isBlank()) { +// Map errorData = new HashMap<>(); +// errorData.put("token", tokenHeader); +// +// return ResponseEntity.ok().body(Map.of("error", errorData)); +// } +// +// List fileViolationsSummary; +// +// try { +// Long userId = authService.useUserAuthToken(tokenHeader); +// +// fileViolationsSummary = +// violationService.getFileViolationsSummary(userId); +// +// if (fileViolationsSummary.isEmpty()) return ResponseEntity.ok().body("Violations summary not found"); +// } catch (NotFoundAuthToken e) { +// Map errorData = new HashMap<>(); +// errorData.put("token", tokenHeader); +// +// return ResponseEntity.ok().body(Map.of("error", errorData)); +// } +// +// return ResponseEntity.ok(fileViolationsSummary); +// } - if (tokenHeader == null || tokenHeader.isBlank()) { + + @PostMapping("/violations") + public ResponseEntity getViolations(@RequestBody ViolationRequest request) { + if (request.getToken() == null || request.getToken().isBlank()) { Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - + errorData.put("token", request.getToken()); return ResponseEntity.ok().body(Map.of("error", errorData)); } - List fileViolationsSummary; - try { - Long userId = authService.useUserAuthToken(tokenHeader); + Long userId = authService.useUserAuthToken(request.getToken()); - fileViolationsSummary = - violationService.getFileViolationsSummary(userId); + LocalDateTime start = parseDate(request.getStartDate()); + LocalDateTime end = parseDate(request.getEndDate()); - if (fileViolationsSummary.isEmpty()) return ResponseEntity.ok().body("Violations summary not found"); + Page result = violationService.getFileViolationsSummary( + userId, request.getFileName(), request.getSortDirection(), + request.getPage(), request.getSize(), start, end); + + return ResponseEntity.ok(result); } catch (NotFoundAuthToken e) { Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); + errorData.put("token", request.getToken()); return ResponseEntity.ok().body(Map.of("error", errorData)); } - - return ResponseEntity.ok(fileViolationsSummary); } @GetMapping("/status/{taskId}") @@ -170,4 +203,13 @@ public class GlobalSearchController { return ResponseEntity.ok(response); } + + private LocalDateTime parseDate(String dateStr) { + try { + return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } catch (DateTimeParseException e) { + log.error(e.getMessage()); + return null; + } + } } diff --git a/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java b/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java index 1edf968..66bb2ea 100644 --- a/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java @@ -39,4 +39,7 @@ public class ViolationRequest { @JsonProperty("token") private String token; + + @JsonProperty("fileName") + private String fileName = null; } \ No newline at end of file diff --git a/src/main/java/ru/soune/nocopy/handler/ViolationStatisticsHandler.java b/src/main/java/ru/soune/nocopy/handler/ViolationStatisticsHandler.java index b99ed1d..d047ebe 100644 --- a/src/main/java/ru/soune/nocopy/handler/ViolationStatisticsHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ViolationStatisticsHandler.java @@ -31,138 +31,6 @@ public class ViolationStatisticsHandler implements RequestHandler { @Override public BaseResponse handle(BaseRequest request) throws Exception { - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); - log.info("start find violation statistic"); ViolationStatisticsRequest statRequest = objectMapper.convertValue(request.getMessageBody(), ViolationStatisticsRequest.class); diff --git a/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java index d209839..26cde50 100644 --- a/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java @@ -48,6 +48,10 @@ public interface FileEntityRepository extends JpaRepository @Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.originalFileName LIKE %:keyword%") List searchByFileName(@Param("userId") Long userId, @Param("keyword") String keyword); + @Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.originalFileName LIKE %:keyword%") + List searchByFileNameAndStatusIn(@Param("userId") Long userId, @Param("keyword") String keyword, + List statuses); + @Query("SELECT f FROM FileEntity f WHERE f.status = :status") List searchFileEntityByStatus(@Param("status") FileStatus status); 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 0228914..2af69a7 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -111,6 +111,24 @@ public class FileEntityService { return allFiles; } + public List getAllUserFilesWithFileName(Long userId, String fileName, List statuses) { + 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(fileEntityRepository.searchByFileNameAndStatusIn(uId, fileName, statuses)); + } + } else { + allFiles = fileEntityRepository.searchByFileNameAndStatusIn(userId, fileName, statuses); + } + + return allFiles; + } + @Transactional(readOnly = true) public FileResponse getUserFiles(Long userId, Pageable pageable, int version) { User user = userRepository.findById(userId).orElseThrow(); @@ -256,7 +274,7 @@ public class FileEntityService { channel.force(true); } - if (imageResizeService.isImage(extension)) { + if (fileEntity.getMimeType().equals("image")) { imageResizeService.generateSizes(fileEntity, data); }