From 4323f77762a7d739ea2fd6e813c85dfe52a7eb2b Mon Sep 17 00:00:00 2001 From: lkd9125 Date: Mon, 18 Sep 2023 17:59:37 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=B0,=EC=9B=94,=EC=9D=BC=20=ED=86=B5?= =?UTF-8?q?=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 | 60 +++++++++++- .../main/dash/service/MainDashService.java | 93 +++++++++++++++++++ .../ctr/CtrCntrlQueryRepository.java | 40 ++++++++ 3 files changed, 192 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 dca97cce..448ae12c 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,5 +1,6 @@ package com.palnet.biz.api.main.dash.controller; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -167,7 +168,64 @@ public class MainDashController { } - + @GetMapping(value = "/kac/stcs/date") + @ApiOperation(value = "김포공항, 날짜 통계") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + @ApiImplicitParam(name = "yyyymm",value = "날짜", dataTypeClass = String.class) + public ResponseEntity kacDateStatistics(String yyyymm){ + if(yyyymm == null) yyyymm = ""; + + log.error("yyyyMM -> {}", yyyymm); + + String[] formatParam = null; + + try { + formatParam = service.paramCheck(yyyymm); + } catch (NumberFormatException e) { + return ResponseEntity.status(HttpStatus.OK) + .body(new ErrorResponse(RSErrorCode.ER_PARAM)); + } + + List result = null; + + try { + result = service.mainKacDashStcsDay(yyyymm,formatParam); + } catch (Exception e) { + // TODO: handle exception + + log.error("IGNORE : {}", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(new ErrorResponse("Server Error", "-1")); + } + + return ResponseEntity.ok().body(new SuccessResponse(result)); + } + +// public ResponseEntity stcsDay(String yyyymm) { +// List result = null; + +// // log.debug(yyyymm); + +// //입력값 검증 +// if(yyyymm == null || !(yyyymm.length() == 7) ) { + // return ResponseEntity.status(HttpStatus.OK) + // .body(new ErrorResponse(RSErrorCode.ER_PARAM)); +// } + +// try { + +// result = service.mainDashStcsDay(yyyymm); + + +// } 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 9783c4cc..d2f1ee95 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 @@ -8,6 +8,9 @@ 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; @@ -19,6 +22,7 @@ import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; @Service +@Slf4j public class MainDashService { private Logger logger = LoggerFactory.getLogger(getClass()); @@ -95,6 +99,95 @@ public class MainDashService { return resultList; } + + /** + * 김포공항, 날짜별 통계 + * @param yyyymm + * @return + */ + public List mainKacDashStcsDay(String yyyymm, String[] formatParam){ + + List resultList = query.mainKacDashStcsDay(yyyymm, formatParam); + + + + + return resultList; + } + + /** + * 파라미터 체크 + * 1. 연단위 검색 -> Parameter Null일 경우 + * 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우 + * 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우 + * 4. 일일단위 검색 -> Parameter 2023-09-01 등 한 날짜에 대한 검색 + * 이하 모든 데이터는 Exception 발생 + * @param yyyyMM + * @throws NumberFormatException + */ + public String[] paramCheck(String yyyymm) throws NumberFormatException{ + + String[] result = new String[2]; + String[] paramStrings = null; + + // 1. 연단위 검색 -> Parameter Null일 경우 + // 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우 + // 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우 + // 이하 모든 데이터는 Exception 발생 + + yyyymm = yyyymm.trim(); + + switch (yyyymm.length()) { + // 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우 + case 4: + Integer.parseInt(yyyymm.trim()); + + + result[0] = "%Y"; + result[1] = "%m"; + break; + // 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우 + case 7: + paramStrings = yyyymm.split("-"); + + if(paramStrings.length == 2){ + for(String param : paramStrings){ + Integer.parseInt(param.trim()); + } + + result[0] = "%Y-%m"; + result[1] = "%d"; + } else { + throw new NumberFormatException(); + } + + break; + case 10: + paramStrings = yyyymm.split("-"); + + if(paramStrings.length == 3){ + for(String param : paramStrings){ + Integer.parseInt(param.trim()); + } + + result[0] = "%Y-%m-%d"; + result[1] = ""; + } else { + throw new NumberFormatException(); + } + break; + default: // 1. 연단위 검색 -> Parameter Null일 경우 + + result[0] = ""; + result[1] = "%y"; + break; + } + + + return result; + } + + diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java index 9dc3c227..79041026 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java @@ -1669,4 +1669,44 @@ public List listCntrlHstry(String id){ // // return arcrftList; } + + /** + * 김포공항, 날짜별 통계 API + * @param yyyymm + * @return + */ + public List mainKacDashStcsDay(String yyyymm, String[] formatParam){ + QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; + + + + StringTemplate formattedDate = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})" + , bas.cntrlStDt + , ConstantImpl.create(formatParam[0])); + + StringTemplate formattedDate2 = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})" + , bas.cntrlStDt + , ConstantImpl.create(formatParam[1])); + + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(bas.statusCd.eq("99")); + if(yyyymm != null && yyyymm.length() > 0) builder.and(formattedDate.eq(yyyymm)); + + log.info("builder -> {}", builder); + + List result = query.select(Projections.bean(MainDashStcsModel.class , + formattedDate2.as("typeCd"), + bas.count().as("count") + )) + .from(bas) + .where(builder) + .groupBy(formattedDate2) + .fetch(); + + log.info("result -> {}", result); + return result; + } }