|
|
|
@ -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<MainDashFlightListModel> 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<Integer>) 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<Integer>) 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<Tuple> 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(); |
|
|
|
|
|
|
|
|
|