From 86a98298506f5988ceb4592a53cda4255aa5d640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?qkr7828=28=EB=B0=95=EC=9E=AC=EC=9A=B0=29?= <박재우@DESKTOP-EF7ECBO> Date: Fri, 7 Oct 2022 17:39:10 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=ED=96=89=EA=B3=84=ED=9A=8D=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=ED=8E=98=EC=9D=B4=EC=A7=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BasFlightController.java | 63 ++++++++------ .../bas/flight/service/BasFlightService.java | 19 ++++- .../flt/FltPlanQueryRepository.java | 83 ++++++++++++++++++- 3 files changed, 137 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java b/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java index 48fffd8..3028d6f 100644 --- a/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java +++ b/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java @@ -1,38 +1,53 @@ package com.palnet.biz.api.bas.flight.controller; -import com.palnet.biz.api.anls.hstry.model.AnlsHstryRsModel; -import com.palnet.biz.api.bas.flight.model.*; -import com.palnet.biz.api.bas.flight.service.BasFlightService; -import com.palnet.biz.api.comn.model.ComnPagingRs; -import com.palnet.biz.api.comn.response.BasicResponse; -import com.palnet.biz.api.comn.response.ErrorResponse; -import com.palnet.biz.api.comn.response.SuccessResponse; -import com.palnet.comn.code.RSErrorCode; -import com.palnet.comn.exception.CustomException; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.springframework.core.env.Environment; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; -import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.data.domain.PageImpl; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.palnet.biz.api.bas.flight.model.BasFlightAprovRq; +import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel; +import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; +import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq; +import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; +import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel; +import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs; +import com.palnet.biz.api.bas.flight.service.BasFlightService; +import com.palnet.biz.api.comn.model.ComnPagingRs; +import com.palnet.biz.api.comn.response.BasicResponse; +import com.palnet.biz.api.comn.response.ErrorResponse; +import com.palnet.biz.api.comn.response.SuccessResponse; +import com.palnet.comn.exception.CustomException; -import java.io.*; -import java.net.URLEncoder; -import java.time.LocalDate; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; @Slf4j @RestController @@ -77,7 +92,7 @@ public class BasFlightController { @ApiOperation(value = "비행계획서 조회") @Tag(name = "비행계획서", description = "비행계획서 관련 API") public ResponseEntity findPlanList(BasFlightPlanListRq rq) { - List result = null; + ComnPagingRs result = null; // System.out.println(rq); try { result = basFlightService.listPlan(rq); diff --git a/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java b/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java index 880b6a3..84b62df 100644 --- a/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java +++ b/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java @@ -85,12 +85,16 @@ public class BasFlightService { } // 비행계획서 조회 - public List listPlan(BasFlightPlanListRq rq) { + public ComnPagingRs listPlan(BasFlightPlanListRq rq) { List groupList = ptyPlanQueryRepository.joinList(rq.getCstmrSno()); String userAccount = null; String masterAccount = null; String appAuth = jwtTokenUtil.getUserAuthByToken(); + ComnPagingRs response = new ComnPagingRs<>(); + + Pageable pageable = PageRequest.of(rq.getPage()-1, rq.getRecord()); + for(BasGroupJoinModel list : groupList) { if (list.getGroupId().equals(rq.getGroupId())) { userAccount = list.getGroupAuthCd(); @@ -103,7 +107,18 @@ public class BasFlightService { } else { masterAccount = "NORMAL"; } - return fltPlanQueryRepository.listPlan(rq, masterAccount); + PageImpl result = fltPlanQueryRepository.listPlan(rq, masterAccount, pageable); + + long total = fltPlanQueryRepository.listPlanCount(rq, masterAccount); + + long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); + + response.setItems(result.getContent()); + response.setTotal(total); + response.setPage(rq.getPage()); + response.setTotalPage(totalPage); + + return response; } // 비행계획서 상세 조회 diff --git a/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java b/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java index d1725bd..3bca578 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java @@ -51,7 +51,7 @@ public class FltPlanQueryRepository { // 비행계획서 목록 // TODO 현재 모두 조회 - 권한에 따른 조회 필요 - public List listPlan(BasFlightPlanListRq rq, String masterAccount) { + public PageImpl listPlan(BasFlightPlanListRq rq, String masterAccount, Pageable pageable) { QFltPlanBas bas = QFltPlanBas.fltPlanBas; QFltPlanArea area = QFltPlanArea.fltPlanArea; @@ -123,7 +123,86 @@ public class FltPlanQueryRepository { )) ); - return r; + return new PageImpl<>(r, pageable, r.size()); + + } + public long listPlanCount(BasFlightPlanListRq rq, String masterAccount) { + QFltPlanBas bas = QFltPlanBas.fltPlanBas; + QFltPlanArea area = QFltPlanArea.fltPlanArea; + + BooleanBuilder builder = new BooleanBuilder(); + + if (rq.getGroupId() != null) { + builder.and(bas.groupId.eq(rq.getGroupId())); + } + + if (rq.getCstmrSno() != null) { +// if(masterAccount.equals("USER")) { + if(masterAccount.equals("NORMAL")) { + builder.and(bas.cstmrSno.eq(rq.getCstmrSno())); + } + } + + builder.and(bas.schFltStDt.goe(rq.getSchFltStDt())); + builder.and(bas.schFltStDt.before(rq.getSchFltEndDt())); + +// if ("Y".equals(rq.getAprvlYn()) || "N".equals(rq.getAprvlYn())) { +// builder.and(bas.aprvlYn.eq(rq.getAprvlYn())); +// } + if (!"A".equals(rq.getAprvlYn())) { + builder.and(bas.aprvlYn.eq(rq.getAprvlYn())); + } + builder.and(bas.delYn.ne("Y")); + + List r = query + .from(bas) + .leftJoin(area) + .on(bas.planSno.eq(area.planSno)) + .where(builder) + .transform( + GroupBy.groupBy(bas.planSno) + .list(Projections.bean( + BasFlightPlanModel.class, + bas.planSno, + bas.groupId, + bas.cstmrSno, + bas.memberName, + bas.email, + bas.hpno, + bas.clncd, + bas.addr, + bas.addrDtlCn, + bas.zip, + bas.schFltStDt, + bas.schFltEndDt, + bas.fltPurpose, + bas.aprvlYn, + bas.delYn, + bas.createUserId, + bas.createDt, + bas.updateUserId, + bas.updateDt, + GroupBy.list(Projections.bean( + BasFlightPlanAreaModel.class, + area.planAreaSno, + area.planSno, + area.areaType, + area.fltMethod, + area.bufferZone, + area.fltElev, + area.createUserId, + area.createDt, + area.updateUserId, + area.updateDt + ).skipNulls()).as("areaList") + )) + ); + long cnt = 0; + for(BasFlightPlanModel list : r ) { + cnt++; + } + + return cnt; } //동일 기체 등록시 비행시간 중복여부 조회