From 318e03121f23ce617085ced42f600bada711e71d Mon Sep 17 00:00:00 2001 From: lkd9125 Date: Tue, 19 Sep 2023 10:41:22 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=ED=96=89=EC=8B=A4=EC=A0=81=20?= =?UTF-8?q?=ED=86=B5=EA=B3=84=20API=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 | 34 +++++++++++- .../main/dash/service/MainDashService.java | 23 +++++--- .../flt/FltPlanQueryRepository.java | 55 ++++++++++++++++++- 3 files changed, 100 insertions(+), 12 deletions(-) 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 b0fbe48e..505f8330 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 @@ -186,7 +186,37 @@ public class MainDashController { .body(new ErrorResponse("Server Error", "-1")); } - return ResponseEntity.ok().body(new SuccessResponse(result)); - } + return ResponseEntity.ok().body(new SuccessResponse>(result)); + } + + @GetMapping("/kac/stcs/plan-allow") + @ApiOperation(value = "김포공항, 비행승인 통계") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + @ApiImplicitParam(name = "yyyymm",value = "날짜", dataTypeClass = String.class) + public ResponseEntity kacPlanAllowStatistics(String yyyymm){ + + String[] formatParam = null; + + try { + if(yyyymm == null) yyyymm = ""; + formatParam = service.paramCheck(yyyymm); + } catch (NumberFormatException e) { + return ResponseEntity.status(HttpStatus.OK) + .body(new ErrorResponse(RSErrorCode.ER_PARAM)); + } + + List result = null; + + try { + result = service.mainKacStcsPlanAllow(yyyymm,formatParam); + } 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/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index e3500e1a..8039e96d 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 @@ -9,8 +9,6 @@ import java.util.stream.Collectors; import com.palnet.biz.api.bas.group.model.BasGroupModel; import com.palnet.biz.jpa.repository.pty.*; -import lombok.extern.slf4j.Slf4j; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -18,23 +16,22 @@ import org.springframework.stereotype.Service; import com.palnet.biz.api.main.dash.model.MainDashListModel; import com.palnet.biz.api.main.dash.model.MainDashStcsModel; -import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; +import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; @Service -@Slf4j public class MainDashService { private Logger logger = LoggerFactory.getLogger(getClass()); - @Autowired - private CtrCntrlBasRepository ctrCntrlBasRepository; - @Autowired private PtyDronQueryRepository ptyDronQueryRepository; @Autowired private PtyGroupQueryRepository ptyGroupQueryRepository; + + @Autowired + private FltPlanQueryRepository fltPlanQueryRepository; @Autowired private CtrCntrlQueryRepository query; @@ -108,6 +105,18 @@ public class MainDashService { public List mainKacDashStcsDay(String yyyymm, String[] formatParam){ List resultList = query.mainKacDashStcsDay(yyyymm, formatParam); + + return resultList; + } + + /** + * 김포공항, 비행승인 통계 + * @param yyyymm + * @return + */ + public List mainKacStcsPlanAllow(String yyyymm, String[] formatParam){ + + List resultList = fltPlanQueryRepository.mainKacStcsPlanAllow(yyyymm, formatParam); return resultList; } 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 d840457b..4793b4aa 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 @@ -1,11 +1,8 @@ package com.palnet.biz.jpa.repository.flt; import java.time.Instant; -import java.util.Date; import java.util.List; -import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; - import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; @@ -18,6 +15,7 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq; import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel; import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs; +import com.palnet.biz.api.main.dash.model.MainDashStcsModel; import com.palnet.biz.jpa.entity.FltPlanBas; import com.palnet.biz.jpa.entity.QComArcrftBas; import com.palnet.biz.jpa.entity.QComIdntfBas; @@ -33,11 +31,13 @@ import com.palnet.biz.jpa.entity.QPtyGroupBas; import com.palnet.comn.utils.DateUtils; import com.querydsl.core.BooleanBuilder; 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.JPAQueryFactory; @@ -666,4 +666,53 @@ public class FltPlanQueryRepository { return result; } + + /** + * 김포공항, 비행승인 통계 API + * @param yyyymm + * @return + */ + public List mainKacStcsPlanAllow(String yyyymm, String[] formatParam){ + + QFltPlanBas bas = QFltPlanBas.fltPlanBas; + + StringTemplate formattedDate = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})" + , bas.schFltStDt + , ConstantImpl.create(formatParam[0])); + + StringTemplate formattedDate2 = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})" + , bas.schFltStDt + , ConstantImpl.create(formatParam[1])); + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(bas.aprvlYn.eq("Y")); + if(yyyymm != null && yyyymm.length() > 0) builder.and(formattedDate.eq(yyyymm)); + + List result = query + .select( + Projections.bean( + MainDashStcsModel.class , + formattedDate2.as("typeCd"), + bas.count().as("count") + ) + ) + .from(bas) + .where(builder) + .groupBy(formattedDate2) + .fetch(); + + if(result.size() <= 0){ + + MainDashStcsModel node = new MainDashStcsModel(); + node.setCount(0); + node.setTypeCd("NoData"); + + result.add(node); + } + + return result; + } + } \ No newline at end of file