Browse Source

feat: 드론원스톱 목록 조회 검토결과 파라미터 추가

feature/change-airspace
지대한 2 months ago
parent
commit
4b0b0585cc
  1. 21
      http/server/server.http
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java
  3. 9
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/config/WebMvcConfig.java
  5. 2
      pav-server/src/main/java/com/palnet/biz/config/convert/CodeToFltPurposeBinding.java
  6. 11
      pav-server/src/main/java/com/palnet/biz/config/convert/CodeToReviewdTypeConverter.java
  7. 39
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanQueryRepository.java

21
http/server/server.http

@ -7,10 +7,10 @@
// }
// dev-gmp-admin
const loginInfo = {
userId: "gmp-admin",
userPswd: "palnet5909!"
}
// const loginInfo = {
// userId: "gmp-admin",
// userPswd: "palnet5909!"
// }
// prod-root
// const loginInfo = {
@ -37,10 +37,10 @@
// }
// 김항소-관제과
// const loginInfo = {
// userId: "GMPATC2",
// userPswd: "GMPATC12!@"
// }
const loginInfo = {
userId: "GMPOPS",
userPswd: "GMPOPS12!@"
}
request.variables.set("loginInfo", JSON.stringify(loginInfo))
@ -63,7 +63,10 @@ GET {{appHost}}/api/acnt/jwt/profile/{{cstmrSno}}
Authorization: {{accessToken}}
### dos(드론원스톱) 목록 조회
GET {{appHost}}/api/bas/dos/plan?searchStDt=2024-06-29&searchEndDt=2024-06-29
GET {{appHost}}/api/bas/dos/plan
?searchStDt=2023-06-29
&searchEndDt=2024-06-29
# &reviewedType=W
Authorization: {{accessToken}}
### dos(드론원스톱) 목록 수정

4
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 com.palnet.biz.jpa.entity.type.ReviewedType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -37,4 +38,7 @@ public class BasDosPlanRq {
@Schema(description = "상세주소" , example = "만수동", implementation = String.class)
private String address;
@Schema(description = "검토결과" , example = "W", implementation = ReviewedType.class)
private ReviewedType reviewedType;
}

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

