Skip to content

Commit f46d9de

Browse files
authored
Merge pull request #165 from Dokyeongyun/ft-220220-monitoringHistoryPaging
Ft 220220 monitoring history paging
2 parents d32315e + af2d9f2 commit f46d9de

File tree

17 files changed

+590
-167
lines changed

17 files changed

+590
-167
lines changed

src/main/java/root/core/domain/MonitoringResult.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ public MonitoringResult(Date date) {
2121
this.monitoringDate = DateUtils.format(date, "yyyyMMdd");
2222
this.monitoringTime = DateUtils.format(date, "HHmmss");
2323
}
24+
25+
public String getMonitoringDateTime() {
26+
return this.monitoringDate + this.monitoringTime;
27+
}
2428

2529
public abstract void convertUnit(FileSize fromUnit, FileSize toUnit, int round);
2630
}
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
package root.core.usecase.constracts;
22

33
import java.util.List;
4+
import java.util.Map;
45

56
import root.core.domain.MonitoringResult;
67
import root.utils.UnitUtils.FileSize;
78

89
public interface ReportUsecase {
9-
<T extends MonitoringResult> List<T> getMonitoringReportData(Class<T> clazz, String alias, FileSize unit, int round);
10+
<T extends MonitoringResult> List<T> getMonitoringReportData(Class<T> clazz, String alias, FileSize unit,
11+
int round);
12+
13+
<T extends MonitoringResult> Map<String, List<T>> getMonitoringReportDataByTime(Class<T> clazz, String alias,
14+
FileSize unit, int round, String inquiryDate);
15+
16+
<T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountByTime(Class<T> clazz, String alias,
17+
FileSize unit, int round, String inquiryDate);
18+
19+
<T extends MonitoringResult> Map<Integer, List<String>> getMonitoringReportTimesByTime(Class<T> clazz, String alias,
20+
FileSize unit, int round, String inquiryDate);
1021
}

src/main/java/root/core/usecase/implement/ReportUsecaseImpl.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package root.core.usecase.implement;
22

3+
import java.util.ArrayList;
34
import java.util.List;
5+
import java.util.Locale;
6+
import java.util.Map;
7+
import java.util.stream.Collectors;
48

59
import lombok.extern.slf4j.Slf4j;
610
import root.core.domain.MonitoringResult;
711
import root.core.repository.constracts.ReportRepository;
812
import root.core.usecase.constracts.ReportUsecase;
913
import root.utils.CsvUtils;
14+
import root.utils.DateUtils;
1015
import root.utils.UnitUtils.FileSize;
1116

1217
@Slf4j
@@ -21,6 +26,7 @@ public ReportUsecaseImpl(ReportRepository reportRepo) {
2126
@Override
2227
public <T extends MonitoringResult> List<T> getMonitoringReportData(Class<T> clazz, String alias, FileSize unit,
2328
int round) {
29+
2430
List<T> result = null;
2531

2632
try {
@@ -37,4 +43,55 @@ public <T extends MonitoringResult> List<T> getMonitoringReportData(Class<T> cla
3743

3844
return result;
3945
}
46+
47+
@Override
48+
public <T extends MonitoringResult> Map<String, List<T>> getMonitoringReportDataByTime(Class<T> clazz, String alias,
49+
FileSize unit, int round, String inquiryDate) {
50+
51+
return getMonitoringReportData(clazz, alias, unit, round)
52+
.stream()
53+
.filter(m -> inquiryDate.equals(m.getMonitoringDate()))
54+
.collect(Collectors.groupingBy(m -> m.getMonitoringDateTime(),
55+
Collectors.mapping(m -> m, Collectors.toList())));
56+
}
57+
58+
@Override
59+
public <T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountByTime(Class<T> clazz,
60+
String alias, FileSize unit, int round, String inquiryDate) {
61+
62+
Map<Integer, Long> result = getMonitoringReportDataByTime(clazz, alias, unit, round, inquiryDate)
63+
.keySet()
64+
.stream()
65+
.collect(Collectors.groupingBy(
66+
m -> Integer.parseInt(DateUtils.convertDateFormat("yyyyMMddHHmmss", "HH", m, Locale.KOREA)),
67+
Collectors.counting()));
68+
69+
for (int i = 0; i < 24; i++) {
70+
if (!result.containsKey(i)) {
71+
result.put(i, 0L);
72+
}
73+
}
74+
75+
return result;
76+
}
77+
78+
@Override
79+
public <T extends MonitoringResult> Map<Integer, List<String>> getMonitoringReportTimesByTime(Class<T> clazz,
80+
String alias, FileSize unit, int round, String inquiryDate) {
81+
82+
Map<Integer, List<String>> result = getMonitoringReportDataByTime(clazz, alias, unit, round, inquiryDate)
83+
.keySet()
84+
.stream()
85+
.collect(Collectors.groupingBy(
86+
m -> Integer.parseInt(DateUtils.convertDateFormat("yyyyMMddHHmmss", "HH", m, Locale.KOREA)),
87+
Collectors.mapping(m -> m, Collectors.toList())));
88+
89+
for (int i = 0; i < 24; i++) {
90+
if (!result.containsKey(i)) {
91+
result.put(i, new ArrayList<>());
92+
}
93+
}
94+
95+
return result;
96+
}
4097
}

0 commit comments

Comments
 (0)