Browse Source

main/statistics 패키지 주석추가

develop
lkd9125(이경도) 9 months ago
parent
commit
9b7f837cf5
  1. 89
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java
  2. 8
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java
  3. 204
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
  4. 148
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java
  5. 371
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

89
pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java

@ -34,6 +34,11 @@ public class MainStatisticsController {
private final MainStatisticsService service;
/**
* 비행통계 상단데이터 통계 조회기능.
* @param serviceType
* @return
*/
@GetMapping("/flight-static")
@ApiOperation(value = "비행통계 상단 데이터[DB전체 통계데이터]")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ -42,8 +47,15 @@ public class MainStatisticsController {
List<FlightStcsValueModel> result = null;
try {
result = service.getFlightStaticStcs(serviceType);
result = service.getFlightStaticStcs(serviceType); // 비행관련 고정 통계, 항상 DB 전체값에서 통계조회 하는기능.
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -52,6 +64,12 @@ public class MainStatisticsController {
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStcsValueModel>>(result));
}
/**
* 날짜별, 타입별 비행통계 조회 기능.
* @param rq
* @param type
* @return
*/
@GetMapping("/flight/{type}")
@ApiOperation(value = "비행통계 cate = ['TIME', 'DISTANCE','FLT_COUNT'], type=['year','month','day','one-day']")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ -62,22 +80,27 @@ public class MainStatisticsController {
})
public ResponseEntity<? extends BasicResponse> fltStcs(FlightStcsRQ rq, @PathVariable String type){
log.warn("type => {}", type);
FlightStcsModel result = new FlightStcsModel();
try {
String[] formatParam = null;
if(rq.getDate() == null) rq.setDate("");
formatParam = service.paramCheck(rq.getDate(),type);
formatParam = service.paramCheck(rq.getDate(),type); // 파라미터 체크
List<FlightStcsValueModel> graphData = service.fltStatics(rq, formatParam);
List<FlightStcsValueModel> topData = service.fltTopStatics(rq, formatParam);
List<FlightStcsValueModel> graphData = service.fltStatics(rq, formatParam); // 비행통계 기능
List<FlightStcsValueModel> topData = service.fltTopStatics(rq, formatParam); // 비행통계 카테고리 별 Top 5 데이터 조회하기 기능
result.setGraphData(graphData);
result.setTopData(topData);
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -86,8 +109,11 @@ public class MainStatisticsController {
return ResponseEntity.ok().body(new SuccessResponse<FlightStcsModel>(result));
}
/**
* 비정상 상황 상단 데이터 조회기능.
* @param serviceType
* @return
*/
@GetMapping("/warn-static")
@ApiOperation(value = "비정상 상황 상단 데이터[DB전체 통계데이터]")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ -98,6 +124,13 @@ public class MainStatisticsController {
try {
result = service.getWarnStaticStcs(serviceType);
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -106,6 +139,12 @@ public class MainStatisticsController {
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStcsValueModel>>(result));
}
/**
* 날짜별, 카테고리별 비정상 상황에 대한 통계 조회 기능
* @param rq
* @param type
* @return
*/
@GetMapping("/warn/{type}")
@ApiOperation(value = "비정상상황 cate = ['PLAN' ,'ALTITUDE', 'CRASH'], type=['year','month','day','one-day']")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ -130,6 +169,13 @@ public class MainStatisticsController {
result.setGraphData(graphData);
result.setTopData(topData);
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -138,6 +184,11 @@ public class MainStatisticsController {
return ResponseEntity.ok().body(new SuccessResponse<FlightStcsModel>(result));
}
/**
* 비행실적 상단데이터 통계 기능.
* @param serviceType
* @return
*/
@GetMapping("/flight/result-static")
@ApiOperation(value = "비행실적 상단데이터 통계 [DB전체 통계데이터]")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ -148,6 +199,13 @@ public class MainStatisticsController {
try {
result = service.getFltResultStaticStcs(serviceType);
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -156,8 +214,14 @@ public class MainStatisticsController {
return ResponseEntity.ok().body(new SuccessResponse<List<FlightStcsValueModel>>(result));
}
/**
* 날짜별, 카테고리별 비행실적 통계
* @param rq
* @param type
* @return
*/
@GetMapping("/flight/result/{type}")
@ApiOperation(value = "비정상상황 cate = ['FLT_RESULT' ,'FLT_PLAN', 'FLT_PLAN_APRVN'], type=['year','month','day','one-day']")
@ApiOperation(value = "비행실적 cate = ['FLT_RESULT' ,'FLT_PLAN', 'FLT_PLAN_APRVN'], type=['year','month','day','one-day']")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
@ApiImplicitParams({
@ApiImplicitParam(name = "date",value = "날짜[2023]", dataTypeClass = String.class),
@ -180,6 +244,13 @@ public class MainStatisticsController {
result.setGraphData(graphData);
result.setTopData(topData);
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));

8
pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java

@ -140,7 +140,7 @@ public class MainStatisticsService {
/**
* 비행관련 고정 통계, 항상 DB 전체값에서 통계진행할것임
* 비행관련 고정 통계, 항상 DB 전체값에서 통계조회 하는기능.
* @return
*/
public List<FlightStcsValueModel> getFlightStaticStcs(String serviceType){
@ -426,6 +426,12 @@ public class MainStatisticsService {
return resultList;
}
/**
* 비행실적 TOP 5 기체정보 조회하는 기능.
* @param rq
* @param formatParam
* @return
*/
public List<FlightStcsValueModel> getFltTopResultStcs(FlightStcsRQ rq, String[] formatParam){
List<FlightStcsValueModel> resultList = null;

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

@ -2370,6 +2370,23 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 항별[serviceType] 조건인지,
* 권한에 따른 회원통계값[cstmrSno] 조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* CCB.IDNTF_NUM AS 'name'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON FPCCR.CNTRL_ID = CCB.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{servicType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY CCB.IDNTF_NUM
* ORDER BY SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT , CCB.CNTRL_ST_DT)))) DESC
* LIMIT 1
*/
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -2423,6 +2440,13 @@ public class CtrCntrlQueryRepository{
return result;
}
/**
* 가장 많은 비행시간을 가진 기체, 비행시간 SELECT[일알]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private String getFltTimeDay(String idntfNum, boolean authCheck, String serviceType){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
@ -2437,6 +2461,23 @@ public class CtrCntrlQueryRepository{
builder.and(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qCtrCntrlBas.createDt, dateFormat)
.eq(LocalDate.now().toString()));
/**
* 항별[serviceType] 조건인지,
* 권한에 따른 회원통계값[cstmrSno] 조건인지,
* 기체식별번호[idntfNum] 조건인지,
* 생성일시[createDt]값이 오늘인지 조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT , CCB.CNTRL_ST_DT)))))
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON FPCCR.CNTRL_ID = CCB.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND DATE_FORMAT(CCB.CREATE_DT, #{dateForamt}) = ㅜㅒㅈ
*/
return String.valueOf(query
.select(
Expressions.stringTemplate(
@ -2454,11 +2495,19 @@ public class CtrCntrlQueryRepository{
.fetchOne());
}
/**
* 가장 많은 비행시간을 가진 기체, 비행시간 SELECT[]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private String getFltTimeMonth(String idntfNum, boolean authCheck, String serviceType){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum));
builder.and(qCtrCntrlBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant()));
@ -2466,6 +2515,24 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 항별[serviceType] 조건인지,
* 권한에 따른 회원통계값[cstmrSno] 조건인지,
* 기체식별번호[idntfNum] 조건인지,
* 생성일시[createDt]값이 오늘인지 조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT , CCB.CNTRL_ST_DT)))))
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON FPCCR.CNTRL_ID = CCB.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND CCB.CREATE_DT >= '한달전 오늘'
* AND CCB.CREATE_DT <= '오늘'
*/
return String.valueOf(query
.select(
Expressions.stringTemplate(
@ -2483,6 +2550,13 @@ public class CtrCntrlQueryRepository{
.fetchOne());
}
/**
* 가장 많은 비행시간을 가진 기체, 비행시간 SELECT[]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private String getFltTimeYear(String idntfNum, boolean authCheck, String serviceType){
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
@ -2495,6 +2569,24 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 항별[serviceType] 조건인지,
* 권한에 따른 회원통계값[cstmrSno] 조건인지,
* 기체식별번호[idntfNum] 조건인지,
* 생성일시[createDt]값이 오늘인지 조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT , CCB.CNTRL_ST_DT)))))
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON FPCCR.CNTRL_ID = CCB.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND CCB.CREATE_DT >= '일년전 오늘'
* AND CCB.CREATE_DT <= '오늘'
*/
return String.valueOf(query
.select(
Expressions.stringTemplate(
@ -2815,6 +2907,24 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}}) AS 'name',
* CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT, CCB.CNTRL_ST_DT))))) AS 'value'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{formatParam[0}) = #{date}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -2875,6 +2985,24 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}}) AS 'name',
* SUM(CCB.TTL_DSTNC) AS 'value'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{formatParam[0}) = #{date}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -2931,6 +3059,24 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}}) AS 'name',
* COUNT(CCB.CNTRL_ID) AS 'value'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{formatParam[0}) = #{date}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -2982,6 +3128,25 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}}) AS 'name',
* CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT, CCB.CNTRL_ST_DT))))) AS 'value'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{formatParam[0}) = #{date}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY CCB.IDNTF_NUM
* ORDER BY CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(CCB.CNTRL_END_DT, CCB.CNTRL_ST_DT))))) DESC
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -3042,7 +3207,25 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}}) AS 'name',
* SUM(CCB.TTL_DSTNC) AS 'value'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{formatParam[0}) = #{date}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY CCB.IDNTF_NUM
* ORDER BY SUM(CCB.TTL_DSTNC) DESC
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -3095,6 +3278,25 @@ public class CtrCntrlQueryRepository{
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCB.CREATE_DT, #{formatParam[1}}) AS 'name',
* COUNT(CCB.CNTRL_ID) AS 'value'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{formatParam[0}) = #{date}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY CCB.IDNTF_NUM
* ORDER BY COUNT(CCB.CNTRL_ID) DESC
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,

148
pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java

@ -50,6 +50,25 @@ public class CtrCntrlWarnLogQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 위험타입[warnType] 조건인지,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* CCWL.IDNTF_NUM
* FROM CTR_CNTRL_WARN_LOG CCWL
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCWL.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE CCWL.WARN_TYPE = #{cate}
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP CCWL.IDNTF_NUM
* ORDER BY COUNT(DISTINCT CCWL.CNTRL_ID) DESC
* LIMIT 1
*/
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -90,7 +109,14 @@ public class CtrCntrlWarnLogQueryRepository {
return result;
}
/**
* 비정상상황 고정 데이터, 카테고리별 집계[PLAN, ALTITUDE, CRASH] [일일]
* @param idntfNum
* @param cate
* @param authCheck
* @param serviceType
* @return
*/
private Long getWarnDay(String idntfNum, String cate, boolean authCheck, String serviceType){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
@ -106,6 +132,26 @@ public class CtrCntrlWarnLogQueryRepository {
builder.and(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", bas.createDt, dateFormat)
.eq(LocalDate.now().toString()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 객체식별번호[idntfNum] 조건,
* 위험타입[warnType] 조건인지 파악하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(DISTINCT CCWL.CNTRL_ID)
* FROM CTR_CNTRL_WARN_LOG CCWL
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCWL.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{servicType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND CCWL.IDNTF_NUM = #{idntfNum}
* AND CCWL.WARN_TYPE = #{warnType}
* AND DATE_FORMAT(CCB.CREATE_DT, #{dateForamt}) = NOW()
*/
return query
.select(
bas.cntrlId.countDistinct() // 결과 객체의 프로퍼티 이름을 지정
@ -119,6 +165,14 @@ public class CtrCntrlWarnLogQueryRepository {
.fetchOne();
}
/**
* 비정상상황 고정 데이터, 카테고리별 집계[PLAN, ALTITUDE, CRASH] []
* @param idntfNum
* @param cate
* @param authCheck
* @param serviceType
* @return
*/
private Long getWarnMonth(String idntfNum, String cate, boolean authCheck, String serviceType){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
@ -132,6 +186,27 @@ public class CtrCntrlWarnLogQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 객체식별번호[idntfNum] 조건,
* 위험타입[warnType] 조건인지 파악하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(DISTINCT CCWL.CNTRL_ID)
* FROM CTR_CNTRL_WARN_LOG CCWL
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCWL.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{servicType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND CCWL.IDNTF_NUM = #{idntfNum}
* AND CCWL.WARN_TYPE = #{warnType}
* AND CCWL.CREATE_DT >= '한달전 오늘'
* AND CCWL.CREATE_DT <= '오늘'
*/
return query
.select(
bas.cntrlId.countDistinct() // 결과 객체의 프로퍼티 이름을 지정
@ -145,6 +220,14 @@ public class CtrCntrlWarnLogQueryRepository {
.fetchOne();
}
/**
* 비정상상황 고정 데이터, 카테고리별 집계[PLAN, ALTITUDE, CRASH] []
* @param idntfNum
* @param cate
* @param authCheck
* @param serviceType
* @return
*/
private Long getWarnYear(String idntfNum, String cate, boolean authCheck, String serviceType){
QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
@ -158,6 +241,27 @@ public class CtrCntrlWarnLogQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 객체식별번호[idntfNum] 조건,
* 위험타입[warnType] 조건인지 파악하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(DISTINCT CCWL.CNTRL_ID)
* FROM CTR_CNTRL_WARN_LOG CCWL
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCWL.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{servicType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND CCWL.IDNTF_NUM = #{idntfNum}
* AND CCWL.WARN_TYPE = #{warnType}
* AND CCWL.CREATE_DT >= '일년전 오늘'
* AND CCWL.CREATE_DT <= '오늘'
*/
return query
.select(
bas.cntrlId.countDistinct() // 결과 객체의 프로퍼티 이름을 지정
@ -201,6 +305,26 @@ public class CtrCntrlWarnLogQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 위험상황 타입[warnType] 조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[1}) AS 'name',
* COUNT(DISTINCT CCWL.CNTRL_ID) AS 'count'
* FROM CTR_CNTRL_WARN_LOG CCWL
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCWL.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{servicType}
* AND CCWL.WARN_TYPE = #{warnType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* GROUP BY DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[1})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -254,6 +378,28 @@ public class CtrCntrlWarnLogQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 관제생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 위험상황 타입[warnType] 조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* CCWL.IDNTF_NUM AS 'name',
* COUNT(DISTINCT CCWL.CNTRL_ID) AS 'value'
* FROM CTR_CNTRL_WARN_LOG CCWL
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCWL.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{servicType}
* AND CCWL.WARN_TYPE = #{warnType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* GROUP BY CCWL.IDNTF_NUM
* ORDER BY COUNT(DISTINCT CCWL.CNTRL_ID) DESC
* LIMIT 5
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,

371
pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

@ -1457,6 +1457,24 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 고유번호[planSno] 있는지,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 기능입니다.
*
* SELECT
* FPCCR.IDNTF_NUM AS 'name',
* COUNT(DISTINCT FPCCR.PLAN_SNO) AS count
* FROM FLT_PLAN_CTR_CNTRL_REL FPCCR
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPCCR.PLAN_SNO IS NOT NULL
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY FPCCR.IDNTF_NUM
* ORDER BY count DESC
* LIMIT 1;
*/
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -1495,7 +1513,13 @@ public class FltPlanQueryRepository {
return result;
}
/**
* 비행실적 데이터, top 1 [일일]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltResultDay(String idntfNum, boolean authCheck, String serviceType){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
@ -1511,6 +1535,24 @@ public class FltPlanQueryRepository {
builder.and(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, dateFormat)
.eq(LocalDate.now().toString()));
/**
* 비행계획서 고유번호[planSno] 있는지,
* 각항별 타입[serviceType] 조건,
* 기체 식별번호[idntfNum] 조건,
* 비행계획서 생성일시[createDt] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 기능입니다.
*
* SELECT
* COUNT(DISTINCT FPCCR.PLAN_SNO) AS count
* FROM FLT_PLAN_CTR_CNTRL_REL FPCCR
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPCCR.PLAN_SNO IS NOT NULL
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPCCR.IDNTF_NUM = #{idntfNum}
* AND DATE_FORMAT(CCB.CREATE_DT, #{dateForamt}) = NOW()
*/
return query
.select(
qFltPlanCtrCntrlRel.planSno.countDistinct() // 결과 객체의 프로퍼티 이름을 지정
@ -1522,6 +1564,13 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행실적 데이터, top 1 []
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltResultMonth(String idntfNum, boolean authCheck, String serviceType){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1534,6 +1583,25 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 고유번호[planSno] 있는지,
* 각항별 타입[serviceType] 조건,
* 기체 식별번호[idntfNum] 조건,
* 비행계획서 생성일시[createDt] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 기능입니다.
*
* SELECT
* COUNT(DISTINCT FPCCR.PLAN_SNO) AS count
* FROM FLT_PLAN_CTR_CNTRL_REL FPCCR
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPCCR.PLAN_SNO IS NOT NULL
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPCCR.IDNTF_NUM = #{idntfNum}
* AND FPB.CREATE_DT >= '한달전 오늘'
* AND FPB.CREATE_DT <= '오늘'
*/
return query
.select(
qFltPlanCtrCntrlRel.planSno.countDistinct() // 결과 객체의 프로퍼티 이름을 지정
@ -1545,6 +1613,13 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행실적 데이터, top 1 []
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltResultYear(String idntfNum, boolean authCheck, String serviceType){
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1557,6 +1632,25 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 고유번호[planSno] 있는지,
* 각항별 타입[serviceType] 조건,
* 기체 식별번호[idntfNum] 조건,
* 비행계획서 생성일시[createDt] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 기능입니다.
*
* SELECT
* COUNT(DISTINCT FPCCR.PLAN_SNO) AS count
* FROM FLT_PLAN_CTR_CNTRL_REL FPCCR
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPCCR.PLAN_SNO IS NOT NULL
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPCCR.IDNTF_NUM = #{idntfNum}
* AND FPB.CREATE_DT >= '일년전 오늘'
* AND FPB.CREATE_DT <= '오늘'
*/
return query
.select(
qFltPlanCtrCntrlRel.planSno.countDistinct() // 결과 객체의 프로퍼티 이름을 지정
@ -1583,6 +1677,21 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* FPA.IDNTF_NUM
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPA.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY FPA.IDNTF_NUM
* ORDER BY COUNT(FPA.PLAN_SNO) DESC
* LIMIT 1
*/
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -1590,6 +1699,7 @@ public class FltPlanQueryRepository {
)
)
.from(qFltPlanArcrft)
.where(builder)
.leftJoin(qFltPlanBas)
.on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno))
.groupBy(qFltPlanArcrft.idntfNum)
@ -1620,6 +1730,13 @@ public class FltPlanQueryRepository {
return result;
}
/**
* 비행계획에 많이 기용된 기체 데이터, top 1[일일]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltPlanDay(String idntfNum, boolean authCheck, String serviceType){
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1633,6 +1750,21 @@ public class FltPlanQueryRepository {
builder.and(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", bas.createDt, dateFormat)
.eq(LocalDate.now().toString()));
/**
* 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(FPA.PLAN_SNO)
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPA.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPA.IDNTF_NUM = #{idntfNum}
* AND DATE_FORMAT(FPA.CREATE_DT, #{dateForamt}) = NOW()
*/
return query
.select(
bas.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
@ -1644,6 +1776,13 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행계획에 많이 기용된 기체 데이터, top 1[]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltPlanMonth(String idntfNum, boolean authCheck, String serviceType){
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1655,6 +1794,21 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(FPA.PLAN_SNO)
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPA.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPA.CREATE_DT >= '한달전 오늘'
* AND FPA.CREATE_DT <= '오늘'
*/
return query
.select(
bas.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
@ -1666,6 +1820,13 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행계획에 많이 기용된 기체 데이터, top 1[]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltPlanYear(String idntfNum, boolean authCheck, String serviceType){
QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1677,6 +1838,21 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건인지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(FPA.PLAN_SNO)
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPA.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPA.CREATE_DT >= '일년전 오늘'
* AND FPA.CREATE_DT <= '오늘'
*/
return query
.select(
bas.planSno.count()
@ -1706,7 +1882,22 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 승인여부[aprvlYn] 값이 'Y' 데이터를 조회하는 SQL 입니다.
*
* SELECT
* FPA.IDNTF_NUM
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPB.APRVL_YN = 'Y'
* GROUP BY FPA.IDNTF_NUM
* ORDER BY COUNT(FPA.PLAN_SNO) DESC
*/
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -1744,6 +1935,13 @@ public class FltPlanQueryRepository {
return result;
}
/**
* 비행승인 많은 기체 데이터, top 1 [일일]
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltPlanAprvnDay(String idntfNum, boolean authCheck, String serviceType){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1758,6 +1956,23 @@ public class FltPlanQueryRepository {
builder.and(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, dateFormat)
.eq(LocalDate.now().toString()));
/**
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 승인여부[aprvlYn] 값이 'Y' 인지,
* 비행계획서 생성일시[createDt] 조건이지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(FPA.PLAN_SNO )
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPB.APRVL_YN = 'Y'
* AND FPA.IDNTF_NUM = #{idntfNum}
* AND DATE_FORMAT(FPB.CREATE_DT, #{dateForamt}) = NOW ()
*/
return query
.select(
qFltPlanArcrft.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
@ -1769,6 +1984,13 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행승인 많은 기체 데이터, top 1 []
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltPlanAprvnMonth(String idntfNum, boolean authCheck, String serviceType){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
@ -1782,6 +2004,24 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 승인여부[aprvlYn] 값이 'Y' 인지,
* 비행계획서 생성일시[createDt] 조건이지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(FPA.PLAN_SNO )
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPB.APRVL_YN = 'Y'
* AND FPA.IDNTF_NUM = #{idntfNum}
* AND FPB.CREATE_DT >= '한달전 오늘'
* AND FPB.CREATE_DT <= '오늘'
*/
return query
.select(
qFltPlanArcrft.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
@ -1793,6 +2033,13 @@ public class FltPlanQueryRepository {
.fetchOne();
}
/**
* 비행승인 많은 기체 데이터, top 1 []
* @param idntfNum
* @param authCheck
* @param serviceType
* @return
*/
private Long getFltPlanAprvnYear(String idntfNum, boolean authCheck, String serviceType){
QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
@ -1805,6 +2052,24 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건,
* 승인여부[aprvlYn] 값이 'Y' 인지,
* 비행계획서 생성일시[createDt] 조건이지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* COUNT(FPA.PLAN_SNO )
* FROM FLT_PLAN_ARCRFT FPA
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPB.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPB.APRVL_YN = 'Y'
* AND FPA.IDNTF_NUM = #{idntfNum}
* AND FPB.CREATE_DT >= '일년전 오늘'
* AND FPB.CREATE_DT <= '오늘'
*/
return query
.select(
qFltPlanArcrft.planSno.count() // 결과 객체의 프로퍼티 이름을 지정
@ -1843,6 +2108,22 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(FPB.CREATE_DT, #{formatParam[1}) AS 'name',
* COUNT(DISTINCT FPCCR.PLAN_SNO) AS 'value'
* FROM FLT_PLAN_CTR_CNTRL_REL FPCCR
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY DATE_FORMAT(FPB.CREATE_DT, #{formatParam[1})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -1894,6 +2175,20 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(FPB.CREATE_DT, #{formatParam[1}) AS 'name',
* COUNT(FPB.PLAN_SNO) AS 'value'
* FROM FLT_PLAN_BAS FPB
* WHERE DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY DATE_FORMAT(FPB.CREATE_DT, #{formatParam[1})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -1946,6 +2241,22 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 승인여부가 'Y'인지,
* 비행계획서 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* DATE_FORMAT(FPB.CREATE_DT, #{formatParam[1}) AS 'name',
* COUNT(FPB.PLAN_SNO) AS 'value'
* FROM FLT_PLAN_BAS FPB
* WHERE DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* AND FPB.APRVL_YN = 'Y'
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY DATE_FORMAT(FPB.CREATE_DT, #{formatParam[1})
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(
@ -1992,6 +2303,24 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* FPCCR.IDNTF_NUM AS 'name',
* COUNT(DISTINCT FPCCR.PLAN_SNO) AS 'value'
* FROM FLT_PLAN_CTR_CNTRL_REL FPCCR
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY FPCCR.IDNTF_NUM
* ORDER BY COUNT(DISTINCT FPCCR.PLAN_SNO) DESC
* LIMIT 5
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -2041,6 +2370,24 @@ public class FltPlanQueryRepository {
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
/**
* 비행계획서 생성일시[createDt] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* FPA.IDNTF_NUM AS 'name',
* COUNT(DISTINCT FPA.PLAN_SNO) AS 'value'
* FROM FLT_PLAN_BAS FPB
* LEFT OUTER JOIN FLT_PLAN_ARCRFT FPA
* ON FPA.PLAN_SNO = FPB.PLAN_SNO
* WHERE DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* GROUP BY FPA.IDNTF_NUM
* ORDER BY COUNT(DISTINCT FPA.PLAN_SNO) DESC
* LIMIT 5
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
@ -2091,6 +2438,26 @@ public class FltPlanQueryRepository {
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType));
/**
* 비행계획서 생성일시[createDt] 조건,
* 승인여부[aprvlYn] 조건,
* 각항별 타입[serviceType] 조건,
* 회원고유번호[cstmrSno]조건과 맞는지 확인하여 조회하는 SQL 입니다.
*
* SELECT
* FPA.IDNTF_NUM AS 'name',
* COUNT(DISTINCT FPA.PLAN_SNO) AS 'value'
* FROM FLT_PLAN_BAS FPB
* LEFT OUTER JOIN FLT_PLAN_ARCRFT FPA
* ON FPA.PLAN_SNO = FPB.PLAN_SNO
* WHERE DATE_FORMAT(CCWL.CREATE_DT, #{formatParam[0})
* AND FPB.SERVICE_TYPE = #{serviceType}
* AND FPB.CSTMR_SNO = #{cstmrSno} -- 권한이 유저인경우
* AND FPB.APRVL_YN = 'Y'
* GROUP BY FPA.IDNTF_NUM
* ORDER BY COUNT(DISTINCT FPA.PLAN_SNO) DESC
* LIMIT 5
*/
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,

Loading…
Cancel
Save