diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java b/pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java index ebd01c68..7665c9bf 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java @@ -97,7 +97,7 @@ public class MainStatisticsController { @GetMapping("/warn-static") @ApiOperation(value = "비정상 상황 상단 데이터[DB전체 통계데이터]") @Tag(name = "통계 컨트롤러", description = "통계 관련 API") - public ResponseEntity warnStcsStatic(){ + public ResponseEntity warnStcsStatic(String groupId){ List result = null; @@ -152,12 +152,14 @@ public class MainStatisticsController { @GetMapping("/flight/result-static") @ApiOperation(value = "비행실적 상단데이터 통계 [DB전체 통계데이터]") @Tag(name = "통계 컨트롤러", description = "통계 관련 API") - public ResponseEntity fltResultStcs(){ + public ResponseEntity fltResultStcs(String groupId){ + + log.warn("Group => {}", groupId); List result = null; try { - result = service.getFltResultStaticStcs(); + result = service.getFltResultStaticStcs(groupId); log.warn("result => {}", result); } catch (Exception e) { @@ -177,19 +179,19 @@ public class MainStatisticsController { @ApiImplicitParam(name = "cate",value = "비행실적,비행계획서,비행계획승인[FLT_PLAN_APRVN]", dataTypeClass = String.class), @ApiImplicitParam(name = "type",value = "날짜형식[month]", dataTypeClass = String.class) }) - public ResponseEntity fltResultStcs(@RequestParam String cate, String groupNm, String date, @PathVariable String type){ - log.warn("cate => {}, group => {}, date => {}, type => {}", cate, groupNm, date, type); + public ResponseEntity fltResultStcs(FlightStcsRQ rq, @PathVariable String type){ + log.warn("cate => {}, group => {}, date => {}, type => {}", rq.getCate(), rq.getGroupId(), rq.getDate(), type); FlightStcsModel result = new FlightStcsModel(); try { String[] formatParam = null; - if(date == null) date = ""; - formatParam = service.paramCheck(date,type); + if(rq.getDate() == null) rq.setDate(""); + formatParam = service.paramCheck(rq.getDate(),type); - List graphData = service.getFltResultStcs(cate, date, formatParam); - List topData = service.getFltTopResultStcs(cate, date, formatParam); + List graphData = service.getFltResultStcs(rq, formatParam); + List topData = service.getFltTopResultStcs(rq, formatParam); result.setGraphData(graphData); result.setTopData(topData); diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java b/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java index fd4693c1..bdd7fdd4 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java @@ -113,6 +113,8 @@ public class MainStatisticsService { */ private Boolean authCheck(String groupId){ + if(groupId == null || groupId.equals("")) return false; + BasGroupUserListModel param = new BasGroupUserListModel(); param.setCstmrSno(jwtTokenUtil.getCstmrSnoByToken()); param.setGroupId(groupId); @@ -200,19 +202,22 @@ public class MainStatisticsService { * @return */ public List fltTopStatics(FlightStcsRQ rq, String[] formatParam){ + + boolean authCheck = authCheck(rq.getGroupId()); + List resultList = new ArrayList<>(); switch (rq.getCate()) { case "TIME": - resultList = cntrlQueryRepository.fltTopTimeStcs(rq.getDate(), formatParam); + resultList = cntrlQueryRepository.fltTopTimeStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; case "DISTANCE": - resultList = cntrlQueryRepository.fltTopDistanceStcs(rq.getDate(), formatParam); + resultList = cntrlQueryRepository.fltTopDistanceStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; case "FLT_COUNT": - resultList = cntrlQueryRepository.fltTopCountStcs(rq.getDate(), formatParam); + resultList = cntrlQueryRepository.fltTopCountStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; default : @@ -287,37 +292,49 @@ public class MainStatisticsService { * 비행실적, 비행계획서 기용, 비행승인이 많이 된 기체 데이터, 상단 고정 데이터 * @return */ - public List getFltResultStaticStcs(){ + public List getFltResultStaticStcs(String groupId){ - FlightStcsValueModel fltResult = fltPlanQueryRepository.getFltResultStaticStcs(); - FlightStcsValueModel fltPlan = fltPlanQueryRepository.getFltPlanStaticStcs(); - FlightStcsValueModel fltPlanAprvn = fltPlanQueryRepository.getFltPlanAprvnStaticStcs(); + // 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false; + boolean authCheck = authCheck(groupId); + + FlightStcsValueModel fltResult = fltPlanQueryRepository.getFltResultStaticStcs(authCheck, groupId); + FlightStcsValueModel fltPlan = fltPlanQueryRepository.getFltPlanStaticStcs(authCheck, groupId); + FlightStcsValueModel fltPlanAprvn = fltPlanQueryRepository.getFltPlanAprvnStaticStcs(authCheck, groupId); List result = Arrays.asList(fltResult,fltPlan, fltPlanAprvn); return result; } - public List getFltResultStcs(String cate, String date, String[] formatParam){ + /** + * 비행실적 날짜데이터 + * @param rq + * @param formatParam + * @return + */ + public List getFltResultStcs(FlightStcsRQ rq, String[] formatParam){ List resultList = null; + + // 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false; + boolean authCheck = authCheck(rq.getGroupId()); - switch (cate) { + switch (rq.getCate()) { case "FLT_RESULT": - resultList = fltPlanQueryRepository.fltResultStcs(date, formatParam); + resultList = fltPlanQueryRepository.fltResultStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; case "FLT_PLAN": - resultList = fltPlanQueryRepository.fltPlanStcs(date, formatParam); + resultList = fltPlanQueryRepository.fltPlanStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; case "FLT_PLAN_APRVN": - resultList = fltPlanQueryRepository.fltPlanAprvnStcs(date, formatParam); + resultList = fltPlanQueryRepository.fltPlanAprvnStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; default : - throw new CustomException(ErrorCode.NON_VALID_PARAMETER, cate, date); + throw new CustomException(ErrorCode.NON_VALID_PARAMETER, rq.getCate(), rq.getDate()); } for(FlightStcsValueModel node : resultList){ @@ -327,26 +344,29 @@ public class MainStatisticsService { return resultList; } - public List getFltTopResultStcs(String cate, String date, String[] formatParam){ + public List getFltTopResultStcs(FlightStcsRQ rq, String[] formatParam){ List resultList = null; + + // 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false; + boolean authCheck = authCheck(rq.getGroupId()); - switch (cate) { + switch (rq.getCate()) { case "FLT_RESULT": - resultList = fltPlanQueryRepository.fltTopResultStcs(date, formatParam); + resultList = fltPlanQueryRepository.fltTopResultStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; case "FLT_PLAN": - resultList = fltPlanQueryRepository.fltTopPlanStcs(date, formatParam); + resultList = fltPlanQueryRepository.fltTopPlanStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; case "FLT_PLAN_APRVN": - resultList = fltPlanQueryRepository.fltTopPlanAprvnStcs(date, formatParam); + resultList = fltPlanQueryRepository.fltTopPlanAprvnStcs(rq.getDate(), rq.getGroupId(), authCheck, formatParam); break; default : - throw new CustomException(ErrorCode.NON_VALID_PARAMETER, cate, date); + throw new CustomException(ErrorCode.NON_VALID_PARAMETER, rq.getCate(), rq.getDate()); } for(FlightStcsValueModel node : resultList){ 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 9a324f1d..9e6491e1 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 @@ -1839,7 +1839,7 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List queryResult = query @@ -1868,11 +1868,9 @@ public List listCntrlHstry(String id){ String idntfNum = result.getName(); - result.setDay(getFltTimeDay(idntfNum)); - result.setYear(getFltTimeYear(idntfNum)); - result.setMonth(getFltTimeMonth(idntfNum)); - - log.warn("a => {}", result); + result.setDay(getFltTimeDay(idntfNum, authCheck, groupId)); + result.setYear(getFltTimeYear(idntfNum, authCheck, groupId)); + result.setMonth(getFltTimeMonth(idntfNum, authCheck, groupId)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); @@ -1888,12 +1886,16 @@ public List listCntrlHstry(String id){ return result; } - private Long getFltTimeDay(String idntfNum){ + private Long getFltTimeDay(String idntfNum, boolean authCheck, String groupId){ 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.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return Long.parseLong(query .select( @@ -1904,17 +1906,25 @@ public List listCntrlHstry(String id){ ) // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne()); } - private Long getFltTimeMonth(String idntfNum){ + private Long getFltTimeMonth(String idntfNum, boolean authCheck, String groupId){ 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())); builder.and(qCtrCntrlBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return Long.parseLong(query .select( @@ -1925,17 +1935,25 @@ public List listCntrlHstry(String id){ ) // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne()); } - private Long getFltTimeYear(String idntfNum){ + private Long getFltTimeYear(String idntfNum, boolean authCheck, String groupId){ 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().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qCtrCntrlBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return Long.parseLong(query .select( @@ -1946,6 +1964,10 @@ public List listCntrlHstry(String id){ ) // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne()); } @@ -1962,7 +1984,7 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); @@ -1988,9 +2010,9 @@ public List listCntrlHstry(String id){ String idntfNum = result.getName(); - result.setYear(getFltDistanceYear(idntfNum)); - result.setMonth(getFltDistanceMonth(idntfNum)); - result.setDay(getFltDistanceDay(idntfNum)); + result.setYear(getFltDistanceYear(idntfNum, authCheck, groupId)); + result.setMonth(getFltDistanceMonth(idntfNum, authCheck, groupId)); + result.setDay(getFltDistanceDay(idntfNum, authCheck, groupId)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); node.setName("-"); @@ -2004,29 +2026,41 @@ public List listCntrlHstry(String id){ return result; } - private Double getFltDistanceDay(String idntfNum){ + private Double getFltDistanceDay(String idntfNum, boolean authCheck, String groupId){ 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.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne(); } - private Double getFltDistanceMonth(String idntfNum){ + private Double getFltDistanceMonth(String idntfNum, boolean authCheck, String groupId){ 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())); builder.and(qCtrCntrlBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( @@ -2034,23 +2068,35 @@ public List listCntrlHstry(String id){ ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne(); } - private Double getFltDistanceYear(String idntfNum){ + private Double getFltDistanceYear(String idntfNum, boolean authCheck, String groupId){ 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().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qCtrCntrlBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne(); } @@ -2067,7 +2113,7 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List queryResult = query @@ -2093,9 +2139,9 @@ public List listCntrlHstry(String id){ String idntfNum = result.getName(); - result.setYear(getFltCountYear(idntfNum)); - result.setMonth(getFltCountMonth(idntfNum)); - result.setDay(getFltCountDay(idntfNum)); + result.setYear(getFltCountYear(idntfNum, authCheck, groupId)); + result.setMonth(getFltCountMonth(idntfNum, authCheck, groupId)); + result.setDay(getFltCountDay(idntfNum, authCheck, groupId)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); node.setName("-"); @@ -2109,52 +2155,76 @@ public List listCntrlHstry(String id){ return result; } - private Long getFltCountDay(String idntfNum){ + private Long getFltCountDay(String idntfNum, boolean authCheck, String groupId){ 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.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne(); } - private Long getFltCountMonth(String idntfNum){ + private Long getFltCountMonth(String idntfNum, boolean authCheck, String groupId){ 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())); builder.and(qCtrCntrlBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne(); } - private Long getFltCountYear(String idntfNum){ + private Long getFltCountYear(String idntfNum, boolean authCheck, String groupId){ 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().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qCtrCntrlBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) .fetchOne(); } @@ -2186,7 +2256,7 @@ public List listCntrlHstry(String id){ BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); - if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query @@ -2246,7 +2316,7 @@ public List listCntrlHstry(String id){ BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); - if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query @@ -2302,7 +2372,7 @@ public List listCntrlHstry(String id){ BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); - if(groupId != null && groupId.equals("")) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query @@ -2340,35 +2410,44 @@ public List listCntrlHstry(String id){ * @param formatParam * @return */ - public List fltTopTimeStcs(String date, String[] formatParam){ - QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; + public List fltTopTimeStcs(String date, String groupId, boolean authCheck, String[] formatParam){ + + QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; + QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" - , bas.createDt + , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( Projections.bean(FlightStcsValueModel.class, - bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 + qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 Expressions.stringTemplate( "CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", - bas.cntrlEndDt, - bas.cntrlStDt + qCtrCntrlBas.cntrlEndDt, + qCtrCntrlBas.cntrlStDt ).as("value") // 결과 객체의 프로퍼티 이름을 지정 ) ) - .from(bas) + .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(bas.idntfNum) + .groupBy(qCtrCntrlBas.idntfNum) .orderBy(Expressions.stringTemplate( "SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1}))))", - bas.cntrlEndDt, - bas.cntrlStDt + qCtrCntrlBas.cntrlEndDt, + qCtrCntrlBas.cntrlStDt ).desc()) .limit(5) .fetch(); @@ -2391,28 +2470,38 @@ public List listCntrlHstry(String id){ * @param formatParam * @return */ - public List fltTopDistanceStcs(String date, String[] formatParam){ - QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; + public List fltTopDistanceStcs(String date, String groupId, boolean authCheck, String[] formatParam){ + QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; + QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" - , bas.createDt + , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); + List result = query .select( Projections.bean(FlightStcsValueModel.class, - bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 - bas.ttlDstnc.sum().as("value") + qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 + qCtrCntrlBas.ttlDstnc.sum().as("value") ) ) - .from(bas) + .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(bas.idntfNum) - .orderBy(bas.ttlDstnc.sum().desc()) + .groupBy(qCtrCntrlBas.idntfNum) + .orderBy(qCtrCntrlBas.ttlDstnc.sum().desc()) .limit(5) .fetch(); @@ -2434,28 +2523,37 @@ public List listCntrlHstry(String id){ * @param formatParam * @return */ - public List fltTopCountStcs(String date, String[] formatParam){ - QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; - + public List fltTopCountStcs(String date, String groupId, boolean authCheck, String[] formatParam){ + + QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; + QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" - , bas.createDt + , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( Projections.bean(FlightStcsValueModel.class, - bas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 - bas.cntrlId.count().as("value") + qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 + qCtrCntrlBas.cntrlId.count().as("value") ) ) - .from(bas) + .from(qCtrCntrlBas) + .leftJoin(qFltPlanCtrCntrlRel) + .on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId)) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(bas.idntfNum) - .orderBy(bas.cntrlId.count().desc()) + .groupBy(qCtrCntrlBas.idntfNum) + .orderBy(qCtrCntrlBas.cntrlId.count().desc()) .limit(5) .fetch(); 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 fcdc9e56..64168ba6 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 @@ -7,6 +7,7 @@ import java.time.ZoneId; import java.util.List; import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -14,6 +15,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Repository; import org.springframework.util.StringUtils; +import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordRq; import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; @@ -70,7 +72,8 @@ public class FltPlanQueryRepository { private final JPAQueryFactory query; - private final ComnFileService comnFileService; + + private final JwtTokenUtil jwtTokenUtil; // 비행계획서 목록 @@ -1181,24 +1184,29 @@ public class FltPlanQueryRepository { * 비행실적 데이터, top 1 * @return */ - public FlightStcsValueModel getFltResultStaticStcs(){ + public FlightStcsValueModel getFltResultStaticStcs(boolean authCheck, String groupId){ FlightStcsValueModel result = new FlightStcsValueModel(); - QFltPlanCtrCntrlRel bas = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(bas.planSno.isNotNull()); + builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull()); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List queryResult = query .select( Projections.bean(FlightStcsValueModel.class, - bas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 + qFltPlanCtrCntrlRel.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 ) ) - .from(bas) + .from(qFltPlanCtrCntrlRel) + .leftJoin(qFltPlanBas) + .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(bas.idntfNum) - .orderBy(bas.planSno.countDistinct().desc()) + .groupBy(qFltPlanCtrCntrlRel.idntfNum) + .orderBy(qFltPlanCtrCntrlRel.planSno.countDistinct().desc()) .limit(1) .fetch(); @@ -1208,9 +1216,9 @@ public class FltPlanQueryRepository { String idntfNum = result.getName(); - result.setYear(getFltResultYear(idntfNum)); - result.setMonth(getFltResultMonth(idntfNum)); - result.setDay(getFltResultDay(idntfNum)); + result.setYear(getFltResultYear(idntfNum, authCheck, groupId)); + result.setMonth(getFltResultMonth(idntfNum, authCheck, groupId)); + result.setDay(getFltResultDay(idntfNum, authCheck, groupId)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); @@ -1226,7 +1234,8 @@ public class FltPlanQueryRepository { } - private Long getFltResultDay(String idntfNum){ + private Long getFltResultDay(String idntfNum, boolean authCheck, String groupId){ + QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1234,6 +1243,8 @@ public class FltPlanQueryRepository { builder.and(qFltPlanCtrCntrlRel.idntfNum.eq(idntfNum)); builder.and(qFltPlanBas.createDt.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull()); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( @@ -1246,7 +1257,7 @@ public class FltPlanQueryRepository { .fetchOne(); } - private Long getFltResultMonth(String idntfNum){ + private Long getFltResultMonth(String idntfNum, boolean authCheck, String groupId){ QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1255,6 +1266,8 @@ public class FltPlanQueryRepository { builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull()); builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qFltPlanBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( @@ -1267,7 +1280,7 @@ public class FltPlanQueryRepository { .fetchOne(); } - private Long getFltResultYear(String idntfNum){ + private Long getFltResultYear(String idntfNum, boolean authCheck, String groupId){ QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1276,6 +1289,8 @@ public class FltPlanQueryRepository { builder.and(qFltPlanCtrCntrlRel.planSno.isNotNull()); builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qFltPlanBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( @@ -1293,32 +1308,41 @@ public class FltPlanQueryRepository { * 비행계획에 많이 기용된 기체 데이터, top 1 * @return */ - public FlightStcsValueModel getFltPlanStaticStcs(){ + public FlightStcsValueModel getFltPlanStaticStcs(boolean authCheck, String groupId){ FlightStcsValueModel result = new FlightStcsValueModel(); + + QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft; + BooleanBuilder builder = new BooleanBuilder(); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List queryResult = query .select( Projections.bean(FlightStcsValueModel.class, - bas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 + qFltPlanArcrft.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 ) ) - .from(bas) - .groupBy(bas.idntfNum) - .orderBy(bas.planSno.count().desc()) + .from(qFltPlanArcrft) + .leftJoin(qFltPlanBas) + .on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno)) + .groupBy(qFltPlanArcrft.idntfNum) + .orderBy(qFltPlanArcrft.planSno.count().desc()) .limit(1) .fetch(); + log.warn("que => {}", queryResult); + if(queryResult.size() > 0){ result = queryResult.get(0); if(result.getName().equals("")) result.setName(" "); String idntfNum = result.getName(); - result.setYear(getFltPlanYear(idntfNum)); - result.setMonth(getFltPlanMonth(idntfNum)); - result.setDay(getFltPlanDay(idntfNum)); + result.setYear(getFltPlanYear(idntfNum, authCheck, groupId)); + result.setMonth(getFltPlanMonth(idntfNum, authCheck, groupId)); + result.setDay(getFltPlanDay(idntfNum, authCheck, groupId)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); @@ -1333,52 +1357,67 @@ public class FltPlanQueryRepository { return result; } - private Long getFltPlanDay(String idntfNum){ + private Long getFltPlanDay(String idntfNum, boolean authCheck, String groupId){ QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); builder.and(bas.idntfNum.eq(idntfNum.trim())); builder.and(bas.createDt.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( bas.planSno.count() // 결과 객체의 프로퍼티 이름을 지정 ) - .from(bas) + .from(bas) + .leftJoin(qFltPlanBas) + .on(qFltPlanBas.planSno.eq(bas.planSno)) .where(builder) .fetchOne(); } - private Long getFltPlanMonth(String idntfNum){ + private Long getFltPlanMonth(String idntfNum, boolean authCheck, String groupId){ QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); builder.and(bas.idntfNum.eq(idntfNum.trim())); builder.and(bas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(bas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( bas.planSno.count() // 결과 객체의 프로퍼티 이름을 지정 ) - .from(bas) + .from(bas) + .leftJoin(qFltPlanBas) + .on(qFltPlanBas.planSno.eq(bas.planSno)) .where(builder) .fetchOne(); } - private Long getFltPlanYear(String idntfNum){ - QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft; + private Long getFltPlanYear(String idntfNum, boolean authCheck, String groupId){ + QFltPlanArcrft bas = QFltPlanArcrft.fltPlanArcrft; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); builder.and(bas.idntfNum.eq(idntfNum.trim())); builder.and(bas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(bas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( bas.planSno.count() ) - .from(bas) + .from(bas) + .leftJoin(qFltPlanBas) + .on(qFltPlanBas.planSno.eq(bas.planSno)) .where(builder) .fetchOne(); } @@ -1387,10 +1426,10 @@ public class FltPlanQueryRepository { /** - * 비행실적 많은 기체 데이터, top 1 + * 비행승인 많은 기체 데이터, top 1 * @return */ - public FlightStcsValueModel getFltPlanAprvnStaticStcs(){ + public FlightStcsValueModel getFltPlanAprvnStaticStcs(boolean authCheck, String groupId){ FlightStcsValueModel result = new FlightStcsValueModel(); QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; @@ -1398,18 +1437,19 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); builder.and(qFltPlanBas.aprvlYn.eq("Y")); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List queryResult = query .select( Projections.bean(FlightStcsValueModel.class, - qFltPlanArcrft.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정 - qFltPlanArcrft.planSno.count().as("value") // 결과 객체의 프로퍼티 이름을 지정 + qFltPlanArcrft.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 ) ) .from(qFltPlanArcrft) .leftJoin(qFltPlanBas) - .on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno)) + .on(qFltPlanArcrft.planSno.eq(qFltPlanBas.planSno)) .where(builder) .groupBy(qFltPlanArcrft.idntfNum) .orderBy(qFltPlanArcrft.planSno.count().desc()) @@ -1421,9 +1461,9 @@ public class FltPlanQueryRepository { if(result.getName().equals("")) result.setName(" "); String idntfNum = result.getName(); - result.setYear(getFltPlanAprvnYear(idntfNum)); - result.setMonth(getFltPlanAprvnMonth(idntfNum)); - result.setDay(getFltPlanAprvnDay(idntfNum)); + result.setYear(getFltPlanAprvnYear(idntfNum, authCheck, groupId)); + result.setMonth(getFltPlanAprvnMonth(idntfNum, authCheck, groupId)); + result.setDay(getFltPlanAprvnDay(idntfNum, authCheck, groupId)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); @@ -1438,7 +1478,7 @@ public class FltPlanQueryRepository { return result; } - private Long getFltPlanAprvnDay(String idntfNum){ + private Long getFltPlanAprvnDay(String idntfNum, boolean authCheck, String groupId){ QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1446,6 +1486,8 @@ public class FltPlanQueryRepository { builder.and(qFltPlanArcrft.idntfNum.eq(idntfNum)); builder.and(qFltPlanBas.aprvlYn.eq("Y")); builder.and(qFltPlanBas.createDt.eq(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( @@ -1458,7 +1500,7 @@ public class FltPlanQueryRepository { .fetchOne(); } - private Long getFltPlanAprvnMonth(String idntfNum){ + private Long getFltPlanAprvnMonth(String idntfNum, boolean authCheck, String groupId){ QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1468,6 +1510,8 @@ public class FltPlanQueryRepository { builder.and(qFltPlanBas.aprvlYn.eq("Y")); builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusMonths(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qFltPlanBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query .select( @@ -1480,7 +1524,7 @@ public class FltPlanQueryRepository { .fetchOne(); } - private Long getFltPlanAprvnYear(String idntfNum){ + private Long getFltPlanAprvnYear(String idntfNum, boolean authCheck, String groupId){ QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1489,7 +1533,9 @@ public class FltPlanQueryRepository { builder.and(qFltPlanBas.aprvlYn.eq("Y")); builder.and(qFltPlanBas.createDt.goe(LocalDate.now().minusYears(1).atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); builder.and(qFltPlanBas.createDt.loe(LocalDate.now().atStartOfDay().atZone(ZoneId.of("Asia/Seoul")).toInstant())); - + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); + return query .select( qFltPlanArcrft.planSno.count() // 결과 객체의 프로퍼티 이름을 지정 @@ -1507,7 +1553,7 @@ public class FltPlanQueryRepository { * @param formatParam * @return */ - public List fltResultStcs(String date, String[] formatParam){ + public List fltResultStcs(String date, String groupId, boolean authCheck, String[] formatParam){ // QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1525,6 +1571,8 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( @@ -1559,10 +1607,8 @@ public class FltPlanQueryRepository { * @param formatParam * @return */ - public List fltPlanStcs(String date, String[] formatParam){ - // QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; - - QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; + public List fltPlanStcs(String date, String groupId, boolean authCheck, String[] formatParam){ + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" @@ -1575,7 +1621,9 @@ public class FltPlanQueryRepository { , ConstantImpl.create(formatParam[1])); BooleanBuilder builder = new BooleanBuilder(); - if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( @@ -1608,7 +1656,7 @@ public class FltPlanQueryRepository { * @param formatParam * @return */ - public List fltPlanAprvnStcs(String date, String[] formatParam){ + public List fltPlanAprvnStcs(String date, String groupId, boolean authCheck, String[] formatParam){ // QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1626,6 +1674,8 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); builder.and(qFltPlanBas.aprvlYn.eq("Y")); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( @@ -1659,7 +1709,7 @@ public class FltPlanQueryRepository { * @param formatParam * @return */ - public List fltTopResultStcs(String date, String[] formatParam){ + public List fltTopResultStcs(String date, String groupId, boolean authCheck, String[] formatParam){ QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1670,6 +1720,8 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( @@ -1703,9 +1755,10 @@ public class FltPlanQueryRepository { * @param formatParam * @return */ - public List fltTopPlanStcs(String date, String[] formatParam){ + public List fltTopPlanStcs(String date, String groupId, boolean authCheck, String[] formatParam){ - QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; + QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" @@ -1714,6 +1767,8 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( @@ -1723,6 +1778,8 @@ public class FltPlanQueryRepository { ) ) .from(qFltPlanArcrft) + .leftJoin(qFltPlanBas) + .on(qFltPlanBas.planSno.eq(qFltPlanArcrft.planSno)) .where(builder) .groupBy(qFltPlanArcrft.idntfNum) .orderBy(qFltPlanArcrft.planSno.countDistinct().desc()) @@ -1747,7 +1804,7 @@ public class FltPlanQueryRepository { * @param formatParam * @return */ - public List fltTopPlanAprvnStcs(String date, String[] formatParam){ + public List fltTopPlanAprvnStcs(String date, String groupId, boolean authCheck, String[] formatParam){ QFltPlanArcrft qFltPlanArcrft = QFltPlanArcrft.fltPlanArcrft; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -1759,7 +1816,9 @@ public class FltPlanQueryRepository { BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); - builder.and(qFltPlanBas.aprvlYn.eq("Y")); + builder.and(qFltPlanBas.aprvlYn.eq("Y")); + if(groupId != null && !(groupId.equals(""))) builder.and(qFltPlanBas.groupId.eq(groupId)); + if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select(