|
|
|
@ -1,33 +1,9 @@
|
|
|
|
|
package com.palnet.biz.jpa.repository.flt; |
|
|
|
|
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
import org.springframework.cache.annotation.Cacheable; |
|
|
|
|
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.api.bas.flight.model.*; |
|
|
|
|
import com.palnet.biz.api.main.dash.model.MainDashStcsModel; |
|
|
|
|
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.biz.jpa.entity.*; |
|
|
|
|
import com.palnet.biz.jpa.model.*; |
|
|
|
|
import com.palnet.comn.utils.DateUtils; |
|
|
|
|
import com.querydsl.core.BooleanBuilder; |
|
|
|
|
import com.querydsl.core.group.GroupBy; |
|
|
|
@ -39,12 +15,22 @@ import com.querydsl.core.types.dsl.DateTemplate;
|
|
|
|
|
import com.querydsl.core.types.dsl.Expressions; |
|
|
|
|
import com.querydsl.core.types.dsl.StringTemplate; |
|
|
|
|
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 lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springframework.cache.annotation.Cacheable; |
|
|
|
|
import org.springframework.data.domain.Page; |
|
|
|
|
import org.springframework.data.domain.PageImpl; |
|
|
|
|
import org.springframework.data.domain.PageRequest; |
|
|
|
|
import org.springframework.data.domain.Pageable; |
|
|
|
|
import org.springframework.stereotype.Repository; |
|
|
|
|
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Optional; |
|
|
|
|
|
|
|
|
|
@Log4j2 |
|
|
|
|
@Slf4j |
|
|
|
|
@Repository |
|
|
|
|
@RequiredArgsConstructor |
|
|
|
|
public class FltPlanQueryRepository { |
|
|
|
@ -67,7 +53,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
|
|
|
|
|
if (rq.getCstmrSno() != null) { |
|
|
|
|
// if(masterAccount.equals("USER")) {
|
|
|
|
|
if(masterAccount.equals("NORMAL")) { |
|
|
|
|
if (masterAccount.equals("NORMAL")) { |
|
|
|
|
builder.and(bas.cstmrSno.eq(rq.getCstmrSno())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -137,6 +123,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
return new PageImpl<>(r, pageable, r.size()); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public long listPlanCount(BasFlightPlanListRq rq, String masterAccount) { |
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
@ -149,7 +136,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
|
|
|
|
|
if (rq.getCstmrSno() != null) { |
|
|
|
|
// if(masterAccount.equals("USER")) {
|
|
|
|
|
if(masterAccount.equals("NORMAL")) { |
|
|
|
|
if (masterAccount.equals("NORMAL")) { |
|
|
|
|
builder.and(bas.cstmrSno.eq(rq.getCstmrSno())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -209,15 +196,16 @@ public class FltPlanQueryRepository {
|
|
|
|
|
)) |
|
|
|
|
); |
|
|
|
|
long cnt = 0; |
|
|
|
|
for(BasFlightPlanModel list : r ) { |
|
|
|
|
for (BasFlightPlanModel list : r) { |
|
|
|
|
cnt++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return cnt; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//동일 기체 등록시 비행시간 중복여부 조회
|
|
|
|
|
public List<BasFlightPlanModel> arcrftCheck(BasFlightPlanModel rq, String idntfNum){ |
|
|
|
|
public List<BasFlightPlanModel> arcrftCheck(BasFlightPlanModel rq, String idntfNum) { |
|
|
|
|
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft; |
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
|
|
|
|
@ -247,8 +235,9 @@ public class FltPlanQueryRepository {
|
|
|
|
|
return list; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 비행계획구역 설정시 같은 시간대에 구역이 중복되는지 조회
|
|
|
|
|
public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq){ |
|
|
|
|
public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq) { |
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
List<BasFlightPlanModel> list = query |
|
|
|
@ -308,8 +297,9 @@ public class FltPlanQueryRepository {
|
|
|
|
|
|
|
|
|
|
return list; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//CoordCheck에 들어갈 count
|
|
|
|
|
public List<BasFlightPlanAreaCoordRq> CoordCount(BasFlightPlanModel rq){ |
|
|
|
|
public List<BasFlightPlanAreaCoordRq> CoordCount(BasFlightPlanModel rq) { |
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
|
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord; |
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
@ -347,6 +337,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
.fetch(); |
|
|
|
|
return list; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 조종사 조회
|
|
|
|
|
public List<BasFlightPlanPilotModel> listPilot(String groupId) { |
|
|
|
|
// QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas;
|
|
|
|
@ -423,7 +414,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
// if (userAccount.equals("CREATER") || userAccount.equals("ADMIN")) {
|
|
|
|
|
if(masterAccount != null) { |
|
|
|
|
if (masterAccount != null) { |
|
|
|
|
if (masterAccount.equals("SPUER") || masterAccount.equals("ADMIN")) { |
|
|
|
|
builder.and(bas.groupId.in(rq.getGroupId())); |
|
|
|
|
} else { |
|
|
|
@ -485,15 +476,16 @@ public class FltPlanQueryRepository {
|
|
|
|
|
)) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
return new PageImpl<>(r,pageable, r.size()); |
|
|
|
|
return new PageImpl<>(r, pageable, r.size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public long aprvCount(BasFlightPlanListRq rq, String masterAccount) { |
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
|
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
// if (userAccount.equals("CREATER") || userAccount.equals("ADMIN")) {
|
|
|
|
|
if(masterAccount != null) { |
|
|
|
|
if (masterAccount != null) { |
|
|
|
|
if (masterAccount.equals("SUPER") || masterAccount.equals("ADMIN")) { |
|
|
|
|
builder.and(bas.groupId.in(rq.getGroupId())); |
|
|
|
|
} else { |
|
|
|
@ -553,12 +545,13 @@ public class FltPlanQueryRepository {
|
|
|
|
|
)) |
|
|
|
|
); |
|
|
|
|
long cnt = 0; |
|
|
|
|
for(BasFlightPlanModel lis : list) { |
|
|
|
|
for (BasFlightPlanModel lis : list) { |
|
|
|
|
cnt++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return cnt; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Cacheable(value = "schedule") |
|
|
|
|
public List<BasFlightScheduleRs> findSchedule(String searchDate) { |
|
|
|
|
QFltPlanBas fltPlanBas = QFltPlanBas.fltPlanBas; |
|
|
|
@ -570,10 +563,10 @@ public class FltPlanQueryRepository {
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
|
|
|
|
|
DateTemplate<Instant> flightStartDate = Expressions.dateTemplate( |
|
|
|
|
Instant.class,"DATE({0})", fltPlanBas.schFltStDt); |
|
|
|
|
Instant.class, "DATE({0})", fltPlanBas.schFltStDt); |
|
|
|
|
|
|
|
|
|
DateTemplate<Instant> flightEndDate = Expressions.dateTemplate( |
|
|
|
|
Instant.class,"DATE({0})", fltPlanBas.schFltEndDt); |
|
|
|
|
Instant.class, "DATE({0})", fltPlanBas.schFltEndDt); |
|
|
|
|
|
|
|
|
|
builder.and(flightStartDate.loe(DateUtils.stringToDate(searchDate))) |
|
|
|
|
.and(flightEndDate.goe(DateUtils.stringToDate(searchDate))) |
|
|
|
@ -586,7 +579,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
ExpressionUtils.as( |
|
|
|
|
JPAExpressions.select(groupBas.groupNm) |
|
|
|
|
.from(groupBas) |
|
|
|
|
.where(groupBas.groupId.eq(fltPlanBas.groupId)),"groupNm" |
|
|
|
|
.where(groupBas.groupId.eq(fltPlanBas.groupId)), "groupNm" |
|
|
|
|
), |
|
|
|
|
fltPlanArcrft.ownerNm, |
|
|
|
|
fltPlanArcrft.idntfNum, |
|
|
|
@ -648,10 +641,10 @@ public class FltPlanQueryRepository {
|
|
|
|
|
BooleanBuilder parameter = new BooleanBuilder(); |
|
|
|
|
|
|
|
|
|
DateTemplate<Instant> flightStartDate = Expressions.dateTemplate( |
|
|
|
|
Instant.class,"DATE({0})", fltPlanBas.schFltStDt); |
|
|
|
|
Instant.class, "DATE({0})", fltPlanBas.schFltStDt); |
|
|
|
|
|
|
|
|
|
DateTemplate<Instant> flightEndDate = Expressions.dateTemplate( |
|
|
|
|
Instant.class,"DATE({0})", fltPlanBas.schFltEndDt); |
|
|
|
|
Instant.class, "DATE({0})", fltPlanBas.schFltEndDt); |
|
|
|
|
|
|
|
|
|
parameter.and(flightStartDate.loe(DateUtils.stringToDatetime(serverReceiveDate))) |
|
|
|
|
.and(flightEndDate.goe(DateUtils.stringToDatetime(serverReceiveDate))) |
|
|
|
@ -669,10 +662,11 @@ public class FltPlanQueryRepository {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 김포공항, 비행승인 통계 API |
|
|
|
|
* |
|
|
|
|
* @param date |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public List<MainDashStcsModel> mainStcsPlanAllow(String date, String[] formatParam){ |
|
|
|
|
public List<MainDashStcsModel> mainStcsPlanAllow(String date, String[] formatParam) { |
|
|
|
|
|
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
|
|
|
|
@ -688,12 +682,12 @@ public class FltPlanQueryRepository {
|
|
|
|
|
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
builder.and(bas.aprvlYn.eq("Y")); |
|
|
|
|
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date)); |
|
|
|
|
if (date != null && date.length() > 0) builder.and(formattedDate.eq(date)); |
|
|
|
|
|
|
|
|
|
List<MainDashStcsModel> result = query |
|
|
|
|
.select( |
|
|
|
|
Projections.bean( |
|
|
|
|
MainDashStcsModel.class , |
|
|
|
|
MainDashStcsModel.class, |
|
|
|
|
formattedDate2.as("typeCd"), |
|
|
|
|
bas.count().as("count") |
|
|
|
|
) |
|
|
|
@ -703,7 +697,7 @@ public class FltPlanQueryRepository {
|
|
|
|
|
.groupBy(formattedDate2) |
|
|
|
|
.fetch(); |
|
|
|
|
|
|
|
|
|
if(result.size() <= 0){ |
|
|
|
|
if (result.size() <= 0) { |
|
|
|
|
|
|
|
|
|
MainDashStcsModel node = new MainDashStcsModel(); |
|
|
|
|
node.setCount(0); |
|
|
|
@ -715,4 +709,281 @@ public class FltPlanQueryRepository {
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// laanc 승인 목록
|
|
|
|
|
public Page<LaancPlanDto> findAllAprvListBySearch(LaancAprvSearchDto serach, Pageable pageable) { |
|
|
|
|
|
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
|
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft; |
|
|
|
|
|
|
|
|
|
// TODO serach
|
|
|
|
|
BooleanBuilder builder = new BooleanBuilder(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JPAQuery<?> jpaQuery = query.from(bas) |
|
|
|
|
.leftJoin(area) |
|
|
|
|
.on(bas.planSno.eq(area.planSno)) |
|
|
|
|
.leftJoin(arcrft) |
|
|
|
|
.on(bas.planSno.eq(arcrft.planSno)) |
|
|
|
|
.where(builder); |
|
|
|
|
|
|
|
|
|
JPAQuery<?> countQuery = jpaQuery.clone(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pageable != null) { |
|
|
|
|
jpaQuery.offset(pageable.getOffset()); |
|
|
|
|
jpaQuery.limit(pageable.getPageSize()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<LaancPlanDto> list = jpaQuery.transform( |
|
|
|
|
GroupBy.groupBy(bas.planSno) |
|
|
|
|
.list(Projections.bean( |
|
|
|
|
LaancPlanDto.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, |
|
|
|
|
bas.corpRegYn, |
|
|
|
|
bas.serviceType, |
|
|
|
|
GroupBy.list(Projections.bean( |
|
|
|
|
LaancPlanAreaDto.class, |
|
|
|
|
area.planAreaSno, |
|
|
|
|
area.planSno, |
|
|
|
|
area.areaType, |
|
|
|
|
area.fltMethod, |
|
|
|
|
area.fltAreaAddr, |
|
|
|
|
area.bufferZone, |
|
|
|
|
area.fltElev, |
|
|
|
|
area.createUserId, |
|
|
|
|
area.createDt, |
|
|
|
|
area.updateUserId, |
|
|
|
|
area.updateDt, |
|
|
|
|
area.fltMothoeRm |
|
|
|
|
).skipNulls()).as("areaList"), |
|
|
|
|
GroupBy.list(Projections.bean( |
|
|
|
|
LaancPlanArcrftDto.class, |
|
|
|
|
arcrft.planArcrftSno, |
|
|
|
|
arcrft.planSno, |
|
|
|
|
arcrft.arcrftSno, |
|
|
|
|
arcrft.idntfNum, |
|
|
|
|
arcrft.groupNm, |
|
|
|
|
arcrft.prdctNum, |
|
|
|
|
arcrft.arcrftTypeCd, |
|
|
|
|
arcrft.arcrftModelNm, |
|
|
|
|
arcrft.prdctCmpnNm, |
|
|
|
|
arcrft.prdctDate, |
|
|
|
|
arcrft.arcrftLngth, |
|
|
|
|
arcrft.arcrftWdth, |
|
|
|
|
arcrft.arcrftHght, |
|
|
|
|
arcrft.arcrftWght, |
|
|
|
|
arcrft.arcrftWghtCd, |
|
|
|
|
arcrft.wghtTypeCd, |
|
|
|
|
arcrft.imageUrl, |
|
|
|
|
arcrft.takeoffWght, |
|
|
|
|
arcrft.useYn, |
|
|
|
|
arcrft.cameraYn, |
|
|
|
|
arcrft.insrncYn, |
|
|
|
|
arcrft.ownerNm, |
|
|
|
|
arcrft.createUserId, |
|
|
|
|
arcrft.createDt, |
|
|
|
|
arcrft.updateUserId, |
|
|
|
|
arcrft.updateDt, |
|
|
|
|
arcrft.acrftInsuranceYn, |
|
|
|
|
arcrft.insuranceExperiod, |
|
|
|
|
arcrft.corporationNm |
|
|
|
|
).skipNulls()).as("arcrftList") |
|
|
|
|
).skipNulls()) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 카운트 쿼리
|
|
|
|
|
int size = countQuery.fetch().size(); |
|
|
|
|
|
|
|
|
|
if (pageable == null) { |
|
|
|
|
pageable = Pageable.unpaged(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Page<LaancPlanDto> laancPlanDtos = new PageImpl<>(list, pageable, size); |
|
|
|
|
|
|
|
|
|
return laancPlanDtos; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// laanc 승인 상세
|
|
|
|
|
public LaancPlanDto findAprvById(Integer planSno) { |
|
|
|
|
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
|
|
|
|
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
|
|
|
|
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord; |
|
|
|
|
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft; |
|
|
|
|
QFltPlanPilot pilot = QFltPlanPilot.fltPlanPilot; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<LaancPlanDto> list = query.from(bas) |
|
|
|
|
// .leftJoin(area)
|
|
|
|
|
// .on(bas.planSno.eq(area.planSno))
|
|
|
|
|
// .leftJoin(coord)
|
|
|
|
|
// .on(area.planAreaSno.eq(coord.planAreaSno))
|
|
|
|
|
.leftJoin(arcrft) |
|
|
|
|
.on(bas.planSno.eq(arcrft.planSno)) |
|
|
|
|
.leftJoin(pilot) |
|
|
|
|
.on(bas.planSno.eq(pilot.planSno)) |
|
|
|
|
.where(bas.planSno.eq(planSno)) |
|
|
|
|
.transform( |
|
|
|
|
GroupBy.groupBy(bas.planSno) |
|
|
|
|
.list(Projections.bean( |
|
|
|
|
LaancPlanDto.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, |
|
|
|
|
bas.corpRegYn, |
|
|
|
|
bas.serviceType, |
|
|
|
|
// GroupBy.list(Projections.bean(
|
|
|
|
|
// LaancPlanAreaDto.class,
|
|
|
|
|
// area.planAreaSno,
|
|
|
|
|
// area.planSno,
|
|
|
|
|
// area.areaType,
|
|
|
|
|
// area.fltMethod,
|
|
|
|
|
// area.fltAreaAddr,
|
|
|
|
|
// area.bufferZone,
|
|
|
|
|
// area.fltElev,
|
|
|
|
|
// area.createUserId,
|
|
|
|
|
// area.createDt,
|
|
|
|
|
// area.updateUserId,
|
|
|
|
|
// area.updateDt,
|
|
|
|
|
// area.fltMothoeRm
|
|
|
|
|
//// GroupBy.list(Projections.bean(
|
|
|
|
|
//// LaancPlanareaCoordDto.class,
|
|
|
|
|
//// coord.planAreaCoordSno,
|
|
|
|
|
//// coord.planAreaSno,
|
|
|
|
|
//// coord.lon,
|
|
|
|
|
//// coord.lat,
|
|
|
|
|
//// coord.createUserId,
|
|
|
|
|
//// coord.createDt
|
|
|
|
|
//// ).skipNulls()).as("coordList")
|
|
|
|
|
// ).skipNulls()).as("areaList"),
|
|
|
|
|
GroupBy.list(Projections.bean( |
|
|
|
|
LaancPlanArcrftDto.class, |
|
|
|
|
arcrft.planArcrftSno, |
|
|
|
|
arcrft.planSno, |
|
|
|
|
arcrft.arcrftSno, |
|
|
|
|
arcrft.idntfNum, |
|
|
|
|
arcrft.groupNm, |
|
|
|
|
arcrft.prdctNum, |
|
|
|
|
arcrft.arcrftTypeCd, |
|
|
|
|
arcrft.arcrftModelNm, |
|
|
|
|
arcrft.prdctCmpnNm, |
|
|
|
|
arcrft.prdctDate, |
|
|
|
|
arcrft.arcrftLngth, |
|
|
|
|
arcrft.arcrftWdth, |
|
|
|
|
arcrft.arcrftHght, |
|
|
|
|
arcrft.arcrftWght, |
|
|
|
|
arcrft.arcrftWghtCd, |
|
|
|
|
arcrft.wghtTypeCd, |
|
|
|
|
arcrft.imageUrl, |
|
|
|
|
arcrft.takeoffWght, |
|
|
|
|
arcrft.useYn, |
|
|
|
|
arcrft.cameraYn, |
|
|
|
|
arcrft.insrncYn, |
|
|
|
|
arcrft.ownerNm, |
|
|
|
|
arcrft.createUserId, |
|
|
|
|
arcrft.createDt, |
|
|
|
|
arcrft.updateUserId, |
|
|
|
|
arcrft.updateDt, |
|
|
|
|
arcrft.acrftInsuranceYn, |
|
|
|
|
arcrft.insuranceExperiod, |
|
|
|
|
arcrft.corporationNm |
|
|
|
|
).skipNulls()).as("arcrftList"), |
|
|
|
|
GroupBy.list(Projections.bean( |
|
|
|
|
LaancPlanPilotDto.class, |
|
|
|
|
pilot.planPilotSno, |
|
|
|
|
pilot.planSno, |
|
|
|
|
pilot.cstmrSno, |
|
|
|
|
pilot.groupNm, |
|
|
|
|
pilot.memberName, |
|
|
|
|
pilot.email, |
|
|
|
|
pilot.hpno, |
|
|
|
|
pilot.clncd, |
|
|
|
|
pilot.addr, |
|
|
|
|
pilot.addrDtlCn, |
|
|
|
|
pilot.zip, |
|
|
|
|
pilot.qlfcNo, |
|
|
|
|
pilot.carrer, |
|
|
|
|
pilot.createUserId, |
|
|
|
|
pilot.createDt, |
|
|
|
|
pilot.updateUserId, |
|
|
|
|
pilot.updateDt |
|
|
|
|
).skipNulls()).as("pilotList") |
|
|
|
|
).skipNulls()) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
Optional<LaancPlanDto> first = list.stream().findFirst(); |
|
|
|
|
if (first.isEmpty()) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
LaancPlanDto result = first.get(); |
|
|
|
|
|
|
|
|
|
List<LaancPlanAreaDto> areaList = query.from(area) |
|
|
|
|
.leftJoin(coord) |
|
|
|
|
.on(area.planAreaSno.eq(coord.planAreaSno)) |
|
|
|
|
.where(area.planSno.eq(planSno)) |
|
|
|
|
.transform( |
|
|
|
|
GroupBy.groupBy(area.planAreaSno).list(Projections.bean( |
|
|
|
|
LaancPlanAreaDto.class, |
|
|
|
|
area.planAreaSno, |
|
|
|
|
area.planSno, |
|
|
|
|
area.areaType, |
|
|
|
|
area.fltMethod, |
|
|
|
|
area.fltAreaAddr, |
|
|
|
|
area.bufferZone, |
|
|
|
|
area.fltElev, |
|
|
|
|
area.createUserId, |
|
|
|
|
area.createDt, |
|
|
|
|
area.updateUserId, |
|
|
|
|
area.updateDt, |
|
|
|
|
area.fltMothoeRm, |
|
|
|
|
GroupBy.list(Projections.bean( |
|
|
|
|
LaancPlanareaCoordDto.class, |
|
|
|
|
coord.planAreaCoordSno, |
|
|
|
|
coord.planAreaSno, |
|
|
|
|
coord.lon, |
|
|
|
|
coord.lat, |
|
|
|
|
coord.createUserId, |
|
|
|
|
coord.createDt |
|
|
|
|
).skipNulls()).as("coordList") |
|
|
|
|
)) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
result.setAreaList(areaList); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |