Browse Source

비정상 상황 상단 고정데이터 API 추가

pull/12/head
lkd9125(이경도) 11 months ago
parent
commit
7006e88ade
  1. 63
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 23
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  3. 31
      pav-server/src/main/java/com/palnet/biz/jpa/entity/type/WarnType.java
  4. 36
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

63
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<? extends BasicResponse> statisticsStatic(){
public ResponseEntity<? extends BasicResponse> fltStcsStatic(){
List<FlightStaticStcsModel> 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<? extends BasicResponse> statistics(@RequestParam String cate, String date, @PathVariable String type){
public ResponseEntity<? extends BasicResponse> 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<FlightStcsModel>(result));
}
@GetMapping("/stcs/warn-static")
@ApiOperation(value = "비정상 상황 상단 데이터[DB전체 통계데이터]")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
public ResponseEntity<? extends BasicResponse> warnStcsStatic(){
List<FlightStaticStcsModel> 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<List<FlightStaticStcsModel>>(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<? extends BasicResponse> 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<FlightStaticStcsModel> graphData = service.fltStatics(cate, date, formatParam);
List<FlightStaticStcsModel> 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<FlightStcsModel>(result));
}
}

23
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<FlightStaticStcsModel> getWarnStaticStcs(){
// TODO:: 비행경로이탈, 고도이탈, 충돌위험 임시코드
String[] cate = {"PLAN" ,"ALTITUDE", "CRASH"};
// String[] cate = {WarnType.PLAN.getValue() ,WarnType.ALTITUDE.getValue(), WarnType.CRASH.getValue()};
List<FlightStaticStcsModel> result = new ArrayList<>();
for(int i = 0; i < cate.length; i ++){
FlightStaticStcsModel node = query.getWarnStaticStcs(cate[i]);
result.add(node);
}
return result;
}
}

31
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;
}
}

36
pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

@ -2207,4 +2207,40 @@ public List<AnlsHstryDetailModel> 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<FlightStaticStcsModel> 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;
}
}

Loading…
Cancel
Save