10
10
import org .springframework .transaction .annotation .Transactional ;
11
11
12
12
import java .util .ArrayList ;
13
+ import java .util .HashMap ;
13
14
import java .util .List ;
15
+ import java .util .Map ;
14
16
15
17
@ Service
16
18
@ RequiredArgsConstructor
@@ -41,7 +43,8 @@ public SalesTransitionResponse getSalesTransition(String code) {
41
43
42
44
43
45
List <SalesTransitionResponse .SalesData > salesDataList = new ArrayList <>();
44
-
46
+ int districtCount = 0 ;
47
+ Map <Long , Long > map = new HashMap <>();
45
48
long [] quarterArr = new long []{20231L , 20232L , 20233L , 20234L ,20241L };
46
49
for (long quarter : quarterArr ){
47
50
@@ -50,21 +53,25 @@ public SalesTransitionResponse getSalesTransition(String code) {
50
53
51
54
SalesForTransitionData sales = listOfCity .stream ().filter (s -> s .getTownCode ().equals (code )).findFirst ().get ();
52
55
Long salesAtTown = sales .getSalesAtTown ();
56
+ map .put (quarter , sales .getSalesAtTown ()); // 분기 별 매출 저장
57
+
53
58
54
59
int rankAtCity = listOfCity .indexOf (sales ) + 1 ; // 20241분기 시 내 등수
55
60
long salesAvgOfCity = (long ) listOfCity .stream ().mapToLong (s -> s .getSalesAtTown ()).average ().getAsDouble ();
56
61
57
-
58
62
List <SalesForTransitionData > listOfDistrict = listOfCity .stream ().filter
59
63
(s -> s .getTownName ().split (" " )[0 ].equals (sales .getTownName ().split (" " )[0 ])).toList ();
60
64
65
+ districtCount = listOfDistrict .size ();
66
+
61
67
int rankAtDistrict = listOfDistrict .indexOf (sales ) + 1 ; // 20241분기 구 내 등수
62
68
long populationAvgOfDistrict = (long ) listOfDistrict .stream ().mapToLong (s -> s .getSalesAtTown ()).average ().getAsDouble ();
63
69
64
70
salesDataList .add (new SalesTransitionResponse .SalesData (sales .getTownName ().split (" " )[1 ] ,quarter , sales .getSalesAtTown (), rankAtCity , salesAvgOfCity , rankAtDistrict , populationAvgOfDistrict ));
65
71
}
66
-
67
- return SalesTransitionResponse .from (salesDataList );
72
+ long differenceFromPreviousQuarter = map .get (20241L ) - map .get (20234L );
73
+ long differenceFromPreviousYear = map .get (20241L ) - map .get (20231L );
74
+ return SalesTransitionResponse .from (salesDataList , districtCount , differenceFromPreviousQuarter , differenceFromPreviousYear );
68
75
}
69
76
70
77
public SalesTransitionByIndustryResponse getSalesTransitionByIndustry (String townCode , String industryName ) {
@@ -73,6 +80,9 @@ public SalesTransitionByIndustryResponse getSalesTransitionByIndustry(String tow
73
80
74
81
List <SalesTransitionByIndustryResponse .SalesData > salesDataList = new ArrayList <>();
75
82
83
+ int districtCount = 0 ;
84
+
85
+ Map <Long , Long > map = new HashMap <>();
76
86
long [] quarterArr = new long []{20231L , 20232L , 20233L , 20234L ,20241L };
77
87
for (long quarter : quarterArr ){
78
88
@@ -82,20 +92,25 @@ public SalesTransitionByIndustryResponse getSalesTransitionByIndustry(String tow
82
92
SalesForTransitionData sales = listOfCity .stream ().filter (s -> s .getTownCode ().equals (townCode )).findFirst ().get ();
83
93
Long salesAtTown = sales .getSalesAtTown ();
84
94
95
+ map .put (quarter , sales .getSalesAtTown ()); // 분기 별 매출 저장
96
+
85
97
int rankAtCity = listOfCity .indexOf (sales ) + 1 ; // 20241분기 시 내 등수
86
98
long salesAvgOfCity = (long ) listOfCity .stream ().mapToLong (s -> s .getSalesAtTown ()).average ().getAsDouble ();
87
99
88
100
89
101
List <SalesForTransitionData > listOfDistrict = listOfCity .stream ().filter
90
102
(s -> s .getTownName ().split (" " )[0 ].equals (sales .getTownName ().split (" " )[0 ])).toList ();
91
103
104
+ districtCount = listOfDistrict .size ();
105
+
92
106
int rankAtDistrict = listOfDistrict .indexOf (sales ) + 1 ; // 20241분기 구 내 등수
93
107
long populationAvgOfDistrict = (long ) listOfDistrict .stream ().mapToLong (s -> s .getSalesAtTown ()).average ().getAsDouble ();
94
108
95
109
salesDataList .add (new SalesTransitionByIndustryResponse .SalesData (sales .getTownName ().split (" " )[1 ], industryName , quarter , sales .getSalesAtTown (), rankAtCity , salesAvgOfCity , rankAtDistrict , populationAvgOfDistrict ));
96
110
}
97
-
98
- return SalesTransitionByIndustryResponse .from (salesDataList );
111
+ long differenceFromPreviousQuarter = map .get (20241L ) - map .get (20234L );
112
+ long differenceFromPreviousYear = map .get (20241L ) - map .get (20231L );
113
+ return SalesTransitionByIndustryResponse .from (salesDataList , districtCount , differenceFromPreviousQuarter , differenceFromPreviousYear );
99
114
}
100
115
101
116
public SalesRateByGenderAndIndustryResponse getSalesRateByGenderAndIndustry (String townCode , String industryName ) {
0 commit comments