From 0b5eca1f7ef543cd2cc8c254e0d7e240161d3008 Mon Sep 17 00:00:00 2001 From: pray4skylark Date: Fri, 2 Oct 2026 12:50:25 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20DispatchHistoryRepository=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EB=88=84=EB=9D=BD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20ReportService=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=EB=B0=9C=ED=96=89=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/DispatchHistoryRepository.java | 2 ++ .../com/srsystem/service/ReportService.java | 19 +++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) 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);