@ -96,7 +96,7 @@ public class BasDosService {
List<Long> planSnoList = planBasList.stream().map(DosFltPlanBas::getPlanSno).collect(Collectors.toList());
List<DosFltPlanArea> areaList = dosFltPlanQueryRepository.findByPlanSnoInAndAddrOrderByZoneNoAsc(planSnoList, rq);
List<DosFltPlanArea> areaList = dosFltPlanQueryRepository.findByPlanSnoInAndSearchOrderByZoneNoAsc(planSnoList, rq);
List<DosFltPlanResult> resultList = dosFltPlanResultRepository.findByPlanSnoIn(planSnoList);
List<BasDosPlanRs> rs = new ArrayList<>();
@ -146,6 +146,13 @@ public class BasDosService {
continue;
}
// ReviewedType이 UNNECESSARY(불필요)인 경우 ApprovalCd가 UNTARGETED_AREA(비대상)인 경우만 조회
if(rq.getReviewedType() == ReviewedType.UNNECESSARY){
if(approvalCd != ApprovalCd.UNTARGETED_AREA) {
continue;
}
}
// 사용자 부서에 따른 필터 관제과(DF0002), 운항과(DF0002-1)
String cptAuthCode = jwtTokenUtil.getCptAuthCodeByToken();
if (cptAuthCode != null) {

2
pav-server/src/main/java/com/palnet/biz/config/WebMvcConfig.java

@ -1,6 +1,7 @@
package com.palnet.biz.config;
import com.palnet.biz.config.convert.CodeToFltPurposeBinding;
import com.palnet.biz.config.convert.CodeToReviewdTypeConverter;
import com.palnet.biz.config.convert.StringToInstantBinding;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -93,6 +94,7 @@ public class WebMvcConfig implements WebMvcConfigurer{
registry.addConverter(new StringToInstantBinding());
registry.addConverter(new CodeToFltPurposeBinding());
registry.addConverter(new CodeToReviewdTypeConverter());
/* ISO 타입.
registrar.setUseIsoFormat(true);

2
pav-server/src/main/java/com/palnet/biz/config/convert/CodeToFltPurposeBinding.java

@ -1,10 +1,8 @@
package com.palnet.biz.config.convert;
import com.palnet.biz.jpa.entity.type.FltPurpose;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.convert.converter.Converter;
@Slf4j
public class CodeToFltPurposeBinding implements Converter<String, FltPurpose> {
@Override

11
pav-server/src/main/java/com/palnet/biz/config/convert/CodeToReviewdTypeConverter.java

@ -0,0 +1,11 @@
package com.palnet.biz.config.convert;
import com.palnet.biz.jpa.entity.type.ReviewedType;
import org.springframework.core.convert.converter.Converter;
public class CodeToReviewdTypeConverter implements Converter<String, ReviewedType> {
@Override
public ReviewedType convert(String s) {
return ReviewedType.fromCode(s);
}
}

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

@ -28,66 +28,71 @@ public class DosFltPlanQueryRepository {
short idx = 0;
StringBuilder districtAddr = new StringBuilder();
if(rq.getCtprvn() != null && !rq.getCtprvn().isBlank()) {
if (rq.getCtprvn() != null && !rq.getCtprvn().isBlank()) {
districtAddr.append(rq.getCtprvn());
idx ++;
idx++;
}
if(rq.getSig() != null && !rq.getSig().isBlank()) {
if(idx > 0) districtAddr.append(" ");
if (rq.getSig() != null && !rq.getSig().isBlank()) {
if (idx > 0) districtAddr.append(" ");
districtAddr.append(rq.getSig());
}
BooleanBuilder builder = new BooleanBuilder();
if(rq.getSearchStDt() != null) {
if (rq.getSearchStDt() != null) {
builder.and(bas.applyDt.goe(rq.getSearchStDt()));
}
if(rq.getSearchEndDt() != null) {
if (rq.getSearchEndDt() != null) {
builder.and(bas.applyDt.loe(rq.getSearchEndDt()));
}
if(StringUtils.hasText(rq.getApplyNo())) {
if (StringUtils.hasText(rq.getApplyNo())) {
builder.and(bas.applyNo.eq(rq.getApplyNo()));
}
if(!districtAddr.toString().isBlank()){
if (!districtAddr.toString().isBlank()) {
builder.and(qDosFltPlanArea.addr.like("%" + districtAddr.toString() + "%"));
}
if(rq.getAddress() != null && !rq.getAddress().isEmpty()){
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))
.on(bas.planSno.eq(qDosFltPlanArea.planSno))
.where(builder)
.orderBy(bas.applyDt.desc(), bas.applyNo.desc())
.groupBy(bas.planSno)
.fetch();
}
public List<DosFltPlanArea> findByPlanSnoInAndAddrOrderByZoneNoAsc(List<Long> planSno, BasDosPlanRq rq){
public List<DosFltPlanArea> findByPlanSnoInAndSearchOrderByZoneNoAsc(List<Long> planSno, BasDosPlanRq rq) {
QDosFltPlanArea qDosFltPlanArea = QDosFltPlanArea.dosFltPlanArea;
short idx = 0;
StringBuilder districtAddr = new StringBuilder();
if(rq.getCtprvn() != null && !rq.getCtprvn().isBlank()) {
if (rq.getCtprvn() != null && !rq.getCtprvn().isBlank()) {
districtAddr.append(rq.getCtprvn());
idx ++;
idx++;
}
if(rq.getSig() != null && !rq.getSig().isBlank()) {
if(idx > 0) districtAddr.append(" ");
if (rq.getSig() != null && !rq.getSig().isBlank()) {
if (idx > 0) districtAddr.append(" ");
districtAddr.append(rq.getSig());
}
BooleanBuilder builder = new BooleanBuilder();
builder.and(qDosFltPlanArea.planSno.in(planSno));
if(!districtAddr.toString().isBlank()){
if (!districtAddr.toString().isBlank()) {
builder.and(qDosFltPlanArea.addr.like("%" + districtAddr.toString() + "%"));
}
if(rq.getAddress() != null && !rq.getAddress().isEmpty()){
if (rq.getAddress() != null && !rq.getAddress().isEmpty()) {
builder.and(qDosFltPlanArea.addr.like("%" + rq.getAddress() + "%"));
}
// 검토 결과 - W일 경우 W, null 모두 조회(null == W)
if (rq.getReviewedType() != null) {
builder.and(qDosFltPlanArea.reviewedType.eq(rq.getReviewedType()).or(qDosFltPlanArea.reviewedType.isNull()));
}
return query
.select(qDosFltPlanArea)
.from(qDosFltPlanArea)

Loading…
Cancel
Save