Browse Source

feat: 드론원스톱 비행승인 조회, 주소검색 추가

feature/address-coordinate^2
lkd9125(이경도) 2 months ago
parent
commit
291a71e6f1
  1. 20
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java
  2. 3
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  3. 36
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java

20
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java

@ -1,5 +1,6 @@
package com.palnet.biz.api.bas.dos.model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -12,9 +13,28 @@ import java.time.LocalDate;
@AllArgsConstructor
@Builder
public class BasDosPlanRq {
@Schema(description = "검색시작일자" , example = "2024-06-01", implementation = LocalDate.class)
private LocalDate searchStDt;
@Schema(description = "검색끝일자" , example = "2024-06-30", implementation = LocalDate.class)
private LocalDate searchEndDt;
@Schema(description = "문서번호" , implementation = String.class)
private String applyNo;
@Schema(description = "승인코드", implementation = String.class)
private String approvalCd;
@Schema(description = "바운더리" , example = "GIMPO", implementation = String.class)
private String selectZone;
@Schema(description = "시/구 주소" , example = "인천광역시", implementation = String.class)
private String ctprvn;
@Schema(description = "시/군/구 주소" , example = "남동구", implementation = String.class)
private String sig;
@Schema(description = "상세주소" , example = "만수동", implementation = String.class)
private String address;
}

3
pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java

@ -89,8 +89,7 @@ public class BasDosService {
List<Long> planSnoList = planBasList.stream().map(DosFltPlanBas::getPlanSno).collect(Collectors.toList());
List<DosFltPlanArea> areaList = dosFltPlanAreaRepository.findByPlanSnoInOrderByZoneNoAsc(planSnoList);
List<DosFltPlanArea> areaList = dosFltPlanQueryRepository.findByPlanSnoInAndAddrOrderByZoneNoAsc(planSnoList, rq);
List<DosFltPlanResult> resultList = dosFltPlanResultRepository.findByPlanSnoIn(planSnoList);
List<BasDosPlanRs> rs = new ArrayList<>();

36
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java

@ -1,7 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.api.bas.dos.model.BasDosPlanRq;
import com.palnet.biz.jpa.entity.DosFltPlanArea;
import com.palnet.biz.jpa.entity.DosFltPlanBas;
import com.palnet.biz.jpa.entity.QDosFltPlanArea;
import com.palnet.biz.jpa.entity.QDosFltPlanBas;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.jpa.impl.JPAQueryFactory;
@ -21,6 +23,9 @@ public class DosFltPlanQueryRepository {
public List<DosFltPlanBas> findPlanByBasSearch(BasDosPlanRq rq) {
QDosFltPlanBas bas = QDosFltPlanBas.dosFltPlanBas;
QDosFltPlanArea qDosFltPlanArea = QDosFltPlanArea.dosFltPlanArea;
String districtAddr = rq.getCtprvn() + " " + (rq.getSig() != null ? rq.getSig() : "");
BooleanBuilder builder = new BooleanBuilder();
@ -33,10 +38,41 @@ public class DosFltPlanQueryRepository {
if(StringUtils.hasText(rq.getApplyNo())) {
builder.and(bas.applyNo.eq(rq.getApplyNo()));
}
if(!districtAddr.isBlank()){
builder.and(qDosFltPlanArea.addr.like("%" + districtAddr + "%"));
}
if(rq.getAddress() != null && !rq.getAddress().isEmpty()){
builder.and(qDosFltPlanArea.addr.like("%" + rq.getAddress() + "%"));
}
return query.selectFrom(bas)
.leftJoin(qDosFltPlanArea)
.on(bas.planSno.eq(qDosFltPlanArea.planSno))
.where(builder)
.orderBy(bas.applyDt.desc(), bas.applyNo.desc())
.fetch();
}
public List<DosFltPlanArea> findByPlanSnoInAndAddrOrderByZoneNoAsc(List<Long> planSno, BasDosPlanRq rq){
QDosFltPlanArea qDosFltPlanArea = QDosFltPlanArea.dosFltPlanArea;
String districtAddr = rq.getCtprvn() + " " + (rq.getSig() != null ? rq.getSig() : "");
BooleanBuilder builder = new BooleanBuilder();
builder.and(qDosFltPlanArea.planSno.in(planSno));
if(!districtAddr.isBlank()){
builder.and(qDosFltPlanArea.addr.like("%" + districtAddr + "%"));
}
if(rq.getAddress() != null && !rq.getAddress().isEmpty()){
builder.and(qDosFltPlanArea.addr.like("%" + rq.getAddress() + "%"));
}
return query
.select(qDosFltPlanArea)
.from(qDosFltPlanArea)
.where(builder)
.orderBy(qDosFltPlanArea.zoneNo.asc())
.fetch();
}
}

Loading…
Cancel
Save