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 7bda5fb..48fffd8 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,7 +1,9 @@ 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; @@ -244,7 +246,7 @@ public class BasFlightController { @ApiOperation(value = "비행계획서 리스트(승인)") @Tag(name = "비행계획서", description = "비행계획서 관련 API") public ResponseEntity findAprvList(BasFlightPlanListRq rq) { - List result = null; + ComnPagingRs result = null; try { result = basFlightService.aprvList(rq); } catch (Exception e) { diff --git a/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java b/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java index 255a6d0..4a42838 100644 --- a/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java +++ b/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java @@ -4,8 +4,10 @@ import lombok.Data; import java.util.Date; +import com.palnet.biz.api.comn.model.ComnPagingModel; + @Data -public class BasFlightPlanListRq { +public class BasFlightPlanListRq extends ComnPagingModel { private String groupId; private Integer cstmrSno; 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 8119d39..880b6a3 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 @@ -18,11 +18,16 @@ import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; import org.apache.commons.lang3.StringUtils; import org.locationtech.jts.geom.Coordinate; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; +import com.palnet.biz.api.anls.hstry.model.AnlsHstryRsModel; import com.palnet.biz.api.bas.group.model.BasGroupJoinModel; +import com.palnet.biz.api.comn.model.ComnPagingRs; import com.palnet.biz.jpa.entity.FltPlanArcrft; import com.palnet.biz.jpa.entity.FltPlanArea; import com.palnet.biz.jpa.entity.FltPlanAreaCoord; @@ -497,16 +502,35 @@ public class BasFlightService { } // 비행계획서 리스트(승인) - public List aprvList(BasFlightPlanListRq rq) { + public ComnPagingRs aprvList(BasFlightPlanListRq rq) { + + ComnPagingRs response = new ComnPagingRs<>(); + + Pageable pageable = PageRequest.of(rq.getPage()-1, rq.getRecord()); + List groupAuthList = jwtTokenUtil.getGroupAuthByToken(); + List groupIdList = new ArrayList<>(); + String userAccount = null; for(JwtGroupModel list : groupAuthList) { if(list.getGroupId().equals(rq.getGroupId())) { userAccount = list.getGroupAuthCd(); } } - return fltPlanQueryRepository.aprvList(rq, userAccount); + + PageImpl result = fltPlanQueryRepository.aprvList(rq, userAccount, pageable); + + long total = fltPlanQueryRepository.aprvCount(rq, userAccount); + + 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; } // 비행계획서 승인/미승인 @Transactional 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 c2c0131..d1725bd 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 @@ -1,7 +1,31 @@ package com.palnet.biz.jpa.repository.flt; -import com.palnet.biz.api.bas.flight.model.*; -import com.palnet.biz.jpa.entity.*; +import java.util.Date; +import java.util.List; + +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Repository; + +import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel; +import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordRq; +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.jpa.entity.FltPlanBas; +import com.palnet.biz.jpa.entity.QComArcrftBas; +import com.palnet.biz.jpa.entity.QComIdntfBas; +import com.palnet.biz.jpa.entity.QCtrCntrlBas; +import com.palnet.biz.jpa.entity.QCtrCntrlHstryArea; +import com.palnet.biz.jpa.entity.QFltPlanArcrft; +import com.palnet.biz.jpa.entity.QFltPlanArea; +import com.palnet.biz.jpa.entity.QFltPlanAreaCoord; +import com.palnet.biz.jpa.entity.QFltPlanBas; +import com.palnet.biz.jpa.entity.QPtyCstmrDtl; +import com.palnet.biz.jpa.entity.QPtyCstmrGroup; +import com.palnet.biz.jpa.entity.QPtyGroupBas; import com.palnet.comn.utils.DateUtils; import com.querydsl.core.BooleanBuilder; import com.querydsl.core.group.GroupBy; @@ -11,16 +35,11 @@ import com.querydsl.core.types.dsl.CaseBuilder; import com.querydsl.core.types.dsl.DateTemplate; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.jpa.JPAExpressions; -import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; + import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Repository; - -import java.util.Date; -import java.util.List; - @Log4j2 @Repository @RequiredArgsConstructor @@ -293,7 +312,7 @@ public class FltPlanQueryRepository { return models; } - public List aprvList(BasFlightPlanListRq rq, String userAccount) { + public PageImpl aprvList(BasFlightPlanListRq rq, String userAccount, Pageable pageable) { QFltPlanBas bas = QFltPlanBas.fltPlanBas; QFltPlanArea area = QFltPlanArea.fltPlanArea; @@ -320,6 +339,8 @@ public class FltPlanQueryRepository { .leftJoin(area) .on(bas.planSno.eq(area.planSno)) .where(builder) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) .transform( GroupBy.groupBy(bas.planSno) .list(Projections.bean( @@ -359,9 +380,80 @@ public class FltPlanQueryRepository { )) ); - return r; + return new PageImpl<>(r,pageable, r.size()); } + public long aprvCount(BasFlightPlanListRq rq, String userAccount) { + QFltPlanBas bas = QFltPlanBas.fltPlanBas; + QFltPlanArea area = QFltPlanArea.fltPlanArea; + BooleanBuilder builder = new BooleanBuilder(); +// if (userAccount.equals("CREATER") || userAccount.equals("ADMIN")) { + if(userAccount != null) { + if (userAccount.equals("MASTER") || userAccount.equals("LEADER")) { + builder.and(bas.groupId.in(rq.getGroupId())); + } else { + builder.and(bas.groupId.in(rq.getGroupId())); + builder.and(bas.cstmrSno.eq(rq.getCstmrSno())); + } + } + builder.and(bas.schFltStDt.goe(rq.getSchFltStDt())); + builder.and(bas.schFltStDt.before(rq.getSchFltEndDt())); + + if (rq.getAprvlYn() != null && !"A".equals(rq.getAprvlYn())) { + builder.and(bas.aprvlYn.eq(rq.getAprvlYn())); + } + builder.and(bas.delYn.ne("Y")); + + List list = 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 lis : list) { + cnt++; + } + + return cnt; + } public List findSchedule(String searchDate) { QFltPlanBas fltPlanBas = QFltPlanBas.fltPlanBas; QFltPlanArcrft fltPlanArcrft = QFltPlanArcrft.fltPlanArcrft;