11package root .core .usecase .implement ;
22
3+ import java .util .ArrayList ;
34import java .util .List ;
5+ import java .util .Locale ;
6+ import java .util .Map ;
7+ import java .util .stream .Collectors ;
48
59import lombok .extern .slf4j .Slf4j ;
610import root .core .domain .MonitoringResult ;
711import root .core .repository .constracts .ReportRepository ;
812import root .core .usecase .constracts .ReportUsecase ;
913import root .utils .CsvUtils ;
14+ import root .utils .DateUtils ;
1015import 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