From 225dfb8120e7227ba6d8bbd257fa6340661338cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dhji=28=EC=A7=80=EB=8C=80=ED=95=9C=29?= Date: Thu, 23 Nov 2023 09:34:11 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EB=8C=80=EC=8B=9C?= =?UTF-8?q?=EB=B3=B4=EB=93=9C=20serviceType=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dash/controller/MainDashController.java | 14 +- .../main/dash/service/MainDashService.java | 156 +-- .../ctr/CtrCntrlQueryRepository.java | 891 +++++++++--------- .../ctr/CtrCntrlWarnLogQueryRepository.java | 10 +- .../repository/flt/FltPlanBasRepository.java | 7 +- .../flt/FltPlanQueryRepository.java | 20 +- .../pty/PtyCstmrQueryRepository.java | 1 + .../java/com/palnet/comn/code/ErrorCode.java | 3 +- 8 files changed, 586 insertions(+), 516 deletions(-) diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java index 7ba6167..075dc3c 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java @@ -83,8 +83,6 @@ public class MainDashController { public ResponseEntity stcsArea(String yyyymm) { List result = null; -// log.debug(yyyymm); - if(yyyymm == null || !(yyyymm.length() == 7) ) { return ResponseEntity.status(HttpStatus.OK) .body(new ErrorResponse(RSErrorCode.ER_PARAM)); @@ -340,14 +338,14 @@ public class MainDashController { @ApiOperation(value = "일일 비정상상황 통계") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") @ApiImplicitParams({ - @ApiImplicitParam(name = "groupId",value = "그룹아이디", dataTypeClass = String.class) + @ApiImplicitParam(name = "serviceType",value = "관할기관코드(cptAuthCode)", dataTypeClass = String.class) }) - public ResponseEntity currentFlightWarn(@RequestParam(required = false) String groupId){ + public ResponseEntity currentFlightWarn(@RequestParam(required = false) String serviceType){ List result = new ArrayList<>(); try { - result = service.currentFlightWarn(groupId); + result = service.currentFlightWarn(serviceType); }catch (Exception e) { log.error("IGNORE : {}", e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) @@ -361,13 +359,13 @@ public class MainDashController { @ApiOperation(value = "일일 비행계획 통계") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") @ApiImplicitParams({ - @ApiImplicitParam(name = "groupId",value = "그룹아이디", dataTypeClass = String.class) + @ApiImplicitParam(name = "serviceType",value = "관할기관코드(cptAuthCode)", dataTypeClass = String.class) }) - public ResponseEntity currentFlightPlan(@RequestParam(required = false) String groupId){ + public ResponseEntity currentFlightPlan(@RequestParam(required = false) String serviceType){ List result = new ArrayList<>(); try { - result = service.currentFlightPlan(groupId); + result = service.currentFlightPlan(serviceType); } catch (Exception e){ log.error("IGNORE : {}", e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index 53d5ca9..06a39e3 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java @@ -18,6 +18,7 @@ import com.palnet.comn.exception.CustomException; import com.querydsl.core.Tuple; import com.querydsl.core.BooleanBuilder; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; @@ -32,47 +33,39 @@ import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogQueryRepository; import com.palnet.biz.jpa.repository.flt.FltPlanArcrftRepository; import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; -@Service @Slf4j +@Service +@RequiredArgsConstructor public class MainDashService { private Logger logger = LoggerFactory.getLogger(getClass()); - @Autowired private PtyDronQueryRepository ptyDronQueryRepository; - - @Autowired private PtyGroupQueryRepository ptyGroupQueryRepository; - - @Autowired private FltPlanQueryRepository fltPlanQueryRepository; - - @Autowired private CtrCntrlWarnLogQueryRepository ctrCntrlWarnLogQueryRepository; - - @Autowired private CtrCntrlQueryRepository query; - - @Autowired private MainStatisticsService mainStatisticsService; - - @Autowired private FltPlanArcrftRepository fltPlanArcrftRepository; - - @Autowired private FltPlanBasRepository fltPlanBasRepository; - - @Autowired - private JwtTokenUtil token; + private JwtTokenUtil token; /** - * 일별 비행횟수 통계 + * 일별 비행건수 통계 * @param rq * @return */ public List mainDashStcsDay(String yyyymm){ - - List resultList = query.mainDashStcsDay(yyyymm); + + // SUPER 권한일 경우와 KAC의 기관코드일 경우 전체적으로 모니터링 가능해야한다. 그외는 자신의 기관에 해당하는 데이터 볼 수 있어야 한다. + String serviceType = ""; + String userAuthByToken = token.getUserAuthByToken(); + String cptAuthCodeByToken = token.getCptAuthCodeByToken(); + if(!"SUPER".equals(userAuthByToken) && !"KAC".equals(cptAuthCodeByToken)){ + serviceType = cptAuthCodeByToken; + } + + List resultList = query.mainDashStcsDay(yyyymm, serviceType); return resultList; } @@ -83,10 +76,17 @@ public class MainDashService { * @return */ public List mainDashStcsArea(String yyyymm){ - - List resultList = query.mainDashStcsArea(yyyymm); - - + + // SUPER 권한일 경우와 KAC의 기관코드일 경우 전체적으로 모니터링 가능해야한다. 그외는 자신의 기관에 해당하는 데이터 볼 수 있어야 한다. + String serviceType = ""; + String userAuthByToken = token.getUserAuthByToken(); + String cptAuthCodeByToken = token.getCptAuthCodeByToken(); + if(!"SUPER".equals(userAuthByToken) && !"KAC".equals(cptAuthCodeByToken)){ + serviceType = cptAuthCodeByToken; + } + + List resultList = query.mainDashStcsArea(yyyymm, serviceType); + return resultList; } @@ -108,9 +108,9 @@ public class MainDashService { } resultList = resultList.stream().sorted((o2, o1) -> o1.get("createDt").toString().compareTo(o2.get("createDt").toString())).collect(Collectors.toList()); - + return resultList; - + } @@ -158,16 +158,26 @@ public class MainDashService { public Map mainDashDronFlightStcs() throws Exception{ - String cptAuth = token.getCptAuthCodeByToken(); + String cptAuth = ""; - cptAuth = "KAC"; // 임시 테스트용으로 KAC 권한 부여 +// cptAuth = "KAC"; // 임시 테스트용으로 KAC 권한 부여 - if(cptAuth == null) { - - log.error("cptAuth가 부여되지 않은 계정입니다"); - throw new Exception(); - +// if(cptAuth == null) { +// +// log.error("cptAuth가 부여되지 않은 계정입니다"); +// throw new Exception(); +// +// } + + // SUPER 권한일 경우와 KAC의 기관코드일 경우 전체적으로 모니터링 가능해야한다. 그외는 자신의 기관에 해당하는 데이터 볼 수 있어야 한다. + String userAuthByToken = token.getUserAuthByToken(); + String cptAuthCodeByToken = token.getCptAuthCodeByToken(); + if(!"SUPER".equals(userAuthByToken) && !"KAC".equals(cptAuthCodeByToken)){ + cptAuth = cptAuthCodeByToken; + } else if(cptAuthCodeByToken.isEmpty()){ + throw new CustomException(ErrorCode.AUTH_NAUTHORIZED, "cptAuthCode 권한이 없음."); } + Map resultList = new HashMap<>(); @@ -284,16 +294,23 @@ public class MainDashService { - public List currentFlightPlan(String groupId){ + public List currentFlightPlan(String serviceType){ - boolean authCheck = mainStatisticsService.authCheck(groupId); +// boolean authCheck = mainStatisticsService.authCheck(groupId); + + // SUPER 권한일 경우와 KAC의 기관코드일 경우 전체적으로 모니터링 가능해야한다. 그외는 자신의 기관에 해당하는 데이터 볼 수 있어야 한다. + String userAuthByToken = token.getUserAuthByToken(); + String cptAuthCodeByToken = token.getCptAuthCodeByToken(); + if(!"SUPER".equals(userAuthByToken) && !"KAC".equals(cptAuthCodeByToken)){ + serviceType = cptAuthCodeByToken; + } String[] dateCate = {"beforeYesterday", "yesterday", "today", "tomorrow"}; // 2일전, 전일, 금일, 명일 List result = new ArrayList<>(); for(String cate : dateCate){ - List fltPlanBas = fltPlanQueryRepository.currentFlightStcs(groupId, authCheck, cate); + List fltPlanBas = fltPlanQueryRepository.currentFlightStcs(serviceType, cate); int plan = fltPlanBas.size(); int aprvnCount = (int)fltPlanBas.stream().filter(value -> value.getAprvlYn().equals("Y")).count(); @@ -331,16 +348,22 @@ public class MainDashService { - public List currentFlightWarn(String groupId){ - boolean authCheck = mainStatisticsService.authCheck(groupId); - + public List currentFlightWarn(String serviceType){ +// boolean authCheck = mainStatisticsService.authCheck(groupId); + + // SUPER 권한일 경우와 KAC의 기관코드일 경우 전체적으로 모니터링 가능해야한다. 그외는 자신의 기관에 해당하는 데이터 볼 수 있어야 한다. + String userAuthByToken = token.getUserAuthByToken(); + String cptAuthCodeByToken = token.getCptAuthCodeByToken(); + if(!"SUPER".equals(userAuthByToken) && !"KAC".equals(cptAuthCodeByToken)){ + serviceType = cptAuthCodeByToken; + } String[] dateCate = {"beforeYesterday", "yesterday", "today", "tomorrow"}; // 2일전, 전일, 금일, 명일 List result = new ArrayList<>(); for(String cate : dateCate){ - List cntrlWarnLogs = ctrCntrlWarnLogQueryRepository.currentStcs(groupId, authCheck, cate); + List cntrlWarnLogs = ctrCntrlWarnLogQueryRepository.currentStcs(serviceType, cate); int count = cntrlWarnLogs.size(); // @@ -380,6 +403,15 @@ public class MainDashService { } public List dailyFlightNumOfStcs(){ + + // SUPER 권한일 경우와 KAC의 기관코드일 경우 전체적으로 모니터링 가능해야한다. 그외는 자신의 기관에 해당하는 데이터 볼 수 있어야 한다. + String userAuthByToken = token.getUserAuthByToken(); + String cptAuthCodeByToken = token.getCptAuthCodeByToken(); + String serviceType = ""; + if(!"SUPER".equals(userAuthByToken) && !"KAC".equals(cptAuthCodeByToken)){ + serviceType = cptAuthCodeByToken; + } + // 1. 전일 , 금일, 명일(내일) Instant yesterdayStart = Instant.now().minus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS); Instant yesterdayEnd = Instant.now().truncatedTo(ChronoUnit.DAYS).minus(1, ChronoUnit.SECONDS); @@ -389,31 +421,47 @@ public class MainDashService { Instant tomorrowEnd = Instant.now().plus(2, ChronoUnit.DAYS).minus(1, ChronoUnit.SECONDS); // 2. 비행계획서 승인 항목 : 비행계획서 제출기준(승인된 건수로봐도 동일) - int yesterdayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", yesterdayStart, yesterdayEnd); - int todayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", todayStart, todayEnd); - int tomorrowCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", tomorrowStart, tomorrowEnd); + int yesterdayCount = 0; + int todayCount = 0; + int tomorrowCount = 0; + if(serviceType != null && !serviceType.isEmpty()){ + yesterdayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetweenAndServiceType("Y", yesterdayStart, yesterdayEnd, serviceType); + todayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetweenAndServiceType("Y", todayStart, todayEnd, serviceType); + tomorrowCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetweenAndServiceType("Y", tomorrowStart, tomorrowEnd, serviceType); + } else { + yesterdayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", yesterdayStart, yesterdayEnd); + todayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", todayStart, todayEnd); + tomorrowCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", tomorrowStart, tomorrowEnd); + } +// int yesterdayCount = serviceType != null && !serviceType.isEmpty() +// ? fltPlanBasRepository.countByAprvlYnAndAprvlDtBetweenAndServiceType("Y", yesterdayStart, yesterdayEnd, serviceType); +// : fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", yesterdayStart, yesterdayEnd) +// int todayCount = serviceType != null && !serviceType.isEmpty() +// ? fltPlanBasRepository.countByAprvlYnAndAprvlDtBetweenAndServiceType("Y", todayStart, todayEnd, serviceType); +// : fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", todayStart, todayEnd) +// int tomorrowCount = serviceType != null && !serviceType.isEmpty() +// ? fltPlanBasRepository.countByAprvlYnAndAprvlDtBetweenAndServiceType("Y", tomorrowStart, tomorrowEnd, serviceType); +// : fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", tomorrowStart, tomorrowEnd) // 3. 비행 완료 항목 : 실제 비행이 완료된 건수 - int yesterdayCompleteCount = query.completeFlight(yesterdayStart,yesterdayEnd).size(); - int todayCompleteCount = query.completeFlight(todayStart,todayEnd).size(); - int tomorrowCompleteCount = query.completeFlight(tomorrowStart,tomorrowEnd).size(); + int yesterdayCompleteCount = query.completeFlight(yesterdayStart,yesterdayEnd,serviceType).size(); + int todayCompleteCount = query.completeFlight(todayStart,todayEnd,serviceType).size(); + int tomorrowCompleteCount = query.completeFlight(tomorrowStart,tomorrowEnd,serviceType).size(); // 4. 미 비행 항목 : 비행계획서는 제출했으나,실제 비행안한 건수 - int yesterdayNotFlight = query.notFlight(yesterdayStart,yesterdayEnd).size(); - int todayNotFlight = query.notFlight(todayStart, todayEnd).size(); - int tomorrowNotFlight = query.notFlight(tomorrowStart,tomorrowEnd).size(); + int yesterdayNotFlight = query.notFlight(yesterdayStart,yesterdayEnd, serviceType).size(); + int todayNotFlight = query.notFlight(todayStart, todayEnd, serviceType).size(); + int tomorrowNotFlight = query.notFlight(tomorrowStart,tomorrowEnd, serviceType).size(); // 5. 비고 : 비행 완료 건수를 기준으로 상승 또는 하락폭 적용 // ex) 오늘 기준 오늘은 어제의 비행 완료 건수를 비교해서 적용 // 전일(어제)은 2일전 비행 완료 건수를 비교해서 적용 // 명일(내일)은 오늘 비행 완료 건수를 비교해서 적용 - int yesterdayNote = yesterdayCompleteCount - query.completeFlight(yesterdayStart.minus(1, ChronoUnit.DAYS), yesterdayEnd.minus(1, ChronoUnit.DAYS)).size(); + int yesterdayNote = yesterdayCompleteCount - query.completeFlight(yesterdayStart.minus(1, ChronoUnit.DAYS), yesterdayEnd.minus(1, ChronoUnit.DAYS), serviceType).size(); double yesterdayNotePercent = yesterdayCompleteCount != 0 ? ((double) yesterdayNote / yesterdayCompleteCount) * 100.0 : 0.0; double todayNotePercent = yesterdayCompleteCount != 0 ? ((double)(todayCompleteCount - yesterdayCompleteCount) / yesterdayCompleteCount) * 100.0 : 0.0; double tomorrowNotePercent = todayCompleteCount != 0 ? ((double) (tomorrowCompleteCount - todayCompleteCount) / todayCompleteCount) * 100.0 : 0.0; - - List result = new ArrayList<>(); result.add(createModel("yesterday", yesterdayCount,yesterdayCompleteCount,yesterdayNotFlight,yesterdayNotePercent)); result.add(createModel("today", todayCount,todayCompleteCount,todayNotFlight,todayNotePercent)); 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 7abf62d..cba9081 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 @@ -9,7 +9,6 @@ import java.util.Calendar; import java.util.Date; import java.util.List; -import com.palnet.biz.api.main.dash.model.MainDashFlightNumStcsModel; import com.palnet.biz.jpa.entity.*; import com.querydsl.core.Tuple; import org.apache.commons.lang3.StringUtils; @@ -51,20 +50,20 @@ import lombok.extern.log4j.Log4j2; @Repository @RequiredArgsConstructor public class CtrCntrlQueryRepository{ - - + + private final JPAQueryFactory query; - + @Autowired private JwtTokenUtil jwtTokenUtil; - + /** * 비행 현황 데이터 조회 * @param rq * @return */ public PageImpl listCntrlBas(AnlsHstryRqModel rq, Pageable pageable){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; @@ -82,14 +81,14 @@ public class CtrCntrlQueryRepository{ builder.and(qCntrlBasEntity.cntrlEndDt.before(InstantUtils.fromDateString(rq.getEndDate()).plus(Duration.ofHours(1)))); builder.and(qCntrlBasEntity.statusCd.eq("99")); builder.and(qFltPlanBas.aprvlYn.eq("Y")); - + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + ArrayList result = new ArrayList(); - - List queryList = query.select(Projections.bean(AnlsHstryModel.class , + + List queryList = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -117,8 +116,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -133,26 +132,26 @@ public class CtrCntrlQueryRepository{ .offset(pageable.getOffset()) .limit(5) .fetch(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } @@ -160,21 +159,21 @@ public class CtrCntrlQueryRepository{ result.add(model); } - - + + return new PageImpl<>(result, pageable, result.size()); } - + public List cntrlBasAuthList(AnlsHstryRqModel rq, String groupId){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; - + BooleanBuilder builder = new BooleanBuilder(); - + builder.and(qCntrlBasEntity.statusCd.eq("99")); - Calendar end = Calendar.getInstance(); + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); @@ -184,10 +183,10 @@ public class CtrCntrlQueryRepository{ if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + ArrayList result = new ArrayList(); - - List queryList = query.select(Projections.bean(AnlsHstryModel.class , + + List queryList = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -215,8 +214,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -227,26 +226,26 @@ public class CtrCntrlQueryRepository{ .where(builder) .orderBy(qCntrlBasEntity.cntrlStDt.asc()) .fetch(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } @@ -254,8 +253,8 @@ public class CtrCntrlQueryRepository{ result.add(model); } - - + + return result; } public PageImpl cntrlBasNormalHstryList(AnlsHstryGroupModel rq, @@ -263,28 +262,28 @@ public class CtrCntrlQueryRepository{ List idntfList, List basResult, List pilotResult){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder idntfBuilder = new BooleanBuilder(); BooleanBuilder basBuilder = new BooleanBuilder(); BooleanBuilder pilotBuilder = new BooleanBuilder(); - - Calendar end = Calendar.getInstance(); + + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); - + builder.and(qFltPlanCtrCntrlRelEntity.groupId.eq(rq.getGroupId())); builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant())); builder.and(qCntrlBasEntity.statusCd.eq("99")); builder.and(qFltPlanBasEntity.aprvlYn.eq("Y")); - + if(idntfList.size()>0) { for(ComIdntfBas list : idntfList) { idntfBuilder.or(qCntrlBasEntity.idntfNum.eq(list.getIdntfNum())); @@ -303,10 +302,10 @@ public class CtrCntrlQueryRepository{ if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + List result = new ArrayList<>(); - - List queryList = query.select(Projections.bean(AnlsHstryModel.class , + + List queryList = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -334,8 +333,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -355,26 +354,26 @@ public class CtrCntrlQueryRepository{ .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } @@ -382,29 +381,29 @@ public class CtrCntrlQueryRepository{ result.add(model); } - - + + return new PageImpl<>(result, pageable, result.size()); } - public PageImpl cntrlBasNormalSmltList(AnlsHstryRqModel rq, - Pageable pageable, + public PageImpl cntrlBasNormalSmltList(AnlsHstryRqModel rq, + Pageable pageable, List adminAuth, - List idntfList, - List basResult, + List idntfList, + List basResult, List pilotResult){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder adminBuilder = new BooleanBuilder(); BooleanBuilder idntfBuilder = new BooleanBuilder(); BooleanBuilder basBuilder = new BooleanBuilder(); BooleanBuilder pilotBuilder = new BooleanBuilder(); - - Calendar end = Calendar.getInstance(); + + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); @@ -412,7 +411,7 @@ public class CtrCntrlQueryRepository{ builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant())); builder.and(qFltPlanBasEntity.aprvlYn.eq("Y")); builder.and(qCntrlBasEntity.statusCd.eq("99")); - + if(adminAuth.size()>0) { for(JwtGroupModel list : adminAuth) { adminBuilder.or(qFltPlanCtrCntrlRelEntity.groupId.eq(list.getGroupId())); @@ -433,14 +432,14 @@ public class CtrCntrlQueryRepository{ pilotBuilder.or(qFltPlanCtrCntrlRelEntity.planSno.eq(list.getPlanSno())); } } - + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + List result = new ArrayList<>(); - - List queryList = query.select(Projections.bean(AnlsHstryModel.class , + + List queryList = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -468,8 +467,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -490,26 +489,26 @@ public class CtrCntrlQueryRepository{ .limit(pageable.getPageSize()) .fetch(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } @@ -517,33 +516,33 @@ public class CtrCntrlQueryRepository{ result.add(model); } - - + + return new PageImpl<>(result, pageable, result.size()); } public List cntrlBasNormalList(AnlsHstryRqModel rq, String idntfNum){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; - + BooleanBuilder builder = new BooleanBuilder(); - Calendar end = Calendar.getInstance(); + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant())); - + builder.and(qCntrlBasEntity.statusCd.eq("99")); builder.and(qCntrlBasEntity.idntfNum.eq(idntfNum)); if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + ArrayList result = new ArrayList(); - - List queryList = query.select(Projections.bean(AnlsHstryModel.class , + + List queryList = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -571,8 +570,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -581,26 +580,26 @@ public class CtrCntrlQueryRepository{ .where(builder) .orderBy(qCntrlBasEntity.cntrlStDt.asc()) .fetch(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } @@ -608,37 +607,37 @@ public class CtrCntrlQueryRepository{ result.add(model); } - - + + return result; } public long cntrlBasNormalHstryCount(AnlsHstryGroupModel rq, - List idntfList, - List basResult, + List idntfList, + List basResult, List pilotResult){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder idntfBuilder = new BooleanBuilder(); BooleanBuilder basBuilder = new BooleanBuilder(); BooleanBuilder pilotBuilder = new BooleanBuilder(); - - Calendar end = Calendar.getInstance(); + + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); - + builder.and(qFltPlanCtrCntrlRelEntity.groupId.eq(rq.getGroupId())); builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant())); builder.and(qFltPlanBasEntity.aprvlYn.eq("Y")); builder.and(qCntrlBasEntity.statusCd.eq("99")); - + if(idntfList.size()>0) { for(ComIdntfBas list : idntfList) { idntfBuilder.or(qCntrlBasEntity.idntfNum.eq(list.getIdntfNum())); @@ -654,14 +653,14 @@ public class CtrCntrlQueryRepository{ pilotBuilder.or(qFltPlanCtrCntrlRelEntity.planSno.eq(list.getPlanSno())); } } - + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - - - - long result = query.select(Projections.bean(AnlsHstryModel.class , + + + + long result = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -689,8 +688,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -708,24 +707,24 @@ public class CtrCntrlQueryRepository{ .orderBy(qCntrlBasEntity.cntrlStDt.asc()) .groupBy(qFltPlanBasEntity.planSno) .fetchCount(); - + return result; } - + public long cntrlBasNormalSmltCount(AnlsHstryRqModel rq, List adminAuth, List idntfList, List basResult, List pilotResult){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder adminBuilder = new BooleanBuilder(); BooleanBuilder idntfBuilder = new BooleanBuilder(); BooleanBuilder basBuilder = new BooleanBuilder(); BooleanBuilder pilotBuilder = new BooleanBuilder(); - - Calendar end = Calendar.getInstance(); + + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); @@ -733,7 +732,7 @@ public class CtrCntrlQueryRepository{ builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant())); builder.and(qFltPlanBasEntity.aprvlYn.eq("Y")); builder.and(qCntrlBasEntity.statusCd.eq("99")); - + if(adminAuth.size()>0) { for(JwtGroupModel list : adminAuth) { adminBuilder.or(qFltPlanCtrCntrlRelEntity.groupId.eq(list.getGroupId())); @@ -754,14 +753,14 @@ public class CtrCntrlQueryRepository{ pilotBuilder.or(qFltPlanCtrCntrlRelEntity.planSno.eq(list.getPlanSno())); } } - + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - - - - long result = query.select(Projections.bean(AnlsHstryModel.class , + + + + long result = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -789,8 +788,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -807,34 +806,34 @@ public class CtrCntrlQueryRepository{ .or(pilotBuilder))) .orderBy(qCntrlBasEntity.cntrlStDt.asc()) .fetchCount(); - + return result; } public List cntrlBasNormalPlanList(AnlsHstryRqModel rq, int planSno){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; - + BooleanBuilder builder = new BooleanBuilder(); - - Calendar end = Calendar.getInstance(); + + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant())); - + builder.and(qFltPlanCtrCntrlRelEntity.planSno.eq(planSno)); builder.and(qCntrlBasEntity.statusCd.eq("99")); if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + ArrayList result = new ArrayList(); - - List queryList = query.select(Projections.bean(AnlsHstryModel.class , + + List queryList = query.select(Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, qCntrlBasEntity.idntfNum, qCntrlBasEntity.statusCd, @@ -862,8 +861,8 @@ public class CtrCntrlQueryRepository{ qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.zipCd - - + + )) .from(qCntrlBasEntity) .leftJoin(qCntrlHstryAreaEntity) @@ -874,35 +873,35 @@ public class CtrCntrlQueryRepository{ .where(builder) .orderBy(qCntrlBasEntity.cntrlStDt.asc()) .fetch(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } model.setStArea(addr); result.add(model); } - - - + + + return result; } @@ -912,9 +911,9 @@ public class CtrCntrlQueryRepository{ QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); - + Calendar end = Calendar.getInstance(); end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate()))); end.add(Calendar.DATE, 1); @@ -924,7 +923,7 @@ public class CtrCntrlQueryRepository{ builder.and(qCntrlBasEntity.cntrlEndDt.loe(endDate.toInstant())); builder.and(qFltPlanBasEntity.aprvlYn.eq("Y")); builder.and(qCntrlBasEntity.statusCd.eq("99")); - + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } @@ -954,7 +953,7 @@ public class CtrCntrlQueryRepository{ QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRelEntity = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); Calendar end = Calendar.getInstance(); @@ -966,11 +965,11 @@ public class CtrCntrlQueryRepository{ builder.and(qCntrlBasEntity.cntrlEndDt.loe(endDate.toInstant())); builder.and(qFltPlanBasEntity.aprvlYn.eq("Y")); builder.and(qCntrlBasEntity.statusCd.eq("99")); - + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + List queryList = query.select( Projections.bean(AnlsHstryModel.class , qCntrlBasEntity.cntrlId, @@ -996,36 +995,36 @@ public class CtrCntrlQueryRepository{ .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); - - + + List result = new ArrayList<>(); - + for(AnlsHstryModel model: queryList) { String addr = ""; - + if(!StringUtils.isEmpty(model.getArea1())) { addr = addr + " " + model.getArea1(); } - + if(!StringUtils.isEmpty(model.getArea2())) { addr = addr + " " + model.getArea2(); } - + if(!StringUtils.isEmpty(model.getArea3())) { addr = addr + " " + model.getArea3(); } - + if(!StringUtils.isEmpty(model.getLandNm())) { addr = addr + " " + model.getLandNm(); } - + if(!StringUtils.isEmpty(model.getLandNum())) { addr = addr + " " + model.getLandNum(); } model.setStArea(addr); result.add(model); } - + return new PageImpl<>(result, pageable, result.size()); } @@ -1035,14 +1034,14 @@ public class CtrCntrlQueryRepository{ * @return */ public List listCntrlHstryPage(String id){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qCtrCntrHstry.cntrlId.eq(id)); - - List result = query.select(Projections.bean(AnlsHstryDetailModel.class , + + List result = query.select(Projections.bean(AnlsHstryDetailModel.class , qCtrCntrHstry.cntrlId , qCtrCntrHstry.hstrySno , qCtrCntrHstry.trmnlId , @@ -1052,14 +1051,14 @@ public class CtrCntrlQueryRepository{ qCtrCntrHstry.lon , qCtrCntrHstry.speed , qCtrCntrHstry.speedType , - qCtrCntrHstry.heading , - qCtrCntrHstry.elev , - qCtrCntrHstry.elevType , - qCtrCntrHstry.mvDstnc , - qCtrCntrHstry.mvDstncType , + qCtrCntrHstry.heading , + qCtrCntrHstry.elev , + qCtrCntrHstry.elevType , + qCtrCntrHstry.mvDstnc , + qCtrCntrHstry.mvDstncType , qCtrCntrHstry.bttrLvl, qCtrCntrHstry.bttrVltg, - qCtrCntrHstry.trmnlRcvDt , + qCtrCntrHstry.trmnlRcvDt , qCtrCntrHstry.srvrRcvDt, qCntrlBasEntity.idntfNum )) @@ -1069,18 +1068,18 @@ public class CtrCntrlQueryRepository{ .where(builder) .orderBy(qCtrCntrHstry.srvrRcvDt.asc()) .fetch(); - + return result; } public List listCntrlHstry(String id){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qCtrCntrHstry.cntrlId.eq(id)); - - List result = query.select(Projections.bean(AnlsHstryDetailModel.class , + + List result = query.select(Projections.bean(AnlsHstryDetailModel.class , qCtrCntrHstry.cntrlId , qCtrCntrHstry.hstrySno , qCtrCntrHstry.trmnlId , @@ -1090,14 +1089,14 @@ public List listCntrlHstry(String id){ qCtrCntrHstry.lon , qCtrCntrHstry.speed , qCtrCntrHstry.speedType , - qCtrCntrHstry.heading , - qCtrCntrHstry.elev , - qCtrCntrHstry.elevType , - qCtrCntrHstry.mvDstnc , - qCtrCntrHstry.mvDstncType , + qCtrCntrHstry.heading , + qCtrCntrHstry.elev , + qCtrCntrHstry.elevType , + qCtrCntrHstry.mvDstnc , + qCtrCntrHstry.mvDstncType , qCtrCntrHstry.bttrLvl, qCtrCntrHstry.bttrVltg, - qCtrCntrHstry.trmnlRcvDt , + qCtrCntrHstry.trmnlRcvDt , qCtrCntrHstry.srvrRcvDt, qCntrlBasEntity.idntfNum )) @@ -1107,18 +1106,18 @@ public List listCntrlHstry(String id){ .where(builder) .orderBy(qCtrCntrHstry.srvrRcvDt.asc()) .fetch(); - + return result; } public long listCntrlHstryCount(String id){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qCtrCntrHstry.cntrlId.eq(id)); - - List resultList = query.select(Projections.bean(AnlsHstryDetailModel.class , + + List resultList = query.select(Projections.bean(AnlsHstryDetailModel.class , qCtrCntrHstry.cntrlId , qCtrCntrHstry.hstrySno , qCtrCntrHstry.trmnlId , @@ -1128,14 +1127,14 @@ public List listCntrlHstry(String id){ qCtrCntrHstry.lon , qCtrCntrHstry.speed , qCtrCntrHstry.speedType , - qCtrCntrHstry.heading , - qCtrCntrHstry.elev , - qCtrCntrHstry.elevType , - qCtrCntrHstry.mvDstnc , - qCtrCntrHstry.mvDstncType , + qCtrCntrHstry.heading , + qCtrCntrHstry.elev , + qCtrCntrHstry.elevType , + qCtrCntrHstry.mvDstnc , + qCtrCntrHstry.mvDstncType , qCtrCntrHstry.bttrLvl, qCtrCntrHstry.bttrVltg, - qCtrCntrHstry.trmnlRcvDt , + qCtrCntrHstry.trmnlRcvDt , qCtrCntrHstry.srvrRcvDt, qCntrlBasEntity.idntfNum )) @@ -1151,31 +1150,31 @@ public List listCntrlHstry(String id){ } return cnt; } - + public List listCntrlHstryArea() { QCtrCntrlHstryArea qCtrCntrHstryArea = QCtrCntrlHstryArea.ctrCntrlHstryArea; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qCtrCntrHstryArea.prcsYn.eq("N")); - - List list = + + List list = query.select(qCtrCntrHstryArea) .from(qCtrCntrHstryArea) .where(builder) .orderBy(qCtrCntrHstryArea.createDt.desc()) .fetch(); - + return list; - + } - + public CtrCntrlHstry getWarnHstryList(String cntrlId) { QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qCtrCntrHstry.cntrlId.eq(cntrlId)); - - CtrCntrlHstry result = + + CtrCntrlHstry result = query.select(Projections.bean(CtrCntrlHstry.class, qCtrCntrHstry.lat, qCtrCntrHstry.lon, @@ -1186,18 +1185,18 @@ public List listCntrlHstry(String id){ .where(builder) .orderBy(qCtrCntrHstry.srvrRcvDt.desc()) .fetchFirst(); - + return result; - + } - + public FltPlanArea getPlanData(int planSno) { QFltPlanArea qFltPlanArea = QFltPlanArea.fltPlanArea; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qFltPlanArea.planSno.eq(planSno)); - - FltPlanArea result = + + FltPlanArea result = query.select(Projections.bean(FltPlanArea.class, qFltPlanArea.planAreaSno, qFltPlanArea.areaType, @@ -1207,13 +1206,13 @@ public List listCntrlHstry(String id){ .where(builder) .limit(1) .fetchFirst(); - + return result; } - + public long checkPlanSno(int planSno) { QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - + BooleanBuilder builder = new BooleanBuilder(); Calendar end = Calendar.getInstance(); Date now = DateUtils.nowDate(); @@ -1223,18 +1222,18 @@ public List listCntrlHstry(String id){ builder.and(qFltPlanBas.schFltEndDt.goe(Instant.now())); builder.and(qFltPlanBas.planSno.eq(planSno)); - - long result = + + long result = query.select(Projections.bean(FltPlanBas.class, qFltPlanBas.planSno )) .from(qFltPlanBas) .where(builder) .fetchCount(); - + return result; } - + /** * 상세보기 조회 * 관제마스터 , 드론 , 드론운영자 정보 조회 @@ -1245,8 +1244,8 @@ public List listCntrlHstry(String id){ QComIdntfBas own = QComIdntfBas.comIdntfBas; QFltPlanCtrCntrlRel rel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas fBas = QFltPlanBas.fltPlanBas; - - CtrCntrlDtlModel result = query.select(Projections.bean(CtrCntrlDtlModel.class , + + CtrCntrlDtlModel result = query.select(Projections.bean(CtrCntrlDtlModel.class , ctr.cntrlId , ctr.cntrlStDt , ctr.cntrlEndDt , @@ -1256,10 +1255,10 @@ public List listCntrlHstry(String id){ cBas.arcrftModelNm , cBas.prdctCmpnNm , cBas.wghtTypeCd , - cBas.imageUrl , - cBas.cameraYn , - cBas.insrncYn , - own.ownerNm , + cBas.imageUrl , + cBas.cameraYn , + cBas.insrncYn , + own.ownerNm , own.hpno , fBas.corpRegYn , fBas.aprvlDt , @@ -1275,14 +1274,14 @@ public List listCntrlHstry(String id){ .leftJoin(fBas) .on(rel.planSno.eq(fBas.planSno)) .where(ctr.cntrlId.eq(controlId)) - + .where(cBas.useYn.eq("Y")) // .where(ctr.objectId.ne("none")) .fetchFirst(); - - + + if(result == null) return new CtrCntrlDtlModel(); - + // if(!StringUtils.isEmpty(result.getOwnerNm())) { // result.setOwnerNm(EncryptUtils.decrypt(result.getOwnerNm())); // } @@ -1293,7 +1292,7 @@ public List listCntrlHstry(String id){ // result.setTelno(EncryptUtils.decrypt(result.getTelno())); // } return result; - + } // TODO 임시 수정 @@ -1353,47 +1352,47 @@ public List listCntrlHstry(String id){ return result; } - + /** * 상세보기 조회 * 지역정보 조회 */ public List detailArea(String controlId) { QCtrCntrlHstryArea area = QCtrCntrlHstryArea.ctrCntrlHstryArea; - + List result = query.select(area) .from(area) .where(area.cntrlId.eq(controlId)) - + .fetch(); - + return result; - + } - - + + /** * 드론 정보 조회 - * + * */ public ComArcrftBas findComArcrftBasByPrdtNum(String prdtNum) { QComArcrftBas bas = QComArcrftBas.comArcrftBas; ComArcrftBas result = query.select(bas).from(bas).where(bas.prdctNum.eq(prdtNum)).where(bas.useYn.eq("Y")).fetchFirst(); - + return result; - + } - + /** * 종료 처리 되지 않은 데이터 종료처리 대상 조회 * 기준 - STAUS = 01 , 최종 수신 시간이 30분 초과 한 경우 */ - + public List endList(){ QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstry hst = QCtrCntrlHstry.ctrCntrlHstry; - - List result = query.select(Projections.bean(CtrCntrlEndModel.class , + + List result = query.select(Projections.bean(CtrCntrlEndModel.class , hst.cntrlId, hst.srvrRcvDt.max().as("srvrRcvDt") )) @@ -1406,14 +1405,14 @@ public List listCntrlHstry(String id){ )) .groupBy(hst.cntrlId) .fetch(); - + return result; - + } - - - - + + + + /** * 후처리 대상자 선정을 위한 조회 쿼리 */ @@ -1428,27 +1427,27 @@ public List listCntrlHstry(String id){ .limit(100) // 100건만 추출 .fetch(); return result; - + } - - + + /*** * 시뮬레이션 상세정보 조회 쿼리 - * + * */ - + public AnlsSmltDetailModel anlsSmltDetail(String cntrlId){ QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; QComArcrftBas air = QComArcrftBas.comArcrftBas; QComIdntfBas idntf = QComIdntfBas.comIdntfBas; - - AnlsSmltDetailModel result = query.select(Projections.bean(AnlsSmltDetailModel.class , + + AnlsSmltDetailModel result = query.select(Projections.bean(AnlsSmltDetailModel.class , bas.cntrlId , bas.idntfNum , - bas.flghtStDt , + bas.flghtStDt , bas.flghtEndDt , bas.cntrlStDt , - bas.cntrlEndDt , + bas.cntrlEndDt , bas.ttlTime , bas.ttlTimeType , bas.ttlDstnc , @@ -1456,7 +1455,7 @@ public List listCntrlHstry(String id){ bas.avrgSpeed , bas.avrgSpeedType , bas.bttrCnsmptn , - air.arcrftTypeCd , + air.arcrftTypeCd , air.prdctNum , air.arcrftModelNm , air.imageUrl @@ -1469,37 +1468,37 @@ public List listCntrlHstry(String id){ .on(air.useYn.eq("Y")) .where(bas.cntrlId.eq(cntrlId)) .fetchFirst(); - + return result; - - + + } - - + + /*** - * 시뮬레이션 통계 + * 시뮬레이션 통계 */ - + public List anlsSmltStcs(String cntrlId){ - + QCtrCntrlHstry hstry = QCtrCntrlHstry.ctrCntrlHstry; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , hstry.srvrRcvDt , ConstantImpl.create("%Y-%m-%d")); - - + + StringTemplate formattedTime = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , hstry.srvrRcvDt , ConstantImpl.create("%H:%i")); - - - List result = query.select(Projections.bean(AnlsSmltStcsModel.class , + + + List result = query.select(Projections.bean(AnlsSmltStcsModel.class , formattedTime.as("timeCd"), formattedDate.as("dateCd"), - + hstry.speed.avg().as("avrgSpeed"), hstry.speedType.max().as("speedType"), hstry.elev.avg().as("avrgElev"), @@ -1508,75 +1507,92 @@ public List listCntrlHstry(String id){ hstry.mvDstncType.max().as("mvDstncType"), hstry.bttrLvl.max().as("maxBttrLvl"), hstry.bttrLvl.min().as("minBttrLvl") - + )) .from(hstry) .where(hstry.cntrlId.eq(cntrlId)) .groupBy(formattedDate , formattedTime) .fetch(); - + return result; } - + /*** * 대시보드 통계(지역별) */ - - public List mainDashStcsArea(String yyyymm){ + + public List mainDashStcsArea(String yyyymm, String serviceType){ + QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstryArea area = QCtrCntrlHstryArea.ctrCntrlHstryArea; - + QFltPlanBas fBas = QFltPlanBas.fltPlanBas; + QFltPlanCtrCntrlRel rel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.cntrlStDt , ConstantImpl.create("%Y-%m")); - - List result = query.select(Projections.bean(MainDashStcsModel.class , - area.area1.as("typeCd"), - area.count().as("count") + BooleanBuilder builder = new BooleanBuilder(); + builder.and(area.area1.isNotNull()); + builder.and(formattedDate.eq(yyyymm)); + if(!serviceType.isEmpty()) builder.and(fBas.serviceType.eq(serviceType)); + + List result = query.select(Projections.bean(MainDashStcsModel.class, + area.area1.as("typeCd"), + area.count().as("count") )) .from(bas) .leftJoin(area) - .on(bas.cntrlId.eq(area.cntrlId)) - .on(area.actnType.eq("99")) - .where(area.area1.isNotNull()) - .where(formattedDate.eq(yyyymm)) + .on(bas.cntrlId.eq(area.cntrlId).and(area.actnType.eq("99"))) + .leftJoin(rel).on(bas.cntrlId.eq(rel.cntrlId)) + .leftJoin(fBas).on(rel.planSno.eq(fBas.planSno)) + .where(builder) .groupBy(area.area1) .orderBy(area.count().desc()) .limit(5) .fetch(); - + return result; - - + + } - + /*** * 대시보드 통계(일자별) */ - - public List mainDashStcsDay(String yyyymm){ + + public List mainDashStcsDay(String yyyymm, String serviceType){ QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; - + QFltPlanBas fBas = QFltPlanBas.fltPlanBas; + QFltPlanCtrCntrlRel rel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.cntrlStDt , ConstantImpl.create("%Y-%m")); - + StringTemplate formattedDate2 = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.cntrlStDt , ConstantImpl.create("%d")); - - List result = query.select(Projections.bean(MainDashStcsModel.class , + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(bas.statusCd.eq("99")); + builder.and(formattedDate.eq(yyyymm)); + if(!serviceType.isEmpty()){ + builder.and(fBas.serviceType.eq(serviceType)); + } + + List result = query.select(Projections.bean(MainDashStcsModel.class , formattedDate2.as("typeCd"), bas.count().as("count") )) .from(bas) - .where(bas.statusCd.eq("99")) - .where(formattedDate.eq(yyyymm)) + .leftJoin(rel).on(bas.cntrlId.eq(rel.cntrlId)) + .leftJoin(fBas).on(rel.planSno.eq(fBas.planSno)) + .where(builder) .groupBy(formattedDate2) .fetch(); return result; @@ -1600,16 +1616,16 @@ public List listCntrlHstry(String id){ return list; } - + @Cacheable(value = "group-auth") public List findByGroupInfo() { QPtyCstmrGroup pcg = QPtyCstmrGroup.ptyCstmrGroup; QPtyGroupBas pgb = QPtyGroupBas.ptyGroupBas; - String authId = jwtTokenUtil.getUserAuthByToken(); + String authId = jwtTokenUtil.getUserAuthByToken(); Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); List groupAuth = jwtTokenUtil.getGroupAuthByToken(); - + BooleanBuilder builder = new BooleanBuilder(); builder.and(pgb.useYn.eq("Y")); if("ADMIN".equals(authId) || "SUPER".equals(authId)) { @@ -1619,7 +1635,7 @@ public List listCntrlHstry(String id){ builder.and(pcg.aprvlYn.eq("Y")); builder.and(pcg.cstmrSno.eq(cstmrSno)); } - + List model = query.select(Projections.bean(CtrCntrlGroupModel.class, pgb.groupId.as("groupId"), pgb.groupNm.as("groupNm"), @@ -1631,8 +1647,8 @@ public List listCntrlHstry(String id){ .groupBy(pgb.groupId) .where(builder) .fetch(); - - + + for(CtrCntrlGroupModel list : model) { if(groupAuth != null) { for(JwtGroupModel lists : groupAuth) { @@ -1647,7 +1663,7 @@ public List listCntrlHstry(String id){ } return model; // - + // BooleanBuilder builder = new BooleanBuilder(); // builder.and(pcg.aprvlYn.eq("Y")); // @@ -1689,10 +1705,10 @@ public List listCntrlHstry(String id){ } } if("NORMAL".equals(groupAuth)){ // 그룹권한이 노말인 경우 - builder.and(idntfBas.cstmrSno.eq(cstmrSno)); + builder.and(idntfBas.cstmrSno.eq(cstmrSno)); } } - + List arcrftList = query.select(Projections.bean(CtrCntrlGroupArcrftModel.class, // arcrftBas.arcrftSno, // arcrftBas.groupId, @@ -1714,11 +1730,11 @@ public List listCntrlHstry(String id){ idntfBas.idntfNum.like("PA%")) .where(builder) .fetch(); - + return arcrftList; //------------------------------------------- - + // List arcrftList = query.select(Projections.bean(CtrCntrlGroupArcrftModel.class, // arcrftBas.arcrftSno, // arcrftBas.groupId, @@ -1749,15 +1765,15 @@ public List listCntrlHstry(String id){ * 김포공항, 비행실적 통계 API * @param yyyymm * @return - */ + */ public List mainStcsFlight(String date, String idntfNum, String[] formatParam){ QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.cntrlStDt , ConstantImpl.create(formatParam[0])); - + StringTemplate formattedDate2 = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.cntrlStDt @@ -1775,15 +1791,15 @@ public List listCntrlHstry(String id){ List result = query .select( Projections.bean( - MainDashStcsModel.class , + MainDashStcsModel.class , formattedDate2.as("typeCd"), bas.count().as("count") ) ) .from(bas) .where(builder) - .groupBy(formattedDate2) - .fetch(); + .groupBy(formattedDate2) + .fetch(); if(result.size() <= 0){ @@ -1806,32 +1822,32 @@ public List listCntrlHstry(String id){ public List mainStcsWarningFlight(String date, String[] formatParam){ // QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlWarnLog bas = QCtrCntrlWarnLog.ctrCntrlWarnLog; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.createDt , ConstantImpl.create(formatParam[0])); - + StringTemplate formattedDate2 = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , bas.createDt , ConstantImpl.create(formatParam[1])); - BooleanBuilder builder = new BooleanBuilder(); - if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + BooleanBuilder builder = new BooleanBuilder(); + if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); List result = query .select( Projections.bean( - MainDashStcsModel.class , + MainDashStcsModel.class , formattedDate2.as("typeCd"), bas.cntrlId.countDistinct().as("count") ) ) .from(bas) .where(builder) - .groupBy(formattedDate2) - .fetch(); + .groupBy(formattedDate2) + .fetch(); if(result.size() <= 0){ MainDashStcsModel node = new MainDashStcsModel(); @@ -1843,24 +1859,24 @@ public List listCntrlHstry(String id){ return result; } - + public List getCompleteInfo(String cntrlId){ - + QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry; - + BooleanBuilder builder = new BooleanBuilder(); builder.and(qCtrCntrHstry.cntrlId.eq(cntrlId)); builder.and(qCntrlBasEntity.statusCd.eq("99")); - - List result = query.select(Projections.bean(CtrCntrlHstry.class , + + List result = query.select(Projections.bean(CtrCntrlHstry.class , qCtrCntrHstry.lat, qCtrCntrHstry.lon , qCtrCntrHstry.speed , qCtrCntrHstry.speedType , - qCtrCntrHstry.elev , - qCtrCntrHstry.elevType , - qCtrCntrHstry.mvDstnc , + qCtrCntrHstry.elev , + qCtrCntrHstry.elevType , + qCtrCntrHstry.mvDstnc , qCtrCntrHstry.mvDstncType )) .from(qCtrCntrHstry) @@ -1869,7 +1885,7 @@ public List listCntrlHstry(String id){ .where(builder) .orderBy(qCtrCntrHstry.srvrRcvDt.asc()) .fetch(); - + return result; } @@ -1887,11 +1903,11 @@ public List listCntrlHstry(String id){ BooleanBuilder builder = new BooleanBuilder(); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); - + List queryResult = query .select( Projections.bean(FlightStcsValueModel.class, - qCtrCntrlBas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 + qCtrCntrlBas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 ) ) .from(qCtrCntrlBas) @@ -1908,7 +1924,7 @@ public List listCntrlHstry(String id){ ).desc()) .limit(1) .fetch(); - + if(queryResult.size() > 0){ result = queryResult.get(0); @@ -1929,7 +1945,7 @@ public List listCntrlHstry(String id){ } else { FlightStcsValueModel node = new FlightStcsValueModel(); - node.setName("-"); + node.setName("-"); node.setYear("noData"); node.setMonth("noData"); node.setDay("noData"); @@ -1939,7 +1955,7 @@ public List listCntrlHstry(String id){ } return result; - } + } private String getFltTimeDay(String idntfNum, boolean authCheck, String serviceType){ QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; @@ -1961,7 +1977,7 @@ public List listCntrlHstry(String id){ "CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", qCtrCntrlBas.cntrlEndDt, qCtrCntrlBas.cntrlStDt - ) // 결과 객체의 프로퍼티 이름을 지정 + ) // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) .leftJoin(qFltPlanCtrCntrlRel) @@ -1975,22 +1991,22 @@ public List listCntrlHstry(String id){ private String getFltTimeMonth(String idntfNum, boolean authCheck, String serviceType){ QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; - QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; + QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); + 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(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return String.valueOf(query - .select( + .select( Expressions.stringTemplate( "CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", qCtrCntrlBas.cntrlEndDt, qCtrCntrlBas.cntrlStDt - ) // 결과 객체의 프로퍼티 이름을 지정 + ) // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) .leftJoin(qFltPlanCtrCntrlRel) @@ -2007,14 +2023,14 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); + 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(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return String.valueOf(query - .select( + .select( Expressions.stringTemplate( "CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", qCtrCntrlBas.cntrlEndDt, @@ -2045,11 +2061,11 @@ public List listCntrlHstry(String id){ if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); - + List queryResult = query .select( Projections.bean(FlightStcsValueModel.class, - qCtrCntrlBas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 + qCtrCntrlBas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정 ) ) .from(qCtrCntrlBas) @@ -2061,7 +2077,7 @@ public List listCntrlHstry(String id){ .groupBy(qCtrCntrlBas.idntfNum) .orderBy(qCtrCntrlBas.ttlDstnc.sum().desc()) .limit(1) - .fetch(); + .fetch(); if(queryResult.size() > 0){ result = queryResult.get(0); @@ -2071,7 +2087,7 @@ public List listCntrlHstry(String id){ Double year = getFltDistanceYear(idntfNum, authCheck, serviceType); Double month = getFltDistanceMonth(idntfNum, authCheck, serviceType); Double day =getFltDistanceDay(idntfNum, authCheck, serviceType); - + year = year == null ? 0.0 : year; month = month == null ? 0.0 : month; day = day == null ? 0.0 : day; @@ -2082,13 +2098,13 @@ public List listCntrlHstry(String id){ result.setDay(day); } else { FlightStcsValueModel node = new FlightStcsValueModel(); - node.setName("-"); + node.setName("-"); node.setYear("noData"); node.setMonth("noData"); node.setDay("noData"); result = node; - } + } return result; } @@ -2108,8 +2124,8 @@ public List listCntrlHstry(String id){ .eq(LocalDate.now().toString())); return query - .select( - qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 + .select( + qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) .leftJoin(qFltPlanCtrCntrlRel) @@ -2126,14 +2142,14 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); + 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(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query - .select( + .select( qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 ) @@ -2152,15 +2168,15 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); + 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(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query - .select( - qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 + .select( + qCtrCntrlBas.ttlDstnc.sum() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) .leftJoin(qFltPlanCtrCntrlRel) @@ -2185,7 +2201,7 @@ public List listCntrlHstry(String id){ BooleanBuilder builder = new BooleanBuilder(); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); - + List queryResult = query .select( Projections.bean(FlightStcsValueModel.class, @@ -2203,7 +2219,7 @@ public List listCntrlHstry(String id){ .orderBy(qCtrCntrlBas.cntrlId.count().desc()) .limit(1) .fetch(); - + if(queryResult.size() > 0){ result = queryResult.get(0); @@ -2214,7 +2230,7 @@ public List listCntrlHstry(String id){ result.setDay(getFltCountDay(idntfNum, authCheck, serviceType)); } else { FlightStcsValueModel node = new FlightStcsValueModel(); - node.setName("-"); + node.setName("-"); node.setYear("noData"); node.setMonth("noData"); node.setDay("noData"); @@ -2236,13 +2252,13 @@ public List listCntrlHstry(String id){ builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); builder.and(Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qCtrCntrlBas.createDt, dateFormat) .eq(LocalDate.now().toString())); - + if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query - .select( - qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 + .select( + qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) .leftJoin(qFltPlanCtrCntrlRel) @@ -2259,14 +2275,14 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); + 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(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query - .select( + .select( qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) @@ -2284,15 +2300,15 @@ public List listCntrlHstry(String id){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCtrCntrlBas.idntfNum.eq(idntfNum)); + 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(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); return query - .select( - qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 + .select( + qCtrCntrlBas.cntrlId.count() // 결과 객체의 프로퍼티 이름을 지정 ) .from(qCtrCntrlBas) .leftJoin(qFltPlanCtrCntrlRel) @@ -2312,31 +2328,31 @@ public List listCntrlHstry(String id){ * @param formatParam * @return */ - public List fltTimeStcs(String date, String serviceType, boolean authCheck, String[] formatParam){ + public List fltTimeStcs(String date, String serviceType, boolean authCheck, String[] formatParam){ QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); - + StringTemplate formattedDate2 = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[1])); - BooleanBuilder builder = new BooleanBuilder(); - if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); + BooleanBuilder builder = new BooleanBuilder(); + if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); List result = query .select( Projections.bean( - FlightStcsValueModel.class , + FlightStcsValueModel.class , formattedDate2.as("name"), Expressions.stringTemplate( "CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))", @@ -2351,8 +2367,8 @@ public List listCntrlHstry(String id){ .leftJoin(qFltPlanBas) .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(formattedDate2) - .fetch(); + .groupBy(formattedDate2) + .fetch(); if(result.size() <= 0){ FlightStcsValueModel node = new FlightStcsValueModel(); @@ -2377,18 +2393,18 @@ public List listCntrlHstry(String id){ QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); - + StringTemplate formattedDate2 = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[1])); - BooleanBuilder builder = new BooleanBuilder(); + BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); @@ -2396,7 +2412,7 @@ public List listCntrlHstry(String id){ List result = query .select( Projections.bean( - FlightStcsValueModel.class , + FlightStcsValueModel.class , formattedDate2.as("name"), qCtrCntrlBas.ttlDstnc.sum().as("value") ) @@ -2407,9 +2423,9 @@ public List listCntrlHstry(String id){ .leftJoin(qFltPlanBas) .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(formattedDate2) + .groupBy(formattedDate2) .fetch(); - + if(result.size() <= 0){ FlightStcsValueModel node = new FlightStcsValueModel(); @@ -2433,18 +2449,18 @@ public List listCntrlHstry(String id){ QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); - + StringTemplate formattedDate2 = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[1])); - BooleanBuilder builder = new BooleanBuilder(); + BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); @@ -2452,7 +2468,7 @@ public List listCntrlHstry(String id){ List result = query .select( Projections.bean( - FlightStcsValueModel.class , + FlightStcsValueModel.class , formattedDate2.as("name"), qCtrCntrlBas.cntrlId.count().as("value") ) @@ -2463,9 +2479,9 @@ public List listCntrlHstry(String id){ .leftJoin(qFltPlanBas) .on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno)) .where(builder) - .groupBy(formattedDate2) + .groupBy(formattedDate2) .fetch(); - + if(result.size() <= 0){ FlightStcsValueModel node = new FlightStcsValueModel(); @@ -2489,13 +2505,13 @@ public List listCntrlHstry(String id){ QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - + StringTemplate formattedDate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); - BooleanBuilder builder = new BooleanBuilder(); + BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); @@ -2525,7 +2541,7 @@ public List listCntrlHstry(String id){ ).desc()) .limit(5) .fetch(); - + if(result.size() <= 0){ FlightStcsValueModel node = new FlightStcsValueModel(); @@ -2544,8 +2560,8 @@ public List listCntrlHstry(String id){ * @param formatParam * @return */ - public List fltTopDistanceStcs(String date, String serviceType, boolean authCheck, String[] formatParam){ - + public List fltTopDistanceStcs(String date, String serviceType, boolean authCheck, String[] formatParam){ + QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; @@ -2555,11 +2571,11 @@ public List listCntrlHstry(String id){ , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); - BooleanBuilder builder = new BooleanBuilder(); + BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); - + List result = query .select( @@ -2578,7 +2594,7 @@ public List listCntrlHstry(String id){ .orderBy(qCtrCntrlBas.ttlDstnc.sum().desc()) .limit(5) .fetch(); - + if(result.size() <= 0){ FlightStcsValueModel node = new FlightStcsValueModel(); @@ -2608,7 +2624,7 @@ public List listCntrlHstry(String id){ , qCtrCntrlBas.createDt , ConstantImpl.create(formatParam[0])); - BooleanBuilder builder = new BooleanBuilder(); + BooleanBuilder builder = new BooleanBuilder(); if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); if(serviceType != null && !(serviceType.equals(""))) builder.and(qFltPlanBas.serviceType.eq(serviceType)); if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); @@ -2630,7 +2646,7 @@ public List listCntrlHstry(String id){ .orderBy(qCtrCntrlBas.cntrlId.count().desc()) .limit(5) .fetch(); - + if(result.size() <= 0){ FlightStcsValueModel node = new FlightStcsValueModel(); @@ -2642,43 +2658,54 @@ public List listCntrlHstry(String id){ return result; } - - public List completeFlight(Instant start, Instant end) { - // Tuple 여러 값을 담을 수 있는 클래스, 여러 필드를 한꺼번에 반환해야 할 때 유용하다. - QFltPlanCtrCntrlRel fpccr = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; - QFltPlanBas fpb = QFltPlanBas.fltPlanBas; - QCtrCntrlBas ccb = QCtrCntrlBas.ctrCntrlBas; - - return query - .select( - fpb.planSno, - fpb.aprvlYn, - fpb.aprvlDt, - ccb.cntrlId, - ccb.statusCd, - ccb.cntrlStDt, - ccb.cntrlEndDt - ) - .from(fpb) - .leftJoin(fpccr).on(fpb.planSno.eq(fpccr.planSno)) - .leftJoin(ccb).on(fpccr.cntrlId.eq(ccb.cntrlId)) - .where( - fpb.aprvlYn.eq("Y"), - fpccr.planSno.isNotNull(), - ccb.statusCd.eq("99"), - ccb.cntrlEndDt.between(start,end) - ) - .groupBy(fpccr.planSno) - .fetch(); - } + public List completeFlight(Instant start, Instant end, String serviceType) { + // Tuple 여러 값을 담을 수 있는 클래스, 여러 필드를 한꺼번에 반환해야 할 때 유용하다. + QFltPlanCtrCntrlRel fpccr = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; + QFltPlanBas fpb = QFltPlanBas.fltPlanBas; + QCtrCntrlBas ccb = QCtrCntrlBas.ctrCntrlBas; + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(fpb.aprvlYn.eq("Y")); + builder.and(fpccr.planSno.isNotNull()); + builder.and(ccb.statusCd.eq("99")); + builder.and(ccb.cntrlEndDt.between(start, end)); + if (serviceType != null && !serviceType.isEmpty()) builder.and(fpb.serviceType.eq(serviceType)); + + return query + .select( + fpb.planSno, + fpb.aprvlYn, + fpb.aprvlDt, + ccb.cntrlId, + ccb.statusCd, + ccb.cntrlStDt, + ccb.cntrlEndDt + ) + .from(fpb) + .leftJoin(fpccr).on(fpb.planSno.eq(fpccr.planSno)) + .leftJoin(ccb).on(fpccr.cntrlId.eq(ccb.cntrlId)) + .where(builder) + .groupBy(fpccr.planSno) + .fetch(); + + } + + public List notFlight(Instant start, Instant end, String serviceType) { - public List notFlight(Instant start, Instant end){ QCtrCntrlBas ccb = QCtrCntrlBas.ctrCntrlBas; QFltPlanCtrCntrlRel fpccr = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QFltPlanBas fpb = QFltPlanBas.fltPlanBas; + BooleanBuilder builder = new BooleanBuilder(); + builder.and(fpb.aprvlYn.eq("Y")); + builder.and(fpccr.planSno.isNull()); + builder.and(ccb.statusCd.isNull()); + builder.and(ccb.cntrlId.isNull()); + builder.and(fpb.aprvlDt.between(start, end)); + if (serviceType != null && !serviceType.isEmpty()) builder.and(fpb.serviceType.eq(serviceType)); + return query .select( fpb.planSno, @@ -2691,15 +2718,9 @@ public List listCntrlHstry(String id){ .from(fpb) .leftJoin(fpccr).on(fpb.planSno.eq(fpccr.planSno)) .leftJoin(ccb).on(fpccr.cntrlId.eq(ccb.cntrlId)) - .where( - fpb.aprvlYn.eq("Y"), - fpccr.planSno.isNull(), - ccb.statusCd.isNull(), - ccb.cntrlId.isNull(), - fpb.aprvlDt.between(start, end) - ) + .where(builder) .fetch(); } - + } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java index fd568ca..35aa2d8 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlWarnLogQueryRepository.java @@ -284,12 +284,12 @@ public class CtrCntrlWarnLogQueryRepository { return result; } - public List currentStcs(String groupId, boolean authCheck, String cate){ + public List currentStcs(String groupId, String cate){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QCtrCntrlWarnLog qCtrCntrlWarnLog = QCtrCntrlWarnLog.ctrCntrlWarnLog; - BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas, qCtrCntrlWarnLog); + BooleanBuilder builder = getCurrentBooleanBuilder(groupId, cate, qFltPlanBas, qCtrCntrlWarnLog); List stcsValues = query .select( @@ -310,11 +310,11 @@ public class CtrCntrlWarnLogQueryRepository { return stcsValues; } - private BooleanBuilder getCurrentBooleanBuilder(String groupId, boolean authCheck, String cate, QFltPlanBas qFltPlanBas, QCtrCntrlWarnLog qCtrCntrlWarnLog){ + private BooleanBuilder getCurrentBooleanBuilder(String serviceType, String cate, QFltPlanBas qFltPlanBas, QCtrCntrlWarnLog qCtrCntrlWarnLog){ BooleanBuilder builder = new BooleanBuilder(); - if(groupId != null && !(groupId.equals("")))builder.and(qFltPlanBas.groupId.eq(groupId)); - if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); + if(serviceType != null && !serviceType.isEmpty())builder.and(qFltPlanBas.serviceType.eq(serviceType)); +// if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); String dateFormat = "%Y-%m-%d"; BooleanExpression dateExpression = null; diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java index 90cfc1d..16d4475 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java @@ -19,11 +19,12 @@ public interface FltPlanBasRepository extends JpaRepository List findBySchFltStDtLessThanEqualAndSchFltEndDtGreaterThanEqualAndAprvlYnAndDelYn(Instant schFltEndDt, Instant schFltStDt, String aprvlYn, String delYn); - @Query("select f from FltPlanBas f " + + @Query(value = "select f from FltPlanBas f " + "where ((SCH_FLT_ST_DT <= :schFltStDt and SCH_FLT_END_DT >= :schFltEndDt)" + "or (SCH_FLT_ST_DT >= :schFltStDt and (SCH_FLT_ST_DT <= :schFltEndDt and SCH_FLT_END_DT >= :schFltEndDt ))" + "or ((SCH_FLT_ST_DT <= :schFltStDt and SCH_FLT_END_DT >= :schFltStDt) and SCH_FLT_END_DT <= :schFltEndDt)" - + "or (SCH_FLT_ST_DT >= :schFltStDt and SCH_FLT_END_DT <= :schFltEndDt)) and DEL_YN='N'") + + "or (SCH_FLT_ST_DT >= :schFltStDt and SCH_FLT_END_DT <= :schFltEndDt)) and DEL_YN='N'" + , nativeQuery = true) List findByStartEndDate(@Param("schFltStDt") Date schFltStDt, @Param("schFltEndDt") Date schFltEndDt); @@ -57,4 +58,6 @@ public interface FltPlanBasRepository extends JpaRepository List findApprovedFlightPlansByApprovalDate(Instant startDate, Instant endDate); int countByAprvlYnAndAprvlDtBetween(String aprvlYn, Instant startDate, Instant endDate); + + int countByAprvlYnAndAprvlDtBetweenAndServiceType(String aprvlYn, Instant startDate, Instant endDate, String serviceType); } 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 4d1e14d..aaa0f1a 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 @@ -1848,15 +1848,15 @@ public class FltPlanQueryRepository { /** * 일일 비행데이터 - * @param groupId + * @param serviceType * @param authCheck * @param cate * @return */ - public List currentFlightStcs(String groupId, boolean authCheck, String cate){ + public List currentFlightStcs(String serviceType, String cate){ QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas; - BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas); + BooleanBuilder builder = getCurrentBooleanBuilder(serviceType, cate, qFltPlanBas); List stcsValues = query .select( @@ -1873,11 +1873,10 @@ public class FltPlanQueryRepository { return stcsValues; } - private BooleanBuilder getCurrentBooleanBuilder(String groupId, boolean authCheck, String cate, QFltPlanBas qFltPlanBas){ + private BooleanBuilder getCurrentBooleanBuilder(String serviceType, String cate, QFltPlanBas qFltPlanBas){ BooleanBuilder builder = new BooleanBuilder(); - if(groupId != null && !(groupId.equals("")))builder.and(qFltPlanBas.groupId.eq(groupId)); - if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken())); + if (serviceType != null && !serviceType.isEmpty()) builder.and(qFltPlanBas.serviceType.eq(serviceType)); BooleanExpression dateExpression = null; @@ -1991,15 +1990,14 @@ public class FltPlanQueryRepository { QComIdntfBas cib = QComIdntfBas.comIdntfBas; QFltPlanArcrft fpa = QFltPlanArcrft.fltPlanArcrft; QFltPlanBas fpb = QFltPlanBas.fltPlanBas; - QPtyGroupBas pgb = QPtyGroupBas.ptyGroupBas; +// QPtyGroupBas pgb = QPtyGroupBas.ptyGroupBas; QFltPlanCtrCntrlRel fpccr = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel; QCtrCntrlBas ccb = QCtrCntrlBas.ctrCntrlBas; BooleanBuilder builder = new BooleanBuilder(); - if(!cptAuth.equals("KAC")) { - builder.and(pgb.groupNm.eq("cptAuth")); - } + if(!cptAuth.isEmpty()) builder.and(fpb.serviceType.eq(cptAuth)); + Instant now = Instant.now(); ZoneId databaseTimeZone = ZoneId.of("Asia/Seoul"); @@ -2025,7 +2023,7 @@ public class FltPlanQueryRepository { ) .from(fpa) .leftJoin(fpb).on(fpb.planSno.eq(fpa.planSno)) - .leftJoin(pgb).on(pgb.groupId.eq(fpb.groupId)) +// .leftJoin(pgb).on(pgb.groupId.eq(fpb.groupId)) .leftJoin(cib).on(cib.idntfNum.eq(fpa.idntfNum)) .leftJoin(fpccr).on(fpccr.planSno.eq(fpb.planSno)) .leftJoin(ccb).on(ccb.cntrlId.eq(fpccr.cntrlId)) diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java index 7aa5e51..eeff29f 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java @@ -165,6 +165,7 @@ public class PtyCstmrQueryRepository { model.setCstmrSno(entity.getCstmrSno()); model.setCstmrStatusCd(entity.getCstmrStatusCd()); model.setUserPswd(entity.getUserPswd()); + model.setCptAuthCode(entity.getCptAuthCode()); if (pcgEntityList != null && !pcgEntityList.isEmpty()) { List groupModelList = new ArrayList<>(); for (PtyCstmrGroup pcgEntity : pcgEntityList) { diff --git a/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java b/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java index 2531247..f50745c 100644 --- a/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java +++ b/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java @@ -13,7 +13,8 @@ public enum ErrorCode { PLAN_DATA_DUPLICATE("FT500", "이미 등록된 비행계획서의 비행구역과 비행시간이 일치합니다.\n비행시간 또는 비행구역을 수정하여 주십시오."), ARCRFT_DATA_DUPLICATE("FT501", "해당 기체는 다른 비행계획서에서 이미 등록된 기체입니다.\n비행시간 또는 기체 정보를 확인하여 주십시오."), PLAN_LAANC_NOT_VALID("FT502", "LAANC를 통과하지 못한 비행계획서입니다."), - EXTERNAL_API_ERROR("EA500", "외부서버 호출에 실패하였습니다."); + EXTERNAL_API_ERROR("EA500", "외부서버 호출에 실패하였습니다."), + AUTH_NAUTHORIZED("AU001", "권한이 없습니다.");