diff --git a/backend/src/main/java/com/srsystem/repository/DispatchHistoryRepository.java b/backend/src/main/java/com/srsystem/repository/DispatchHistoryRepository.java index 6ed3662..3ed673c 100644 --- a/backend/src/main/java/com/srsystem/repository/DispatchHistoryRepository.java +++ b/backend/src/main/java/com/srsystem/repository/DispatchHistoryRepository.java @@ -17,6 +17,8 @@ public interface DispatchHistoryRepository extends JpaRepository findByEndDateIsNull(); + List findByEmployee_EmpIdAndEndDateIsNull(Long empId); + @Query("SELECT DISTINCT dh.employee FROM DispatchHistory dh WHERE dh.individualTech LIKE %:keyword%") List findEmployeesByIndividualTechContaining(@Param("keyword") String keyword); diff --git a/backend/src/main/java/com/srsystem/service/ReportService.java b/backend/src/main/java/com/srsystem/service/ReportService.java index 829f081..1fbc871 100644 --- a/backend/src/main/java/com/srsystem/service/ReportService.java +++ b/backend/src/main/java/com/srsystem/service/ReportService.java @@ -47,6 +47,7 @@ public class ReportService { private final TicketRepository ticketRepository; private final NotificationRepository notificationRepository; private final WeeklyPlanRepository weeklyPlanRepository; + private final com.srsystem.listener.NotificationPublisher notificationPublisher; public Page getReports(ReportStatus status, String type, LocalDate targetDate, Long userId, Pageable pageable) { Page reports; @@ -159,7 +160,7 @@ public class ReportService { Report updated = reportRepository.save(report); - // Send notification for approval or rejection + // Send notification for approval or rejection via NotificationPublisher if (request.status() == ReportStatus.REJECTED || request.status() == ReportStatus.APPROVED) { String type = request.status() == ReportStatus.APPROVED ? "REPORT_APPROVED" : "REPORT_REJECTED"; String title = request.status() == ReportStatus.APPROVED ? "업무 보고서 승인 완료" : "업무 보고서 반려 안내"; @@ -167,15 +168,13 @@ public class ReportService { ? String.format("%s 일자 보고서가 승인되었습니다.", report.getTargetDate()) : String.format("%s 일자 보고서가 반려되었습니다. 사유: %s", report.getTargetDate(), request.reviewComment()); - Notification notification = Notification.builder() - .user(report.getUser()) - .type(type) - .title(title) - .message(message) - .linkUrl("/work-reports") - .isRead('N') - .build(); - notificationRepository.save(notification); + notificationPublisher.publish(new com.srsystem.dto.NotificationEvent( + type, + title, + message, + "/work-reports", + report.getUser().getEmpId() + )); } return toWorkReportResponse(updated);