1
1
package com .dduckddak .domain .data .service ;
2
2
3
- import com .dduckddak .domain .data .dto .SalesTop10OfIndustryResponse ;
4
- import com .dduckddak .domain .data .dto .SalesTop10Response ;
5
- import com .dduckddak .domain .data .dto .TimelyDto ;
3
+ import com .dduckddak .domain .data .dto .*;
4
+ import com .dduckddak .domain .data .model .Population ;
6
5
import com .dduckddak .domain .data .repository .sales .SalesRepository ;
7
6
import com .dduckddak .domain .town .dto .SalesResponse ;
8
7
import lombok .RequiredArgsConstructor ;
9
8
import lombok .extern .slf4j .Slf4j ;
10
9
import org .springframework .stereotype .Service ;
11
10
import org .springframework .transaction .annotation .Transactional ;
12
11
12
+ import java .util .ArrayList ;
13
13
import java .util .List ;
14
14
15
15
@ Service
@@ -35,4 +35,35 @@ public List<SalesTop10Response> getSalesTop10(String orderCriteria) {
35
35
public List <SalesTop10OfIndustryResponse > getSalesTop10OfIndustry (String name , String orderCriteria ) {
36
36
return salesRepository .findSalesTop10OfIndustry (name , orderCriteria );
37
37
}
38
+
39
+ public SalesTransitionResponse getSalesTransition (String code ) {
40
+ List <SalesForTransitionData > salesForTransitionData = salesRepository .findSalesForTransitionData ();
41
+
42
+
43
+ List <SalesTransitionResponse .SalesData > salesDataList = new ArrayList <>();
44
+
45
+ long [] quarterArr = new long []{20241L , 20234L , 20233L , 20232L , 20231L };
46
+ for (long quarter : quarterArr ){
47
+
48
+ List <SalesForTransitionData > listOfCity = salesForTransitionData .stream ().filter
49
+ (s -> s .getQuarter ().equals (quarter )).toList ();
50
+
51
+ SalesForTransitionData sales = listOfCity .stream ().filter (s -> s .getTownCode ().equals (code )).findFirst ().get ();
52
+ Long salesAtTown = sales .getSalesAtTown ();
53
+
54
+ int rankAtCity = listOfCity .indexOf (salesAtTown ) + 1 ; // 20241분기 시 내 등수
55
+ long salesAvgOfCity = (long ) listOfCity .stream ().mapToLong (s -> s .getSalesAtTown ()).average ().getAsDouble ();
56
+
57
+
58
+ List <SalesForTransitionData > listOfDistrict = listOfCity .stream ().filter
59
+ (s -> s .getTownName ().split (" " )[0 ].equals (sales .getTownName ().split (" " )[0 ])).toList ();
60
+
61
+ int rankAtDistrict = listOfDistrict .indexOf (salesAtTown ) + 1 ; // 20241분기 구 내 등수
62
+ long populationAvgOfDistrict = (long ) listOfDistrict .stream ().mapToLong (s -> s .getSalesAtTown ()).average ().getAsDouble ();
63
+
64
+ salesDataList .add (new SalesTransitionResponse .SalesData (quarter , sales .getSalesAtTown (), rankAtCity , salesAvgOfCity , rankAtDistrict , populationAvgOfDistrict ));
65
+ }
66
+
67
+ return SalesTransitionResponse .from (salesDataList );
68
+ }
38
69
}
0 commit comments