Skip to content

Commit e72c9d2

Browse files
authored
Merge pull request #356 from Kernel360/fix/#355-change-alarm-status-stats
2 parents b2ac169 + 22d7819 commit e72c9d2

File tree

5 files changed

+28
-28
lines changed

5 files changed

+28
-28
lines changed

monicar-control-center/src/main/java/org/controlcenter/alarm/application/AlarmService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.controlcenter.alarm.application;
22

33
import java.io.IOException;
4-
import java.util.List;
54
import java.util.Map;
65
import java.util.concurrent.ConcurrentHashMap;
76

@@ -14,7 +13,6 @@
1413
import org.controlcenter.alarm.domain.SendAlarm;
1514
import org.controlcenter.alarm.infrastructure.jpa.AlarmJpaRepository;
1615
import org.controlcenter.alarm.infrastructure.jpa.entity.AlarmEntity;
17-
import org.controlcenter.alarm.presentation.dto.AlarmStatusStatsResponse;
1816
import org.controlcenter.common.exception.BusinessException;
1917
import org.controlcenter.common.response.code.ErrorCode;
2018
import org.controlcenter.company.application.port.ManagerRepository;
@@ -154,9 +152,7 @@ public void sendAll(SendAlarm sendAlarm) {
154152
}
155153

156154
@Transactional(readOnly = true)
157-
public List<AlarmStatusStatsResponse> getAlarmStatusCounts() {
158-
List<AlarmStatusStats> rawData = alarmJpaRepository.findStatusCounts();
159-
return rawData.stream()
160-
.map(AlarmStatusStatsResponse::from).toList();
155+
public AlarmStatusStats getAlarmStatusCounts() {
156+
return alarmJpaRepository.findStatusCounts();
161157
}
162158
}

monicar-control-center/src/main/java/org/controlcenter/alarm/domain/AlarmStatusStats.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
@Getter
77
@AllArgsConstructor
88
public class AlarmStatusStats {
9-
private AlarmStatus status;
10-
private long count;
9+
private Long required;
10+
private Long scheduled;
11+
private Long inProgress;
12+
private Long completed;
1113
}

monicar-control-center/src/main/java/org/controlcenter/alarm/infrastructure/jpa/AlarmJpaRepository.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ public interface AlarmJpaRepository extends JpaRepository<AlarmEntity, Long> {
2727
Page<AlarmInfo> findAlarmListByStatus(@Param("status") AlarmStatus status,
2828
Pageable pageable);
2929

30-
@Query("SELECT new org.controlcenter.alarm.domain.AlarmStatusStats(a.status, COUNT(a)) " +
31-
"FROM alarm a " +
32-
"WHERE a.deletedAt IS NULL " +
33-
" AND a.isChecked = FALSE " +
34-
"GROUP BY a.status"
35-
)
36-
List<AlarmStatusStats> findStatusCounts();
37-
30+
@Query("""
31+
SELECT new org.controlcenter.alarm.domain.AlarmStatusStats(
32+
SUM(CASE WHEN a.status = 'REQUIRED' THEN 1 ELSE 0 END),
33+
SUM(CASE WHEN a.status = 'SCHEDULED' THEN 1 ELSE 0 END),
34+
SUM(CASE WHEN a.status = 'INPROGRESS' THEN 1 ELSE 0 END),
35+
SUM(CASE WHEN a.status = 'COMPLETED' THEN 1 ELSE 0 END)
36+
)
37+
FROM alarm a
38+
""")
39+
AlarmStatusStats findStatusCounts();
3840
}

monicar-control-center/src/main/java/org/controlcenter/alarm/presentation/AlarmController.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
package org.controlcenter.alarm.presentation;
22

3-
import jakarta.servlet.http.HttpServletResponse;
4-
5-
import java.util.List;
6-
73
import org.controlcenter.alarm.application.AlarmService;
84
import org.controlcenter.alarm.domain.AlarmStatus;
95
import org.controlcenter.alarm.presentation.dto.AlarmResponse;
@@ -17,7 +13,6 @@
1713
import org.springframework.beans.factory.annotation.Value;
1814
import org.springframework.data.domain.Pageable;
1915
import org.springframework.data.web.PageableDefault;
20-
import org.springframework.http.MediaType;
2116
import org.springframework.security.access.prepost.PreAuthorize;
2217
import org.springframework.security.core.annotation.AuthenticationPrincipal;
2318
import org.springframework.web.bind.annotation.GetMapping;
@@ -30,6 +25,7 @@
3025
import org.springframework.web.bind.annotation.RestController;
3126
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
3227

28+
import jakarta.servlet.http.HttpServletResponse;
3329
import jakarta.validation.Valid;
3430
import lombok.RequiredArgsConstructor;
3531

@@ -85,9 +81,10 @@ public BaseResponse<PageResponse<AlarmResponse>> list(
8581
}
8682

8783
@GetMapping("/status/stats")
88-
public BaseResponse<List<AlarmStatusStatsResponse>> getAlarmStatusStats() {
84+
public BaseResponse<AlarmStatusStatsResponse> getAlarmStatusStats() {
85+
var alarmStatusStats = alarmService.getAlarmStatusCounts();
8986
return BaseResponse.success(
90-
alarmService.getAlarmStatusCounts()
87+
AlarmStatusStatsResponse.from(alarmStatusStats)
9188
);
9289
}
9390
}
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
package org.controlcenter.alarm.presentation.dto;
22

3-
import org.controlcenter.alarm.domain.AlarmStatus;
43
import org.controlcenter.alarm.domain.AlarmStatusStats;
54

65
import lombok.Builder;
76

87
@Builder
98
public record AlarmStatusStatsResponse(
10-
AlarmStatus status,
11-
long count
9+
Long required,
10+
Long scheduled,
11+
Long inProgress,
12+
Long completed
1213
) {
1314
public static AlarmStatusStatsResponse from(AlarmStatusStats alarmStatusStats) {
1415
return AlarmStatusStatsResponse.builder()
15-
.status(alarmStatusStats.getStatus())
16-
.count(alarmStatusStats.getCount())
16+
.required(alarmStatusStats.getRequired())
17+
.scheduled(alarmStatusStats.getScheduled())
18+
.inProgress(alarmStatusStats.getInProgress())
19+
.completed(alarmStatusStats.getCompleted())
1720
.build();
1821
}
1922
}

0 commit comments

Comments
 (0)