Skip to content

Commit 2ba6484

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

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/main/java/com/dduckddak/domain/data/population/dto/PopulationTransitionResponse.java

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

55
public record PopulationTransitionResponse(
6-
List<PopulationData> populationList
6+
List<PopulationData> populationList,
7+
int districtCount,
8+
long differenceFromPreviousQuarter,
9+
long differenceFromPreviousYear
710
) {
811
public record PopulationData(
912
String townName,
@@ -13,12 +16,11 @@ public record PopulationData(
1316
long populationAvgOfCity,
1417
int rankAtDistrict,
1518
long populationAvgOfDistrict
16-
1719
) {
1820
}
1921

20-
public static PopulationTransitionResponse from(List<PopulationData> populations) {
21-
return new PopulationTransitionResponse(populations);
22+
public static PopulationTransitionResponse from(List<PopulationData> populations, int districtCount, long differenceFromPreviousQuarter, long differenceFromPreviousYear) {
23+
return new PopulationTransitionResponse(populations, districtCount, differenceFromPreviousQuarter, differenceFromPreviousYear);
2224
}
2325
}
2426

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

+11-4
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
import org.springframework.stereotype.Service;
1111
import org.springframework.transaction.annotation.Transactional;
1212

13-
import java.util.ArrayList;
14-
import java.util.Comparator;
15-
import java.util.List;
13+
import java.util.*;
1614

1715
@Service
1816
@RequiredArgsConstructor
@@ -78,6 +76,9 @@ public PopulationTransitionResponse getFloatingPopulationTransition(String code)
7876
List<Population> populations = populationRepository.findFloatingPopulationTransition(code);
7977
List<PopulationData> populationDataList = new ArrayList<>();
8078

79+
int districtCount = 0;
80+
81+
Map<Long , Long> map = new HashMap<>();
8182
long[] quarterArr = new long[]{20231L, 20232L, 20233L, 20234L ,20241L };
8283
for(long quarter : quarterArr){
8384

@@ -87,20 +88,26 @@ public PopulationTransitionResponse getFloatingPopulationTransition(String code)
8788
Population population = listOfCity.stream().filter(p -> p.getTown().getCode().equals(code)).findFirst().get();
8889
long populationOfTown = population.getTotalPopulation();
8990

91+
map.put(quarter, population.getTotalPopulation()); // 분기 별 매출 저장
92+
9093
int rankAtCity = listOfCity.indexOf(population) + 1; // 20241분기 시 내 등수
9194
long populationAvgOfCity = (long) listOfCity.stream().mapToLong(Population::getTotalPopulation).average().getAsDouble();
9295

9396

9497
List<Population> listOfDistrict = listOfCity.stream().filter
9598
(p -> p.getTown().getName().split(" ")[0].equals(population.getTown().getName().split(" ")[0])).toList();
9699

100+
districtCount = listOfDistrict.size();
101+
97102
int rankAtDistrict = listOfDistrict.indexOf(population) + 1; // 20241분기 구 내 등수
98103
long populationAvgOfDistrict = (long) listOfDistrict.stream().mapToLong(Population::getTotalPopulation).average().getAsDouble();
99104

100105
populationDataList.add(new PopulationData(population.getTown().getName().split(" ")[1] ,quarter, populationOfTown, rankAtCity, populationAvgOfCity, rankAtDistrict, populationAvgOfDistrict));
101106
}
107+
long differenceFromPreviousQuarter = map.get(20241L) - map.get(20234L);
108+
long differenceFromPreviousYear = map.get(20241L) - map.get(20231L);
102109

103-
return PopulationTransitionResponse.from(populationDataList);
110+
return PopulationTransitionResponse.from(populationDataList, districtCount, differenceFromPreviousQuarter, differenceFromPreviousYear);
104111

105112

106113
}

0 commit comments

Comments
 (0)