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); }