From 7006e88adebb61109b4ac27caf130db964696df3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Thu, 9 Nov 2023 18:48:42 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=EC=A0=95=EC=83=81=20=EC=83=81?= =?UTF-8?q?=ED=99=A9=20=EC=83=81=EB=8B=A8=20=EA=B3=A0=EC=A0=95=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=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 | 63 ++++++++++++++++++- .../main/dash/service/MainDashService.java | 23 +++++++ .../palnet/biz/jpa/entity/type/WarnType.java | 31 +++++++++ .../ctr/CtrCntrlQueryRepository.java | 36 +++++++++++ 4 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 pav-server/src/main/java/com/palnet/biz/jpa/entity/type/WarnType.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 7b2c8a12..f833185f 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 @@ -305,7 +305,7 @@ public class MainDashController { @GetMapping("/stcs/flight-static") @ApiOperation(value = "비행통계 상단 데이터[DB전체 통계데이터]") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") - public ResponseEntity statisticsStatic(){ + public ResponseEntity fltStcsStatic(){ List result = null; @@ -330,7 +330,7 @@ public class MainDashController { @ApiImplicitParam(name = "cate",value = "비행시간,거리,횟수[TIME]", dataTypeClass = String.class), @ApiImplicitParam(name = "type",value = "날짜형식[month]", dataTypeClass = String.class) }) - public ResponseEntity statistics(@RequestParam String cate, String date, @PathVariable String type){ + public ResponseEntity fltStcs(@RequestParam String cate, String date, @PathVariable String type){ log.warn("cate => {}, date => {}, type => {}", cate, date, type); FlightStcsModel result = new FlightStcsModel(); @@ -356,5 +356,64 @@ public class MainDashController { return ResponseEntity.ok().body(new SuccessResponse(result)); } + + + + @GetMapping("/stcs/warn-static") + @ApiOperation(value = "비정상 상황 상단 데이터[DB전체 통계데이터]") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + public ResponseEntity warnStcsStatic(){ + + List result = null; + + try { + result = service.getWarnStaticStcs(); + + log.warn("result => {}", result); + } 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)); + } + + @GetMapping("/stcs/warn/{type}") + @ApiOperation(value = "비정상상황 cate = ['PLAN' ,'ALTITUDE', 'CRASH'], type=['year','month','day','one-day']") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + @ApiImplicitParams({ + @ApiImplicitParam(name = "date",value = "날짜[2023]", dataTypeClass = String.class), + @ApiImplicitParam(name = "cate",value = "비행시간,거리,횟수[TIME]", dataTypeClass = String.class), + @ApiImplicitParam(name = "type",value = "날짜형식[month]", dataTypeClass = String.class) + }) + public ResponseEntity warnStcs(@RequestParam String cate, String date, @PathVariable String type){ + log.warn("cate => {}, date => {}, type => {}", cate, date, type); + + FlightStcsModel result = new FlightStcsModel(); + + try { + String[] formatParam = null; + + if(date == null) date = ""; + formatParam = service.paramCheck(date,type); + + List graphData = service.fltStatics(cate, date, formatParam); + List topData = service.fltTopStatics(cate, date, formatParam); + + result.setGraphData(graphData); + result.setTopData(topData); + + log.warn("result => {}", result); + } 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 ad87d60e..4a546d66 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 @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; import com.palnet.biz.api.main.dash.model.FlightStaticStcsModel; import com.palnet.biz.api.main.dash.model.MainDashListModel; import com.palnet.biz.api.main.dash.model.MainDashStcsModel; +import com.palnet.biz.jpa.entity.type.WarnType; import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; @@ -289,4 +290,26 @@ public class MainDashService { return resultList; } + + /** + * 비행관련 고정 통계, 항상 DB 전체값에서 통계진행할것임 + * @return + */ + public List getWarnStaticStcs(){ + + // TODO:: 비행경로이탈, 고도이탈, 충돌위험 임시코드 + String[] cate = {"PLAN" ,"ALTITUDE", "CRASH"}; + // String[] cate = {WarnType.PLAN.getValue() ,WarnType.ALTITUDE.getValue(), WarnType.CRASH.getValue()}; + + List result = new ArrayList<>(); + + for(int i = 0; i < cate.length; i ++){ + FlightStaticStcsModel node = query.getWarnStaticStcs(cate[i]); + result.add(node); + } + + return result; + } + + } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/WarnType.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/WarnType.java new file mode 100644 index 00000000..77c13c09 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/WarnType.java @@ -0,0 +1,31 @@ +package com.palnet.biz.jpa.entity.type; + +import com.fasterxml.jackson.annotation.JsonCreator; + +import lombok.Getter; + +@Getter +public enum WarnType { + + PLAN("PLAN"), + ALTITUDE("ALTITUDE"), + CRASH("CRASH"), + ; + + + private final String value; + + WarnType(String value) { + this.value = value; + } + + @JsonCreator + public static WarnType fromCode(String code) { + for (WarnType warnType : WarnType.values()) { + if (warnType.getValue().equals(code)) { + return warnType; + } + } + return null; + } +} 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 6bc95b51..45424c99 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 @@ -2207,4 +2207,40 @@ public List listCntrlHstry(String id){ return result; } + + /** + * 비정상상황 고정 데이터, 카테고리별 집계[PLAN, ALTITUDE, CRASH] + * @return + */ + public FlightStaticStcsModel getWarnStaticStcs(String cate){ + FlightStaticStcsModel result = new FlightStaticStcsModel(); + + QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog; + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(bas.warnType.eq(cate)); + + List queryResult = query + .select( + Projections.bean(FlightStaticStcsModel.class, + bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 + bas.cntrlId.countDistinct().as("value") // 결과 객체의 프로퍼티 이름을 지정 + ) + ) + .from(bas) + .where(builder) + .groupBy(bas.idntfNum) + .orderBy(bas.cntrlId.countDistinct().desc()) + .limit(1) + .fetch(); + + if(queryResult.size() > 0){ + result = queryResult.get(0); + } + + return result; + } + + + }