Browse Source

query instant 형변환 변경 , 조건 변경

pull/16/head
박재우 10 months ago
parent
commit
93ce5bc2ba
  1. 100
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

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

@ -1942,44 +1942,45 @@ public class FltPlanQueryRepository {
}
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;
}
@ -2000,6 +2001,18 @@ public class FltPlanQueryRepository {
}
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(
new CaseBuilder()
@ -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();

Loading…
Cancel
Save