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 61a3b0b5..31b8c666 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 @@ -1941,45 +1941,46 @@ public class FltPlanQueryRepository { builder.and(pgb.groupNm.eq("cptAuth")); } Instant now = Instant.now(); + + ZoneId databaseTimeZone = ZoneId.of("Asia/Seoul"); + + LocalDate currentDate = LocalDate.now(ZoneId.of("Asia/Seoul")); + Instant startOfToday = currentDate.atTime(LocalTime.MIN).atZone(databaseTimeZone).toInstant(); + Instant startOfTomorrow = currentDate.plusDays(1).atTime(LocalTime.MIN).atZone(databaseTimeZone).toInstant(); + builder.and( + ccb.cntrlStDt.between(startOfToday, startOfTomorrow) + .or(fpb.schFltStDt.loe(now).and(fpb.schFltEndDt.goe(now))) + ) + .and(fpb.planSno.isNotNull()); + List result = query - .select(Projections.bean(MainDashFlightListModel.class, - pgb.groupNm, - fpb.memberName, - fpa.idntfNum, - ccb.cntrlStDt, - ccb.cntrlEndDt, - Expressions.stringTemplate( - "CONCAT(SEC_TO_TIME(TIME_TO_SEC(TIMEDIFF({0}, {1}))))", - ccb.cntrlEndDt, - ccb.cntrlStDt - ).as("totalFlightTime"), - new CaseBuilder() - .when(ccb.statusCd.eq("01")).then("비행 중") - .when(ccb.statusCd.eq("99")).then("비행 완료") - .when(fpb.planSno.isNotNull()).then("비행 대기 중") - .otherwise("비행 없음").as("status") - )) - .from(fpa) - .leftJoin(fpb).on(fpb.planSno.eq(fpa.planSno)) - .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)) - .where( - builder - .and(ccb.cntrlStDt.between( - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).toInstant(), - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).plus(1, ChronoUnit.DAYS).toInstant() - )) - .and(ccb.cntrlEndDt.between( - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).toInstant(), - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).plus(1, ChronoUnit.DAYS).toInstant() - )) - .and(fpb.planSno.isNotNull()) - ) - .orderBy(((ComparableExpressionBase) groupOrder).desc(), cib.createDt.asc()) - .fetch(); + .select(Projections.bean(MainDashFlightListModel.class, + pgb.groupNm, + fpb.memberName, + fpa.idntfNum, + ccb.cntrlStDt, + ccb.cntrlEndDt, + Expressions.stringTemplate( + "CONCAT(SEC_TO_TIME(TIME_TO_SEC(TIMEDIFF({0}, {1}))))", + ccb.cntrlEndDt, + ccb.cntrlStDt + ).as("totalFlightTime"), + new CaseBuilder() + .when(ccb.statusCd.eq("01")).then("비행 중") + .when(ccb.statusCd.eq("99")).then("비행 완료") + .when(fpb.planSno.isNotNull()).then("비행 대기 중") + .otherwise("비행 없음").as("status") + )) + .from(fpa) + .leftJoin(fpb).on(fpb.planSno.eq(fpa.planSno)) + .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)) + .where(builder) + .orderBy(((ComparableExpressionBase) groupOrder).desc(), cib.createDt.asc()) + .fetch(); return result; } @@ -1999,6 +2000,18 @@ public class FltPlanQueryRepository { builder.and(pgb.groupNm.eq("cptAuth")); } Instant now = Instant.now(); + + ZoneId databaseTimeZone = ZoneId.of("Asia/Seoul"); + + LocalDate currentDate = LocalDate.now(ZoneId.of("Asia/Seoul")); + Instant startOfToday = currentDate.atTime(LocalTime.MIN).atZone(databaseTimeZone).toInstant(); + Instant startOfTomorrow = currentDate.plusDays(1).atTime(LocalTime.MIN).atZone(databaseTimeZone).toInstant(); + + builder.and( + ccb.cntrlStDt.between(startOfToday, startOfTomorrow) + .or(fpb.schFltStDt.loe(now).and(fpb.schFltEndDt.goe(now))) + ) + .and(fpb.planSno.isNotNull()); List res = query .select( @@ -2015,18 +2028,7 @@ public class FltPlanQueryRepository { .leftJoin(cib).on(cib.idntfNum.eq(fpa.idntfNum)) .leftJoin(fpccr).on(fpccr.planSno.eq(fpb.planSno)) .leftJoin(ccb).on(ccb.cntrlId.eq(fpccr.cntrlId)) - .where( - builder - .and(ccb.cntrlStDt.between( - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).toInstant(), - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).plus(1, ChronoUnit.DAYS).toInstant() - )) - .and(ccb.cntrlEndDt.between( - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).toInstant(), - now.atZone(ZoneId.of("Asia/Seoul")).truncatedTo(ChronoUnit.DAYS).plus(1, ChronoUnit.DAYS).toInstant() - )) - .and(fpb.planSno.isNotNull()) - ) + .where(builder) .groupBy(ccb.statusCd) .fetch();