From f887c4c719621433936de77c91258ad8e6fbe549 Mon Sep 17 00:00:00 2001 From: kbyunghoon Date: Tue, 18 Feb 2025 21:58:45 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EC=95=8C=EB=9E=8C=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EB=B3=84=20=EA=B0=9C=EC=88=98=20=ED=86=B5=EA=B3=84=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EB=B0=A9=EC=8B=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alarm/application/AlarmService.java | 8 ++------ .../alarm/domain/AlarmStatusStats.java | 6 ++++-- .../infrastructure/jpa/AlarmJpaRepository.java | 18 ++++++++++-------- .../alarm/presentation/AlarmController.java | 11 ++++------- .../dto/AlarmStatusStatsResponse.java | 13 ++++++++----- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/monicar-control-center/src/main/java/org/controlcenter/alarm/application/AlarmService.java b/monicar-control-center/src/main/java/org/controlcenter/alarm/application/AlarmService.java index b0d866f..cf6bd6e 100644 --- a/monicar-control-center/src/main/java/org/controlcenter/alarm/application/AlarmService.java +++ b/monicar-control-center/src/main/java/org/controlcenter/alarm/application/AlarmService.java @@ -1,7 +1,6 @@ package org.controlcenter.alarm.application; import java.io.IOException; -import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -14,7 +13,6 @@ import org.controlcenter.alarm.domain.SendAlarm; import org.controlcenter.alarm.infrastructure.jpa.AlarmJpaRepository; import org.controlcenter.alarm.infrastructure.jpa.entity.AlarmEntity; -import org.controlcenter.alarm.presentation.dto.AlarmStatusStatsResponse; import org.controlcenter.common.exception.BusinessException; import org.controlcenter.common.response.code.ErrorCode; import org.controlcenter.company.application.port.ManagerRepository; @@ -154,9 +152,7 @@ public void sendAll(SendAlarm sendAlarm) { } @Transactional(readOnly = true) - public List getAlarmStatusCounts() { - List rawData = alarmJpaRepository.findStatusCounts(); - return rawData.stream() - .map(AlarmStatusStatsResponse::from).toList(); + public AlarmStatusStats getAlarmStatusCounts() { + return alarmJpaRepository.findStatusCounts(); } } diff --git a/monicar-control-center/src/main/java/org/controlcenter/alarm/domain/AlarmStatusStats.java b/monicar-control-center/src/main/java/org/controlcenter/alarm/domain/AlarmStatusStats.java index c7fb036..9664a1f 100644 --- a/monicar-control-center/src/main/java/org/controlcenter/alarm/domain/AlarmStatusStats.java +++ b/monicar-control-center/src/main/java/org/controlcenter/alarm/domain/AlarmStatusStats.java @@ -6,6 +6,8 @@ @Getter @AllArgsConstructor public class AlarmStatusStats { - private AlarmStatus status; - private long count; + private Long required; + private Long scheduled; + private Long inProgress; + private Long completed; } diff --git a/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java b/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java index a8a0017..5559db9 100644 --- a/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java +++ b/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java @@ -27,12 +27,14 @@ public interface AlarmJpaRepository extends JpaRepository { Page findAlarmListByStatus(@Param("status") AlarmStatus status, Pageable pageable); - @Query("SELECT new org.controlcenter.alarm.domain.AlarmStatusStats(a.status, COUNT(a)) " + - "FROM alarm a " + - "WHERE a.deletedAt IS NULL " + - " AND a.isChecked = FALSE " + - "GROUP BY a.status" - ) - List findStatusCounts(); - + @Query(""" + SELECT new org.controlcenter.alarm.domain.AlarmStatusStats( + SUM(CASE WHEN a.status = 'REQUIRED' THEN 1 ELSE 0 END), + SUM(CASE WHEN a.status = 'SCHEDULED' THEN 1 ELSE 0 END), + SUM(CASE WHEN a.status = 'IN_PROGRESS' THEN 1 ELSE 0 END), + SUM(CASE WHEN a.status = 'COMPLETED' THEN 1 ELSE 0 END) + ) + FROM alarm a + """) + AlarmStatusStats findStatusCounts(); } diff --git a/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/AlarmController.java b/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/AlarmController.java index a4c468b..51c12bc 100644 --- a/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/AlarmController.java +++ b/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/AlarmController.java @@ -1,9 +1,5 @@ package org.controlcenter.alarm.presentation; -import jakarta.servlet.http.HttpServletResponse; - -import java.util.List; - import org.controlcenter.alarm.application.AlarmService; import org.controlcenter.alarm.domain.AlarmStatus; import org.controlcenter.alarm.presentation.dto.AlarmResponse; @@ -17,7 +13,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; -import org.springframework.http.MediaType; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; @@ -30,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -85,9 +81,10 @@ public BaseResponse> list( } @GetMapping("/status/stats") - public BaseResponse> getAlarmStatusStats() { + public BaseResponse getAlarmStatusStats() { + var alarmStatusStats = alarmService.getAlarmStatusCounts(); return BaseResponse.success( - alarmService.getAlarmStatusCounts() + AlarmStatusStatsResponse.from(alarmStatusStats) ); } } diff --git a/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/dto/AlarmStatusStatsResponse.java b/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/dto/AlarmStatusStatsResponse.java index cb86601..7863629 100644 --- a/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/dto/AlarmStatusStatsResponse.java +++ b/monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/dto/AlarmStatusStatsResponse.java @@ -1,19 +1,22 @@ package org.controlcenter.alarm.presentation.dto; -import org.controlcenter.alarm.domain.AlarmStatus; import org.controlcenter.alarm.domain.AlarmStatusStats; import lombok.Builder; @Builder public record AlarmStatusStatsResponse( - AlarmStatus status, - long count + Long required, + Long scheduled, + Long inProgress, + Long completed ) { public static AlarmStatusStatsResponse from(AlarmStatusStats alarmStatusStats) { return AlarmStatusStatsResponse.builder() - .status(alarmStatusStats.getStatus()) - .count(alarmStatusStats.getCount()) + .required(alarmStatusStats.getRequired()) + .scheduled(alarmStatusStats.getScheduled()) + .inProgress(alarmStatusStats.getInProgress()) + .completed(alarmStatusStats.getCompleted()) .build(); } } From 22d7819096f8b42bd4fa6fbe98560a27c7a2972b Mon Sep 17 00:00:00 2001 From: kbyunghoon Date: Tue, 18 Feb 2025 22:36:03 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=ED=86=B5=EA=B3=84=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=BF=BC=EB=A6=AC=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alarm/infrastructure/jpa/AlarmJpaRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java b/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java index 5559db9..69aac6f 100644 --- a/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java +++ b/monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java @@ -31,7 +31,7 @@ Page findAlarmListByStatus(@Param("status") AlarmStatus status, SELECT new org.controlcenter.alarm.domain.AlarmStatusStats( SUM(CASE WHEN a.status = 'REQUIRED' THEN 1 ELSE 0 END), SUM(CASE WHEN a.status = 'SCHEDULED' THEN 1 ELSE 0 END), - SUM(CASE WHEN a.status = 'IN_PROGRESS' THEN 1 ELSE 0 END), + SUM(CASE WHEN a.status = 'INPROGRESS' THEN 1 ELSE 0 END), SUM(CASE WHEN a.status = 'COMPLETED' THEN 1 ELSE 0 END) ) FROM alarm a