From f709d99133c204b7bb9a463dd80cdf1da26ac76a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Tue, 14 Nov 2023 18:18:19 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EB=A9=94=EC=9D=B8=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=9D=BC=EC=9D=BC=EB=B9=84=ED=96=89=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dash/controller/MainDashController.java | 29 ++++++- .../main/dash/model/MainCurrentStcsModel.java | 15 ++++ .../main/dash/service/MainDashService.java | 64 +++++++++++++-- .../service/MainStatisticsService.java | 2 +- .../flt/FltPlanQueryRepository.java | 78 +++++++++++++++++-- 5 files changed, 174 insertions(+), 14 deletions(-) create mode 100644 pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainCurrentStcsModel.java diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java index fe706dce..8b867e0b 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java @@ -1,8 +1,11 @@ package com.palnet.biz.api.main.dash.controller; +import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -48,7 +51,7 @@ public class MainDashController { @ApiImplicitParam(name = "yyyymm",value = "날짜", dataTypeClass = String.class) public ResponseEntity stcsDay(String yyyymm) { List result = null; - + // log.debug(yyyymm); //입력값 검증 @@ -300,7 +303,29 @@ public class MainDashController { return ResponseEntity.ok().body(new SuccessResponse>(result)); } - + @GetMapping("/current/flight-plan") + @ApiOperation(value = "김포공항, 비정상상황 비행 통계") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + @ApiImplicitParams({ + @ApiImplicitParam(name = "date",value = "날짜", dataTypeClass = String.class), + @ApiImplicitParam(name = "type",value = "날짜형식", dataTypeClass = String.class) + }) + public ResponseEntity currentFlightPlan(@RequestParam(required = false) String groupId){ + + log.warn("groupId => {}", groupId); + List result = new ArrayList<>(); + try { + result = service.currentFlightPlan(groupId); + } catch (Exception e){ + log.error("IGNORE : {}", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(new ErrorResponse("Server Error", "-1")); + } + + + + return ResponseEntity.ok().body(new SuccessResponse>(result)); + } diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainCurrentStcsModel.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainCurrentStcsModel.java new file mode 100644 index 00000000..9259902f --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainCurrentStcsModel.java @@ -0,0 +1,15 @@ +package com.palnet.biz.api.main.dash.model; + +import lombok.Data; + +import java.util.List; + +@Data +public class MainCurrentStcsModel { + + private List stcsValues; + + private Double percent; + + +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index 7fcc26d2..cc354f6e 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java @@ -1,14 +1,15 @@ package com.palnet.biz.api.main.dash.service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import com.palnet.biz.api.bas.group.model.BasGroupModel; +import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel; +import com.palnet.biz.api.main.statistics.service.MainStatisticsService; +import com.palnet.biz.jpa.entity.FltPlanBas; import com.palnet.biz.jpa.repository.pty.*; +import com.querydsl.core.BooleanBuilder; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; @@ -37,7 +38,10 @@ public class MainDashService { private FltPlanQueryRepository fltPlanQueryRepository; @Autowired - private CtrCntrlQueryRepository query; + private CtrCntrlQueryRepository query; + + @Autowired + private MainStatisticsService mainStatisticsService; @@ -217,6 +221,54 @@ public class MainDashService { } return result; - } + } + + + + public List currentFlightPlan(String groupId){ + final int sumCount = 2; // 2번은 합계 + + boolean authCheck = mainStatisticsService.authCheck(groupId); + + String[] dateCate = {"-2", "-1", "0", "1"}; + + List result = new ArrayList<>(); + + for(String cate : dateCate){ + List fltPlanBas = fltPlanQueryRepository.currentStcs(groupId, authCheck, cate); + + int count = fltPlanBas.size(); + Long aprvnCount = fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count(); + + List stcsValues = Arrays.asList(count, aprvnCount.intValue(), count); + + MainCurrentStcsModel node = new MainCurrentStcsModel(); + node.setStcsValues(stcsValues); + + result.add(node); + } + + for(int i = 0; i < result.size(); i++){ + + if(i == 0) continue;; + + int prevSum = result.get(i-1).getStcsValues().get(sumCount); // 전날 합계 [기준] + int sum = result.get(i).getStcsValues().get(sumCount); // 합계 + + double percent = 0; + + if(prevSum != 0){ + percent = ((sum - prevSum) / (double) prevSum) * 100; + } + + result.get(i).setPercent(percent); + } + + result.remove(0); + + return result; + } + + } diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java b/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java index aa33c2f2..cb16a98a 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java @@ -111,7 +111,7 @@ public class MainStatisticsService { * @param groupId * @return */ - private Boolean authCheck(String groupId){ + public Boolean authCheck(String groupId){ if(groupId == null || groupId.equals("")) return false; diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java index 64168ba6..135849fc 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java @@ -7,6 +7,8 @@ import java.time.ZoneId; import java.util.List; import java.util.Optional; +import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel; +import com.querydsl.core.types.dsl.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; @@ -54,10 +56,6 @@ import com.querydsl.core.group.GroupBy; import com.querydsl.core.types.ConstantImpl; import com.querydsl.core.types.ExpressionUtils; import com.querydsl.core.types.Projections; -import com.querydsl.core.types.dsl.CaseBuilder; -import com.querydsl.core.types.dsl.DateTemplate; -import com.querydsl.core.types.dsl.Expressions; -import com.querydsl.core.types.dsl.StringTemplate; import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; @@ -1817,8 +1815,8 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); builder.and(qFltPlanBas.aprvlYn.eq("Y")); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); - if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( @@ -1847,4 +1845,74 @@ public class FltPlanQueryRepository { return result; } + + public List currentStcs(String groupId, boolean authCheck, String cate){ + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; + + BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas); + + + + List stcsValues = query + .select( + Projections.bean( + FltPlanBas.class, + qFltPlanBas.planSno, + qFltPlanBas.aprvlYn + ) + ) + .from(qFltPlanBas) + .where(builder) + .fetch(); + + return stcsValues; + } + + private BooleanBuilder getCurrentBooleanBuilder(String groupId, boolean authCheck, String cate, QFltPlanBas qFltPlanBas){ + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); + + String dateFormat = "%Y-%m-%d"; + BooleanExpression dateExpression = null; + switch (cate){ + case "-2" : + + + dateExpression = + Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d") + .eq(LocalDate.now().minusDays(2).toString()); + + builder.and(dateExpression); + + break; + case "-1": + dateExpression = + Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d") + .eq(LocalDate.now().minusDays(1).toString()); + + builder.and(dateExpression); + break; + + case "0": + dateExpression = + Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d") + .eq(LocalDate.now().toString()); + builder.and(dateExpression); + break; + + case "1": + dateExpression = + Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d") + .eq(LocalDate.now().plusDays(1).toString()); + + builder.and(dateExpression); + break; + } + + return builder; + } + + } \ No newline at end of file From a03ff7a5167c50d0d61fde74c2e8c641b5c88765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Tue, 14 Nov 2023 18:28:03 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/api/main/dash/service/MainDashService.java | 2 +- .../biz/jpa/repository/flt/FltPlanQueryRepository.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index 40fe3f4f..2b6c9acf 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java @@ -268,7 +268,7 @@ public class MainDashService { List result = new ArrayList<>(); for(String cate : dateCate){ - List fltPlanBas = fltPlanQueryRepository.currentStcs(groupId, authCheck, cate); + List fltPlanBas = fltPlanQueryRepository.currentFlightStcs(groupId, authCheck, cate); int count = fltPlanBas.size(); Long aprvnCount = fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count(); diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java index 64911f70..d7fd7a69 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java @@ -1854,7 +1854,14 @@ public class FltPlanQueryRepository { return result; } - public List currentStcs(String groupId, boolean authCheck, String cate){ + /** + * 일일 비행데이터 + * @param groupId + * @param authCheck + * @param cate + * @return + */ + public List currentFlightStcs(String groupId, boolean authCheck, String cate){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas); From a30bd26ccd07aa47793044736a71009e899e717b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Wed, 15 Nov 2023 10:41:56 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=ED=95=A9=EA=B3=84=20=3D>=20=EC=8A=B9?= =?UTF-8?q?=EC=9D=B8=EB=90=9C=20=EB=B9=84=ED=96=89=EA=B3=84=ED=9A=8D?= =?UTF-8?q?=EC=84=9C=20=EA=B1=B4=EC=88=98=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/palnet/biz/api/main/dash/service/MainDashService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index 2b6c9acf..3f5a95a5 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java @@ -271,9 +271,9 @@ public class MainDashService { List fltPlanBas = fltPlanQueryRepository.currentFlightStcs(groupId, authCheck, cate); int count = fltPlanBas.size(); - Long aprvnCount = fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count(); + int aprvnCount = (int)fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count(); - List stcsValues = Arrays.asList(count, aprvnCount.intValue(), count); + List stcsValues = Arrays.asList(count, aprvnCount, aprvnCount); MainCurrentStcsModel node = new MainCurrentStcsModel(); node.setStcsValues(stcsValues); From 14b2dab58a7933db011ba34b3a8c8118ffb3b50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Wed, 15 Nov 2023 14:24:29 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=EC=9E=84=ED=8F=AC=ED=8A=B8=EB=AC=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/palnet/biz/api/main/dash/service/MainDashService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index e723fe63..51fb56a5 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java @@ -1,6 +1,7 @@ package com.palnet.biz.api.main.dash.service; import java.util.*; +import java.util.stream.Collectors; import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; From 077cc56319a013e36f407f4ffcd8adef7717114c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Wed, 15 Nov 2023 15:12:32 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=EC=8A=A4=EC=9B=A8=EA=B1=B0=20=EC=96=B4?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/api/main/dash/controller/MainDashController.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java index 92b74612..cf4bde4b 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java @@ -340,6 +340,12 @@ public class MainDashController { } @GetMapping("/current/flight-warn") + @ApiOperation(value = "일일 비정상상황 통계") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + @ApiImplicitParams({ + @ApiImplicitParam(name = "date",value = "날짜", dataTypeClass = String.class), + @ApiImplicitParam(name = "type",value = "날짜형식", dataTypeClass = String.class) + }) public ResponseEntity currentFlightWarn(@RequestParam(required = false) String groupId){ List result = new ArrayList<>(); @@ -356,7 +362,7 @@ public class MainDashController { } @GetMapping("/current/flight-plan") - @ApiOperation(value = "김포공항, 비정상상황 비행 통계") + @ApiOperation(value = "일일 비행계획 통계") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") @ApiImplicitParams({ @ApiImplicitParam(name = "date",value = "날짜", dataTypeClass = String.class),