Skip to content

Commit d6ac6a0

Browse files
committed
행정동 별 매출 추이 api변경(구 수, 전분기 and 전년도 대비 증감)
1 parent 2ba6484 commit d6ac6a0

File tree

4 files changed

+34
-13
lines changed

4 files changed

+34
-13
lines changed

src/main/java/com/dduckddak/domain/data/population/service/PopulationService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public PopulationTransitionResponse getFloatingPopulationTransition(String code)
8888
Population population = listOfCity.stream().filter(p -> p.getTown().getCode().equals(code)).findFirst().get();
8989
long populationOfTown = population.getTotalPopulation();
9090

91-
map.put(quarter, population.getTotalPopulation()); // 분기 별 매출 저장
91+
map.put(quarter, population.getTotalPopulation()); // 분기 별 유동인구수 저장
9292

9393
int rankAtCity = listOfCity.indexOf(population) + 1; // 20241분기 시 내 등수
9494
long populationAvgOfCity = (long) listOfCity.stream().mapToLong(Population::getTotalPopulation).average().getAsDouble();

src/main/java/com/dduckddak/domain/data/sales/dto/SalesTransitionByIndustryResponse.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
import java.util.List;
44

55
public record SalesTransitionByIndustryResponse(
6-
List<SalesData> salesList
6+
List<SalesData> salesList,
7+
int districtCount,
8+
long differenceFromPreviousQuarter,
9+
long differenceFromPreviousYear
710
) {
811
public record SalesData(
912
String townName,
@@ -18,8 +21,8 @@ public record SalesData(
1821
) {
1922
}
2023

21-
public static SalesTransitionByIndustryResponse from(List<SalesData> sales) {
22-
return new SalesTransitionByIndustryResponse(sales);
24+
public static SalesTransitionByIndustryResponse from(List<SalesData> sales, int districtCount, long differenceFromPreviousQuarter, long differenceFromPreviousYear) {
25+
return new SalesTransitionByIndustryResponse(sales, districtCount, differenceFromPreviousQuarter, differenceFromPreviousYear);
2326
}
2427
}
2528

src/main/java/com/dduckddak/domain/data/sales/dto/SalesTransitionResponse.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
import java.util.List;
44

55
public record SalesTransitionResponse(
6-
List<SalesData> salesList
6+
List<SalesData> salesList,
7+
int districtCount,
8+
long differenceFromPreviousQuarter,
9+
long differenceFromPreviousYear
710
) {
811
public record SalesData(
912
String townName,
@@ -17,8 +20,8 @@ public record SalesData(
1720
) {
1821
}
1922

20-
public static SalesTransitionResponse from(List<SalesData> sales) {
21-
return new SalesTransitionResponse(sales);
23+
public static SalesTransitionResponse from(List<SalesData> sales, int districtCount, long differenceFromPreviousQuarter, long differenceFromPreviousYear) {
24+
return new SalesTransitionResponse(sales, districtCount, differenceFromPreviousQuarter, differenceFromPreviousYear);
2225
}
2326
}
2427

src/main/java/com/dduckddak/domain/data/sales/service/SalesService.java

+21-6
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
import org.springframework.transaction.annotation.Transactional;
1111

1212
import java.util.ArrayList;
13+
import java.util.HashMap;
1314
import java.util.List;
15+
import java.util.Map;
1416

1517
@Service
1618
@RequiredArgsConstructor
@@ -41,7 +43,8 @@ public SalesTransitionResponse getSalesTransition(String code) {
4143

4244

4345
List<SalesTransitionResponse.SalesData> salesDataList = new ArrayList<>();
44-
46+
int districtCount = 0;
47+
Map<Long , Long> map = new HashMap<>();
4548
long[] quarterArr = new long[]{20231L, 20232L, 20233L, 20234L ,20241L };
4649
for(long quarter : quarterArr){
4750

@@ -50,21 +53,25 @@ public SalesTransitionResponse getSalesTransition(String code) {
5053

5154
SalesForTransitionData sales = listOfCity.stream().filter(s -> s.getTownCode().equals(code)).findFirst().get();
5255
Long salesAtTown = sales.getSalesAtTown();
56+
map.put(quarter, sales.getSalesAtTown()); // 분기 별 매출 저장
57+
5358

5459
int rankAtCity = listOfCity.indexOf(sales) + 1; // 20241분기 시 내 등수
5560
long salesAvgOfCity = (long) listOfCity.stream().mapToLong(s -> s.getSalesAtTown()).average().getAsDouble();
5661

57-
5862
List<SalesForTransitionData> listOfDistrict = listOfCity.stream().filter
5963
(s -> s.getTownName().split(" ")[0].equals(sales.getTownName().split(" ")[0])).toList();
6064

65+
districtCount = listOfDistrict.size();
66+
6167
int rankAtDistrict = listOfDistrict.indexOf(sales) + 1; // 20241분기 구 내 등수
6268
long populationAvgOfDistrict = (long) listOfDistrict.stream().mapToLong(s -> s.getSalesAtTown()).average().getAsDouble();
6369

6470
salesDataList.add(new SalesTransitionResponse.SalesData(sales.getTownName().split(" ")[1] ,quarter, sales.getSalesAtTown(), rankAtCity, salesAvgOfCity, rankAtDistrict, populationAvgOfDistrict));
6571
}
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);
6875
}
6976

7077
public SalesTransitionByIndustryResponse getSalesTransitionByIndustry(String townCode, String industryName) {
@@ -73,6 +80,9 @@ public SalesTransitionByIndustryResponse getSalesTransitionByIndustry(String tow
7380

7481
List<SalesTransitionByIndustryResponse.SalesData> salesDataList = new ArrayList<>();
7582

83+
int districtCount = 0;
84+
85+
Map<Long , Long> map = new HashMap<>();
7686
long[] quarterArr = new long[]{20231L, 20232L, 20233L, 20234L ,20241L };
7787
for(long quarter : quarterArr){
7888

@@ -82,20 +92,25 @@ public SalesTransitionByIndustryResponse getSalesTransitionByIndustry(String tow
8292
SalesForTransitionData sales = listOfCity.stream().filter(s -> s.getTownCode().equals(townCode)).findFirst().get();
8393
Long salesAtTown = sales.getSalesAtTown();
8494

95+
map.put(quarter, sales.getSalesAtTown()); // 분기 별 매출 저장
96+
8597
int rankAtCity = listOfCity.indexOf(sales) + 1; // 20241분기 시 내 등수
8698
long salesAvgOfCity = (long) listOfCity.stream().mapToLong(s -> s.getSalesAtTown()).average().getAsDouble();
8799

88100

89101
List<SalesForTransitionData> listOfDistrict = listOfCity.stream().filter
90102
(s -> s.getTownName().split(" ")[0].equals(sales.getTownName().split(" ")[0])).toList();
91103

104+
districtCount = listOfDistrict.size();
105+
92106
int rankAtDistrict = listOfDistrict.indexOf(sales) + 1; // 20241분기 구 내 등수
93107
long populationAvgOfDistrict = (long) listOfDistrict.stream().mapToLong(s -> s.getSalesAtTown()).average().getAsDouble();
94108

95109
salesDataList.add(new SalesTransitionByIndustryResponse.SalesData(sales.getTownName().split(" ")[1], industryName, quarter, sales.getSalesAtTown(), rankAtCity, salesAvgOfCity, rankAtDistrict, populationAvgOfDistrict));
96110
}
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);
99114
}
100115

101116
public SalesRateByGenderAndIndustryResponse getSalesRateByGenderAndIndustry(String townCode, String industryName) {

0 commit comments

Comments
 (0)