22
33import com .querydsl .core .Tuple ;
44import com .querydsl .core .types .EntityPath ;
5+ import com .querydsl .core .types .Predicate ;
56import com .querydsl .core .types .dsl .EntityPathBase ;
67import com .querydsl .core .types .dsl .StringTemplate ;
78import com .querydsl .jpa .impl .JPAQueryFactory ;
9+ import org .myteam .server .improvement .domain .ImprovementStatus ;
10+ import org .myteam .server .improvement .domain .QImprovement ;
811import org .myteam .server .member .domain .MemberStatus ;
912import org .myteam .server .report .domain .ReportType ;
1013
1114import java .time .LocalDateTime ;
1215import java .util .HashMap ;
1316import java .util .List ;
1417import java .util .Map ;
15-
1618import static org .myteam .server .admin .dto .AdminDashBoardResponseDto .ResponseStatic ;
17- import static org .myteam .server .admin .entity .QAdminChangeLog .adminChangeLog ;
19+ import static org .myteam .server .improvement .domain .QImprovement .*;
20+ import static org .myteam .server .inquiry .domain .QInquiry .inquiry ;
21+ import static org .myteam .server .member .entity .QMember .member ;
1822import static org .myteam .server .report .domain .QReport .report ;
1923
2024
@@ -68,35 +72,33 @@ public static ResponseStatic createStaticQuery(EntityPath<?> target,
6872
6973 }
7074
71- public static ResponseStatic createStaticQuery (List <LocalDateTime > dateList
72- , JPAQueryFactory queryFactory , MemberStatus memberStatus ) {
75+ public static ResponseStatic createImprovementStaticQuery (List <LocalDateTime > dateList
76+ ,StaticDataType staticDataType , JPAQueryFactory queryFactory ) {
7377
7478 LocalDateTime staticStartTime = dateList .get (0 );
7579 LocalDateTime staticEndTime = dateList .get (1 );
7680 LocalDateTime staticStartTimePast = dateList .get (2 );
7781 LocalDateTime staticEndTimePast = dateList .get (3 );
7882
79- Long currentCount = queryFactory .select (adminChangeLog .count ())
80- .from (adminChangeLog )
81- .where (StaticUtil .betweenStaticTime (staticEndTime , staticStartTime , adminChangeLog ),
82- adminChangeLog . memberStatus . eq ( memberStatus ))
83+ Long currentCount = queryFactory .select (improvement .count ())
84+ .from (improvement )
85+ .where (StaticUtil .betweenStaticTime (staticEndTime , staticStartTime , improvement ),
86+ improvementProcessCond ( staticDataType ))
8387 .fetch ()
8488 .get (0 );
85- Long pastCount = queryFactory .select (report .count ())
86- .from (report )
87- .where (StaticUtil .betweenStaticTime (staticEndTimePast , staticStartTimePast , adminChangeLog ),
88- adminChangeLog . memberStatus . eq ( memberStatus ))
89+ Long pastCount = queryFactory .select (improvement .count ())
90+ .from (improvement )
91+ .where (StaticUtil .betweenStaticTime (staticEndTimePast , staticStartTimePast , improvement ),
92+ improvementProcessCond ( staticDataType ))
8993 .fetch ()
9094 .get (0 );
9195
92- Long totCount = queryFactory .select (adminChangeLog .count ())
93- .from (adminChangeLog )
94- .where (adminChangeLog . memberStatus . eq ( memberStatus ))
96+ Long totCount = queryFactory .select (improvement .count ())
97+ .from (improvement )
98+ .where (improvementProcessCond ( staticDataType ))
9599 .fetch ()
96100 .get (0 );
97-
98101 int percent = StaticUtil .makeStaticPercent (currentCount , pastCount );
99-
100102 return ResponseStatic .builder ()
101103 .currentCount (currentCount )
102104 .pastCount (pastCount )
@@ -105,47 +107,80 @@ public static ResponseStatic createStaticQuery(List<LocalDateTime> dateList
105107 .build ();
106108 }
107109
108- public static ResponseStatic createStaticQuery (List <LocalDateTime > dateList , JPAQueryFactory queryFactory ,
109- AdminControlType adminControlType , StaticDataType staticDataType ) {
110+ public static ResponseStatic createInquiryStaticQuery (List <LocalDateTime > dateList
111+ , Boolean isAnswered , JPAQueryFactory queryFactory ) {
110112
111113 LocalDateTime staticStartTime = dateList .get (0 );
112114 LocalDateTime staticEndTime = dateList .get (1 );
113115 LocalDateTime staticStartTimePast = dateList .get (2 );
114116 LocalDateTime staticEndTimePast = dateList .get (3 );
115117
116- Long current_count = queryFactory
117- .select (adminChangeLog .count ())
118- .from (adminChangeLog )
119- .where (StaticUtil .betweenStaticTime (staticEndTime , staticStartTime , adminChangeLog ),
120- (adminChangeLog .adminControlType .eq (adminControlType )),
121- (adminChangeLog .staticDataType .eq (staticDataType )))
122- .fetch ().get (0 );
123-
124- Long past_count = queryFactory
125- .select (adminChangeLog .count ())
126- .from (adminChangeLog )
127- .where (StaticUtil .betweenStaticTime (staticEndTimePast , staticStartTimePast , adminChangeLog ),
128- (adminChangeLog .adminControlType .eq (adminControlType ))
129- , (adminChangeLog .staticDataType .eq (staticDataType )))
130- .fetch ().get (0 );
131-
132- Long tot_count = queryFactory .select (adminChangeLog .count ())
133- .from (adminChangeLog )
134- .where ((adminChangeLog .adminControlType .eq (adminControlType ))
135- .and (adminChangeLog .staticDataType .eq (staticDataType )))
136- .fetch ().get (0 );
137-
138- int percent = StaticUtil .makeStaticPercent (current_count , past_count );
139-
140- return ResponseStatic
141- .builder ()
142- .currentCount (current_count )
143- .pastCount (past_count )
144- .totCount (tot_count )
118+ Long currentCount = queryFactory .select (inquiry .count ())
119+ .from (inquiry )
120+ .where (StaticUtil .betweenStaticTime (staticEndTime , staticStartTime ,inquiry ),
121+ inquiry .isAdminAnswered .eq (isAnswered ))
122+ .fetch ()
123+ .get (0 );
124+ Long pastCount = queryFactory .select (inquiry .count ())
125+ .from (inquiry )
126+ .where (StaticUtil .betweenStaticTime (staticEndTimePast , staticStartTimePast ,inquiry ),
127+ inquiry .isAdminAnswered .eq (isAnswered ))
128+ .fetch ()
129+ .get (0 );
130+
131+ Long totCount = queryFactory .select (inquiry .count ())
132+ .from (inquiry )
133+ .where (inquiry .isAdminAnswered .eq (isAnswered ))
134+ .fetch ()
135+ .get (0 );
136+ int percent = StaticUtil .makeStaticPercent (currentCount , pastCount );
137+ return ResponseStatic .builder ()
138+ .currentCount (currentCount )
139+ .pastCount (pastCount )
140+ .totCount (totCount )
145141 .percent (percent )
146142 .build ();
147143 }
148144
145+ public static ResponseStatic createMemberInquiryStaticQuery (List <LocalDateTime > dateList
146+ , Boolean isMember , JPAQueryFactory queryFactory ){
147+
148+ LocalDateTime staticStartTime = dateList .get (0 );
149+ LocalDateTime staticEndTime = dateList .get (1 );
150+ LocalDateTime staticStartTimePast = dateList .get (2 );
151+ LocalDateTime staticEndTimePast = dateList .get (3 );
152+
153+ Long currentCount = queryFactory .select (inquiry .count ())
154+ .from (inquiry )
155+ .join (member )
156+ .on (member .eq (inquiry .member ))
157+ .where (StaticUtil .betweenStaticTime (staticEndTime , staticStartTime ,inquiry ),
158+ inquiryIsMember (isMember ))
159+ .fetch ()
160+ .get (0 );
161+ Long pastCount =queryFactory .select (inquiry .count ())
162+ .from (inquiry )
163+ .join (member )
164+ .on (member .eq (inquiry .member ))
165+ .where (StaticUtil .betweenStaticTime (staticEndTimePast , staticStartTimePast ,inquiry ),
166+ inquiryIsMember (isMember ))
167+ .fetch ()
168+ .get (0 );
169+ Long totCount = queryFactory .select (inquiry .count ())
170+ .from (inquiry )
171+ .join (member )
172+ .on (member .eq (inquiry .member ))
173+ .where (inquiryIsMember (isMember ))
174+ .fetch ()
175+ .get (0 );
176+ int percent = StaticUtil .makeStaticPercent (currentCount , pastCount );
177+ return ResponseStatic .builder ()
178+ .currentCount (currentCount )
179+ .pastCount (pastCount )
180+ .totCount (totCount )
181+ .percent (percent )
182+ .build ();
183+ }
149184
150185 public static ResponseStatic createStaticQuery (DateType dateType , List <LocalDateTime > dateList
151186 , JPAQueryFactory queryFactory , ReportType reportType ) {
@@ -196,5 +231,22 @@ public static ResponseStatic createStaticQuery(DateType dateType, List<LocalDate
196231 .build ();
197232 }
198233
234+ private static Predicate inquiryIsMember (boolean isMember ){
235+ if (isMember ){
236+ return member .nickname .isNotNull ();
237+ }
238+ return member .nickname .isNull ();
239+ }
240+
241+ private static Predicate improvementProcessCond (StaticDataType staticDataType ){
242+ if (staticDataType .equals (StaticDataType .ImprovementPending )){
243+ return improvement .improvementStatus .eq (ImprovementStatus .PENDING );
244+ }
245+ if (staticDataType .equals (StaticDataType .ImprovementReceived )){
246+ return improvement .improvementStatus .eq (ImprovementStatus .RECEIVED );
247+ }
248+ return improvement .improvementStatus .eq (ImprovementStatus .COMPLETED );
249+ }
250+
199251
200252}
0 commit comments