|
|
|
@ -20,7 +20,10 @@ import org.springframework.stereotype.Repository;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDate; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
@Repository |
|
|
|
|
@Slf4j |
|
|
|
@ -35,8 +38,53 @@ public class DosFltPlanAreaQueryRepository {
|
|
|
|
|
QDosFltPlanArea qDosFltPlanArea = QDosFltPlanArea.dosFltPlanArea; |
|
|
|
|
QDosFltPlanBas qDosFltPlanBas = QDosFltPlanBas.dosFltPlanBas; |
|
|
|
|
|
|
|
|
|
// TODO :: CPT_CD가 추가 되면 사용할 것, 가장 신청이 많은 항공청 코드를 가져와야함
|
|
|
|
|
// String cptCd = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO :: CPT_CD의 데이터가 없음으로 임시 F0002처리
|
|
|
|
|
StringTemplate ifTemplate = Expressions.stringTemplate("CASE WHEN {0} IS NULL THEN 'F0002' ELSE {0} END", qDosFltPlanArea.cptCd); |
|
|
|
|
|
|
|
|
|
Map<String, Long> cptCountModels = query |
|
|
|
|
.select( |
|
|
|
|
Projections.bean( |
|
|
|
|
AllStatDataRS.CptCountModel.class, |
|
|
|
|
ifTemplate.as("cptName"), |
|
|
|
|
qDosFltPlanArea.count().as("count") |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
.from(qDosFltPlanArea) |
|
|
|
|
.groupBy(qDosFltPlanArea.cptCd) |
|
|
|
|
.fetch() |
|
|
|
|
.stream() |
|
|
|
|
.collect(Collectors.toMap( |
|
|
|
|
AllStatDataRS.CptCountModel::getCptName, |
|
|
|
|
AllStatDataRS.CptCountModel::getCount |
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
for(Map.Entry<String, Long> entry : cptCountModels.entrySet()){ |
|
|
|
|
|
|
|
|
|
String[] cptCdArray = entry.getKey().split(","); |
|
|
|
|
|
|
|
|
|
if(cptCdArray.length > 1) continue; |
|
|
|
|
|
|
|
|
|
for(String cptCd : cptCdArray){ |
|
|
|
|
Long newCount = cptCountModels.get(cptCd) + entry.getValue(); |
|
|
|
|
cptCountModels.put(cptCd, newCount); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 정렬
|
|
|
|
|
Long max = -1000L; |
|
|
|
|
String cptCd = ""; |
|
|
|
|
|
|
|
|
|
for(Map.Entry<String, Long> entry : cptCountModels.entrySet()){ |
|
|
|
|
Long value = entry.getValue(); |
|
|
|
|
|
|
|
|
|
if(value > max){ |
|
|
|
|
max = value; |
|
|
|
|
cptCd = entry.getKey(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integer year = LocalDate.now().getYear(); |
|
|
|
|
Integer month = LocalDate.now().getMonth().getValue(); |
|
|
|
@ -46,7 +94,7 @@ public class DosFltPlanAreaQueryRepository {
|
|
|
|
|
NumberTemplate<Long> todayTemplate = Expressions.numberTemplate(Long.class, "COUNT(CASE WHEN DATE({0}) = CURDATE() THEN 1 END)", qDosFltPlanBas.applyDt); |
|
|
|
|
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
// builder.and(qDosFltPlanArea.cptCd.eq(cptCd));
|
|
|
|
|
builder.and(qDosFltPlanArea.cptCd.contains(cptCd)); |
|
|
|
|
|
|
|
|
|
AllStatDataRS.GroupModel groupModel = query |
|
|
|
|
.select( |
|
|
|
@ -63,7 +111,7 @@ public class DosFltPlanAreaQueryRepository {
|
|
|
|
|
.on(qDosFltPlanArea.planSno.eq(qDosFltPlanBas.planSno)) |
|
|
|
|
.fetchOne(); |
|
|
|
|
|
|
|
|
|
// groupModel.setGroupName(cptCd);
|
|
|
|
|
groupModel.setGroupName(cptCd); |
|
|
|
|
|
|
|
|
|
return groupModel; |
|
|
|
|
} |
|
|
|
@ -80,8 +128,6 @@ public class DosFltPlanAreaQueryRepository {
|
|
|
|
|
|
|
|
|
|
for(StatisticsDosService.CompetentAgency competnetAgency : constants){ |
|
|
|
|
|
|
|
|
|
String cptCd = competnetAgency.name(); |
|
|
|
|
|
|
|
|
|
String format = this.getFormat(rq.getCategory()); |
|
|
|
|
StringTemplate formattedDate = Expressions.stringTemplate("DATE_FORMAT({0},{1})", qDosFltPlanBas.applyDt , format); |
|
|
|
|
|
|
|
|
@ -124,9 +170,10 @@ public class DosFltPlanAreaQueryRepository {
|
|
|
|
|
|
|
|
|
|
CptStatRS.CptStat cptStatModel = new CptStatRS.CptStat(); |
|
|
|
|
cptStatModel.setCptName(competnetAgency.getDesc()); |
|
|
|
|
cptStatModel.setCptCd(competnetAgency.name()); |
|
|
|
|
|
|
|
|
|
// TODO :: CPT_CD 나오기전 임시 코드
|
|
|
|
|
if(cptCd.equals("F0002")){ |
|
|
|
|
if(competnetAgency.name().equals("F0002")){ |
|
|
|
|
cptStatModel.setCountModel(countModel); |
|
|
|
|
cptStatModel.setCoordinateModels(coordinateModels); |
|
|
|
|
} |
|
|
|
|