From a527959cf25a8d7f56091bf76e4886f91affc2fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?hagjoon=28=EC=9D=B4=ED=95=99=EC=A4=80=29?= Date: Tue, 14 Nov 2023 17:58:45 +0900 Subject: [PATCH] =?UTF-8?q?[=EB=A9=94=EC=9D=B8]=20=EC=9D=BC=EC=9D=BC=20?= =?UTF-8?q?=EB=B9=84=ED=96=89=ED=9A=9F=EC=88=98=20=ED=98=84=ED=99=A9=20:?= =?UTF-8?q?=20=EB=B9=84=ED=96=89=EA=B3=84=ED=9A=8D=EC=84=9C=20=EC=8A=B9?= =?UTF-8?q?=EC=9D=B8=20=ED=95=AD=EB=AA=A9=20=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dash/controller/MainDashController.java | 16 +++++++- .../model/MainDashFlightNumStcsModel.java | 35 ++++++++++++++++ .../main/dash/service/MainDashService.java | 40 ++++++++++++++++++- .../repository/flt/FltPlanBasRepository.java | 3 ++ 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightNumStcsModel.java 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 f139250c..712e6995 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 @@ -3,6 +3,7 @@ package com.palnet.biz.api.main.dash.controller; import java.util.List; import java.util.Map; +import com.palnet.biz.api.main.dash.model.MainDashFlightNumStcsModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -162,7 +163,7 @@ public class MainDashController { } - + @GetMapping(value = "/stcs/flight/date/{type}") @ApiOperation(value = "김포공항, 비행실적 통계") @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") @@ -319,6 +320,19 @@ public class MainDashController { return ResponseEntity.ok().body(new SuccessResponse>(result)); } + @GetMapping("/stcs/dailyflight") + @ApiOperation(value = "일일 비행횟수 현황") + @Tag(name = "메인화면 컨트롤러",description = "메인화면 관련 API") + public ResponseEntity getDailyFlightNumOfStcs(){ + List result = null; + try { + result = service.dailyFlightNumOfStcs(); + }catch (Exception e){ + log.error("IGNORE : {} ", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ErrorResponse("Server Error", "-1")); + } + return ResponseEntity.ok().body(new SuccessResponse>(result)); + } } diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightNumStcsModel.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightNumStcsModel.java new file mode 100644 index 00000000..c93bc60d --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightNumStcsModel.java @@ -0,0 +1,35 @@ +package com.palnet.biz.api.main.dash.model; + +import io.swagger.annotations.ApiParam; +import lombok.Data; + +/** + * packageName : com.palnet.biz.api.main.dash.model + * fileName : MainDashFlightNumStcsModel + * author : hagjoon + * date : 2023-11-13 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-11-13 hagjoon 최초 생성 + */ +@Data +public class MainDashFlightNumStcsModel { + + @ApiParam(value = "구분",example = "전일(어제), 금일(오늘), 명일(내일)") + private String dateType = ""; + + @ApiParam(value = "계획",example = "전일(어제), 금일(오늘), 명일(내일) 비행계획서 목록") + private long flightPlan = 0; + + @ApiParam(value = "비행 완료",example = "전일(어제), 금일(오늘), 명일(내일) 비행완료 목록") + private long completeFlight = 0; + + @ApiParam(value = "미 비행",example = "전일(어제), 금일(오늘), 명일(내일) 미 비행 목록") + private long notFlight = 0; + + @ApiParam(value = "비고",example = "전일(어제), 금일(오늘), 명일(내일) 비고") + private int note = 0; + +} 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 9f0f8238..ac0caa5b 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 @@ -1,5 +1,7 @@ package com.palnet.biz.api.main.dash.service; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -9,6 +11,9 @@ import java.util.stream.Collectors; import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.bas.group.model.BasGroupModel; +import com.palnet.biz.api.main.dash.model.MainDashFlightNumStcsModel; +import com.palnet.biz.jpa.entity.FltPlanBas; +import com.palnet.biz.jpa.repository.flt.FltPlanBasRepository; import com.palnet.biz.jpa.repository.pty.*; import lombok.extern.slf4j.Slf4j; @@ -28,7 +33,9 @@ import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; @Service @Slf4j public class MainDashService { - + @Autowired + private FltPlanBasRepository fltPlanBasRepository; + private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired @@ -250,6 +257,35 @@ public class MainDashService { } return result; - } + } + + public List dailyFlightNumOfStcs(){ + // 1. 전일 , 금일, 명일(내일) + Instant yesterday = Instant.now().minus(1, ChronoUnit.DAYS); + Instant today = Instant.now(); + Instant tomorrow = Instant.now().plus(1, ChronoUnit.DAYS); + + long yesterdayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", yesterday, today); + log.info("yesterdayCount : {}", yesterdayCount); + long todayCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", today, today.plus(1, ChronoUnit.DAYS)); + log.info("todayCount : {}", todayCount); + long tomorrowCount = fltPlanBasRepository.countByAprvlYnAndAprvlDtBetween("Y", tomorrow, tomorrow.plus(1, ChronoUnit.DAYS)); + log.info("tomorrowCount : {} ", tomorrowCount); + + // 카운트와 함께 MainDashFlightNumStcsModel 인스턴스 생성 + List result = new ArrayList<>(); + result.add(createModel("yesterday", yesterdayCount)); + result.add(createModel("today", todayCount)); + result.add(createModel("tomorrow", tomorrowCount)); + + return result; + } + + private MainDashFlightNumStcsModel createModel(String dateType, long flightPlanCount) { + MainDashFlightNumStcsModel model = new MainDashFlightNumStcsModel(); + model.setDateType(dateType); + model.setFlightPlan(flightPlanCount); + return model; + } } 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 94b07a4d..5d91b400 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 @@ -53,5 +53,8 @@ public interface FltPlanBasRepository extends JpaRepository "and f.aprvlYn = 'Y' ") List findBasList(@Param("planSno") int planSno); + @Query("SELECT f FROM FltPlanBas f WHERE f.aprvlYn = 'Y' AND f.aprvlDt IS NOT NULL AND f.aprvlDt >= :startDate AND f.aprvlDt < :endDate") + List findApprovedFlightPlansByApprovalDate(Instant startDate, Instant endDate); + long countByAprvlYnAndAprvlDtBetween(String aprvlYn, Instant startDate, Instant endDate); }