Browse Source

feat: 드론원스톱 신청목록 조회

- DB 컬럼 추가(세부사항, 긴급구조기관, 비고)
- 조회시 신청일자 분리(월,일)
- 조회시 주소 분기(행정구역1, 행정구역, 상세주소)
- 비행목적 특정문구(레저비행, 사진/영상촬영) 제외하고 기타로 치환
feature/address-coordinate
지대한 3 months ago
parent
commit
1b0c6f2962
  1. 5
      http/server/server.http
  2. 15
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java
  3. 6
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRs.java
  4. 74
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  5. 9
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java

5
http/server/server.http

@ -35,6 +35,11 @@ Content-Type: application/json
"userPswd": "palnet!234"
}
> {%
const accessToken = 'palnet ' + response.body.data.accessToken
client.global.set("accessToken", accessToken)
%}
### profile
< {%
request.variables.set("cstmrSno", "37")

15
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanAreaRs.java

@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@ -20,6 +21,10 @@ public class BasDosPlanAreaRs {
private Long planSno;
// 문서번호
private String applyNo;
// 신청일자
private LocalDate applyDt;
private String applyDtMonth;
private String applyDtDay;
// client area id
private String zoneNo;
// 버퍼존(반경)
@ -34,6 +39,16 @@ public class BasDosPlanAreaRs {
private Double lon;
// 주소
private String addr;
private String addr1;
private String addr2;
private String addr3;
// 세부사항
private String dtl;
// 긴급구조기관
private String era;
// 비고
private String rm;
// 수정일시
private Instant updateDt;
// 생성일시

6
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRs.java

@ -20,12 +20,18 @@ public class BasDosPlanRs {
private String applyNo;
// 신청일자
private LocalDate applyDt;
private String applyDtMonth;
private String applyDtDay;
// 신청자
private String applyNm;
// 제작번호
private String fbctnNo;
// 예상비행시작일시
private LocalDate schFltStDt;
// 예상비행종료일시
private LocalDate schFltEndDt;
// 비행목적
private String purpose;
// 수정일시
private Instant updateDt;
// 생성일시

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

@ -17,11 +17,11 @@ import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.time.LocalDate;
import java.time.Month;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@ -62,6 +62,30 @@ public class BasDosService {
for (DosFltPlanBas bas : planBasList) {
Long planSno = bas.getPlanSno();
String applyNo = bas.getApplyNo();
// 신청일시 분할
LocalDate applyDt = bas.getApplyDt();
String applyDtMonth = applyDt.getMonthValue() + "";
String applyDtDay = applyDt.getDayOfMonth() + "";
// 비행목적 - 비행목적은 레저비행, 사진/영상촬영을 제외한 나머지 목적은 기타 로 표현
String purpose = bas.getPurpose();
String[] purposeTexts = {"레저비행", "사진/영상촬영"};
if (StringUtils.hasText(purpose)) {
boolean isEtc = true;
for(String compareStr: purposeTexts){
if(purpose.contains(compareStr)){
isEtc = false;
break;
}
}
if(isEtc) {
purpose = "기타";
}
}
List<BasDosPlanAreaRs> areaRsList = new ArrayList<>();
for (DosFltPlanArea area : areaList) {
@ -95,19 +119,52 @@ public class BasDosService {
List<Map<String, Double>> bufferCoordList = coordBuffers.stream().map(coord -> Map.of("lat", coord.y, "lon", coord.x)).collect(Collectors.toList());
// TODO 추후 Utils 생성
// 주소 분할 - 임시 순서대로 split
String addr = area.getAddr();
String[] addrArr = addr.split(" ");
String addr1 = "";
String addr2 = "";
StringBuilder addrRest = new StringBuilder();
for (int i = 0; i < addrArr.length; i++) {
switch (i) {
case 0:
addr1 = addrArr[i];
break;
case 1:
addr2 = addrArr[i];
break;
case 2:
addrRest.append(addrArr[i]);
break;
default:
addrRest.append(" ").append(addrArr[i]);
break;
}
}
String addr3 = addrRest.toString();
BasDosPlanAreaRs areaRs = BasDosPlanAreaRs.builder()
.planAreaSno(area.getPlanAreaSno())
.planSno(area.getPlanSno())
.applyNo(applyNo)
.applyDt(applyDt)
.applyDtMonth(applyDtMonth)
.applyDtDay(applyDtDay)
.zoneNo(area.getZoneNo())
.bufferZone(area.getBufferZone())
.fltElev(area.getFltElev())
.lat(area.getLat())
.lon(area.getLon())
.addr(area.getAddr())
.addr(addr)
.addr1(addr1)
.addr2(addr2)
.addr3(addr3)
.approvalCd(approvalCd)
.fltElevMax(fltElevMax)
.dtl(area.getDtl())
.era(area.getEra())
.rm(area.getRm())
.bufferCoordList(bufferCoordList)
.build();
areaRsList.add(areaRs);
@ -118,13 +175,18 @@ public class BasDosService {
continue;
}
BasDosPlanRs basRs = BasDosPlanRs.builder()
.planSno(bas.getPlanSno())
.applyNo(bas.getApplyNo())
.applyDt(bas.getApplyDt())
.applyDt(applyDt)
.applyDtMonth(applyDtMonth)
.applyDtDay(applyDtDay)
.applyNm(bas.getApplyNm())
.fbctnNo(bas.getFbctnNo())
.schFltStDt(bas.getSchFltStDt())
.schFltEndDt(bas.getSchFltEndDt())
.purpose(purpose)
.updateDt(bas.getUpdateDt())
.createDt(bas.getCreateDt())
.areaList(areaRsList)

9
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java

@ -41,6 +41,15 @@ public class DosFltPlanArea {
// 주소
@Column(name = "ADDR")
private String addr;
// 세부사항
@Column(name = "DTL")
private String dtl;
// 긴급구조기관
@Column(name = "era")
private String era;
// 비고
@Column(name = "RM")
private String rm;
// 수정일시
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;

Loading…
Cancel
Save