From c8f5547f52f77b888397abb5d9205eae75db1861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9E=AC=EC=9A=B0?= <박재우@host.docker.internal> Date: Tue, 14 Nov 2023 18:57:42 +0900 Subject: [PATCH] =?UTF-8?q?queryDSL=20where=EC=A0=88=20Timezone=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flt/FltPlanQueryRepository.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) 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 4ee93f10..92194665 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 @@ -3,7 +3,10 @@ package com.palnet.biz.jpa.repository.flt; import java.time.Duration; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Optional; @@ -1871,6 +1874,9 @@ public class FltPlanQueryRepository { builder.and(pgb.groupId.eq(groupId)); } Instant now = Instant.now(); + + Instant todayStart = LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC); + Instant todayEnd = LocalDate.now().plusDays(1).atStartOfDay().toInstant(ZoneOffset.UTC); List result = query .select(Projections.bean(MainDashFlightListModel.class, @@ -1885,9 +1891,10 @@ public class FltPlanQueryRepository { ccb.cntrlStDt ).as("totalFlightTime"), new CaseBuilder() - .when(ccb.statusCd.eq("01")).then("비행 중") - .when(ccb.statusCd.eq("99")).then("비행 완료") - .otherwise("비행 대기 중").as("status") + .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)) @@ -1896,11 +1903,17 @@ public class FltPlanQueryRepository { .leftJoin(fpccr).on(fpccr.planSno.eq(fpb.planSno)) .leftJoin(ccb).on(ccb.cntrlId.eq(fpccr.cntrlId)) .where( - builder - .and(fpb.schFltStDt.between(now, now.plus(Duration.ofDays(1)))) - .and(fpb.schFltEndDt.between(now, now.plus(Duration.ofDays(1)))) - .and(fpb.planSno.isNotNull()) - ) + builder + .and(fpb.schFltStDt.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.schFltEndDt.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();