Browse Source

feat: 드론원스톱 interface 변경으로 인한 수정

feature/address-coordinate^2
지대한 2 months ago
parent
commit
6f13ee19ff
  1. 45
      http/server/server.http
  2. 2
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  3. 39
      pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java
  4. 52
      pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java
  5. 3
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java
  6. 37
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanDrone.java
  7. 34
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanPilot.java
  8. 9
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java
  9. 9
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java

45
http/server/server.http

@ -72,11 +72,12 @@ Content-Type: application/json
{ {
"fltaplylist": [ "fltaplylist": [
{ {
"aplyno": "T201118-1010", "aplyno": "201118-1010",
"fbctnno": "163CGBEROA529Y", "aplyymd": "20240420",
"aplyymd": "20240614", "fltstymd": "20240420",
"fltstymd": "20240615", "fltendymd": "20240420",
"fltendymd": "20240615", "aplynm": "홍*동",
"prps": "레저비행",
"zone": [ "zone": [
{ {
"zoneno": "1", "zoneno": "1",
@ -84,7 +85,7 @@ Content-Type: application/json
"lon": 126.699, "lon": 126.699,
"elev": 100, "elev": 100,
"radius": 5, "radius": 5,
"addr": "경기도 머시기" "addr": "서울시 마포구 상암동1674"
}, },
{ {
"zoneno": "2", "zoneno": "2",
@ -92,15 +93,33 @@ Content-Type: application/json
"lon": 126.699, "lon": 126.699,
"elev": 150, "elev": 150,
"radius": 5, "radius": 5,
"addr": "경기도 머시기2" "addr": "서울시 마포구 상암동1674"
}
],
"drone": [
{
"fbctnno": "163CGBEROA529Y",
"benefit": "Y",
"weight": "C3",
"insrnc_join_yn": "Y"
}, },
{ {
"zoneno": "3", "fbctnno": "163CGBEROA529Y",
"lat": 37.525651, "benefit": "Y",
"lon": 126.748234, "weight": "C3",
"elev": 75, "insrnc_join_yn": "Y"
"radius": 5, }
"addr": "경기도 머시기3" ],
"pilot": [
{
"flnm": "홍*동",
"brdt": "2008****",
"crtfct_no": "91-123456"
},
{
"flnm": "홍*동",
"brdt": "2008****",
"crtfct_no": "91-123456"
} }
] ]
} }

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

@ -221,7 +221,7 @@ public class BasDosService {
.applyDtMonth(applyDtMonth) .applyDtMonth(applyDtMonth)
.applyDtDay(applyDtDay) .applyDtDay(applyDtDay)
.applyNm(bas.getApplyNm()) .applyNm(bas.getApplyNm())
.fbctnNo(bas.getFbctnNo()) // .fbctnNo(bas.getFbctnNo())
.schFltStDt(bas.getSchFltStDt()) .schFltStDt(bas.getSchFltStDt())
.schFltEndDt(bas.getSchFltEndDt()) .schFltEndDt(bas.getSchFltEndDt())
.purpose(purpose) .purpose(purpose)

39
pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java vendored

@ -28,20 +28,22 @@ public class DosPlanRq {
// 신청일자 // 신청일자
@JsonFormat(pattern = "yyyyMMdd") @JsonFormat(pattern = "yyyyMMdd")
private LocalDate aplyymd; private LocalDate aplyymd;
// 신청자
private String aplynm;
// 제작번호
private String fbctnno;
// 비행시작일자 // 비행시작일자
@JsonFormat(pattern = "yyyyMMdd") @JsonFormat(pattern = "yyyyMMdd")
private LocalDate fltstymd; private LocalDate fltstymd;
// 비행조료일자 // 비행조료일자
@JsonFormat(pattern = "yyyyMMdd") @JsonFormat(pattern = "yyyyMMdd")
private LocalDate fltendymd; private LocalDate fltendymd;
// 신청자
private String aplynm;
// 비행목적 // 비행목적
private String prps; private String prps;
// 비행구역 // 비행구역
private List<DosPlanArea> zone; private List<DosPlanArea> zone;
// 기체
private List<DosPlanDrone> drone;
// 조종자
private List<DosPlanPilot> pilot;
@Data @Data
@Builder @Builder
@ -63,6 +65,35 @@ public class DosPlanRq {
} }
// 기체
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class DosPlanDrone {
// 제작번호
private String fbctnno;
// 기체용도
private String benefit;
// 기체중량
private String weight;
// 보험가입여부
private String insrnc_join_yn;
}
// 조종사
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class DosPlanPilot {
// 조종자 성명
private String flnm;
// 조종자 생년월일
private String brdt;
// 자격번호
private String crtfct_no;
}
} }

52
pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java vendored

@ -4,12 +4,8 @@ import com.palnet.biz.api.external.model.ApprovalCd;
import com.palnet.biz.api.external.model.DosApprovalResult; import com.palnet.biz.api.external.model.DosApprovalResult;
import com.palnet.biz.api.external.model.DosPlanRq; import com.palnet.biz.api.external.model.DosPlanRq;
import com.palnet.biz.api.external.model.DosPlanRs; import com.palnet.biz.api.external.model.DosPlanRs;
import com.palnet.biz.jpa.entity.DosFltPlanArea; import com.palnet.biz.jpa.entity.*;
import com.palnet.biz.jpa.entity.DosFltPlanBas; import com.palnet.biz.jpa.repository.dos.*;
import com.palnet.biz.jpa.entity.DosFltPlanResult;
import com.palnet.biz.jpa.repository.dos.DosFltPlanAreaRepository;
import com.palnet.biz.jpa.repository.dos.DosFltPlanBasRepository;
import com.palnet.biz.jpa.repository.dos.DosFltPlanResultRepository;
import com.palnet.comn.code.ErrorCode; import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException; import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.AirspaceUtils; import com.palnet.comn.utils.AirspaceUtils;
@ -28,14 +24,16 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j @Slf4j
@Transactional
@RequiredArgsConstructor @RequiredArgsConstructor
@Transactional
@Service @Service
public class DronOneStopService { public class DronOneStopService {
private final DosFltPlanBasRepository dosFltPlanBasRepository; private final DosFltPlanBasRepository dosFltPlanBasRepository;
private final DosFltPlanAreaRepository dosFltPlanAreaRepository; private final DosFltPlanAreaRepository dosFltPlanAreaRepository;
private final DosFltPlanResultRepository dosFltPlanResultRepository; private final DosFltPlanResultRepository dosFltPlanResultRepository;
private final DosFltPlanDroneRepository dosFltPlanDroneRepository;
private final DosFltPlanPilotRepository dosFltPlanPilotRepository;
private final AreaUtils areaUtils; private final AreaUtils areaUtils;
public DosPlanRs saveDosPlan(DosPlanRq rq) { public DosPlanRs saveDosPlan(DosPlanRq rq) {
@ -44,7 +42,6 @@ public class DronOneStopService {
} }
Map<String, List<Map<String, Object>>> validFltAplyChkList = new HashMap<>(); Map<String, List<Map<String, Object>>> validFltAplyChkList = new HashMap<>();
// bas save // bas save
List<DosPlanRq.DosPlan> fltaplylist = rq.getFltaplylist(); List<DosPlanRq.DosPlan> fltaplylist = rq.getFltaplylist();
fltaplylist.forEach(fltaply -> { fltaplylist.forEach(fltaply -> {
@ -53,7 +50,6 @@ public class DronOneStopService {
.applyNo(fltaply.getAplyno()) .applyNo(fltaply.getAplyno())
.applyDt(fltaply.getAplyymd()) .applyDt(fltaply.getAplyymd())
.applyNm(fltaply.getAplynm()) .applyNm(fltaply.getAplynm())
.fbctnNo(fltaply.getFbctnno())
.schFltStDt(fltaply.getFltstymd()) .schFltStDt(fltaply.getFltstymd())
.schFltEndDt(fltaply.getFltendymd()) .schFltEndDt(fltaply.getFltendymd())
.purpose(fltaply.getPrps()) .purpose(fltaply.getPrps())
@ -62,6 +58,38 @@ public class DronOneStopService {
.build(); .build();
DosFltPlanBas saveDosFltPlanBas = dosFltPlanBasRepository.save(dosFltPlanBasInsert); DosFltPlanBas saveDosFltPlanBas = dosFltPlanBasRepository.save(dosFltPlanBasInsert);
// drone save
if (fltaply.getDrone() != null) {
List<DosPlanRq.DosPlan.DosPlanDrone> droneList = fltaply.getDrone();
droneList.forEach(drone -> {
DosFltPlanDrone dosFltPlanDroneInsert = DosFltPlanDrone.builder()
.planSno(saveDosFltPlanBas.getPlanSno())
.fbctnNo(drone.getFbctnno())
.benefit(drone.getBenefit())
.weightCd(drone.getWeight())
.insrncJoinYn(drone.getInsrnc_join_yn())
.updateDt(Instant.now())
.createDt(Instant.now())
.build();
dosFltPlanDroneRepository.save(dosFltPlanDroneInsert);
});
}
// pilot save
if (fltaply.getPilot() != null) {
List<DosPlanRq.DosPlan.DosPlanPilot> pilotList = fltaply.getPilot();
pilotList.forEach(pilot -> {
DosFltPlanPilot dosFltPlanPilotInsert = DosFltPlanPilot.builder()
.planSno(saveDosFltPlanBas.getPlanSno())
.pilotNm(pilot.getFlnm())
.birthDate(pilot.getBrdt())
.crtfctNo(pilot.getCrtfct_no())
.updateDt(Instant.now())
.createDt(Instant.now())
.build();
dosFltPlanPilotRepository.save(dosFltPlanPilotInsert);
});
}
// area save // area save
if (fltaply.getZone() == null) { if (fltaply.getZone() == null) {
throw new CustomException(ErrorCode.TS_PARAM_REQUIRED); throw new CustomException(ErrorCode.TS_PARAM_REQUIRED);
@ -197,7 +225,7 @@ public class DronOneStopService {
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll); .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
// 중복되는 공역이 없을 경우 "미대상 지역" // 중복되는 공역이 없을 경우 "미대상 지역"
if(duplicatedAirspaces.isEmpty()) { if (duplicatedAirspaces.isEmpty()) {
result.setApprovalCd(ApprovalCd.UNTARGETED_AREA); result.setApprovalCd(ApprovalCd.UNTARGETED_AREA);
return result; return result;
} }
@ -210,9 +238,9 @@ public class DronOneStopService {
// 가장 낮음 허용고도보다 신청 고도가 낮을 경우 승인 처리 // 가장 낮음 허용고도보다 신청 고도가 낮을 경우 승인 처리
result.setFltElevMax(minHighElev); result.setFltElevMax(minHighElev);
if(minHighElev <= 0){ if (minHighElev <= 0) {
result.setApprovalCd(ApprovalCd.UNAPPROVED); result.setApprovalCd(ApprovalCd.UNAPPROVED);
} else if(targetHighElev > minHighElev) { } else if (targetHighElev > minHighElev) {
result.setApprovalCd(ApprovalCd.CONDITIONAL_APPROVED); result.setApprovalCd(ApprovalCd.CONDITIONAL_APPROVED);
} else { } else {
result.setApprovalCd(ApprovalCd.APPROVAL); result.setApprovalCd(ApprovalCd.APPROVAL);

3
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java

@ -30,9 +30,6 @@ public class DosFltPlanBas {
// 시청자 // 시청자
@Column(name = "APPLY_NM") @Column(name = "APPLY_NM")
private String applyNm; private String applyNm;
// 제작번호
@Column(name = "FBCTN_NO")
private String fbctnNo;
// 예상비행시작일시 // 예상비행시작일시
@Column(name = "SCH_FLT_ST_DT") @Column(name = "SCH_FLT_ST_DT")
private LocalDate schFltStDt; private LocalDate schFltStDt;

37
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanDrone.java

@ -0,0 +1,37 @@
package com.palnet.biz.jpa.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "DOS_FLT_PLAN_DRONE")
public class DosFltPlanDrone {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLAN_DRONE_SNO")
private Long planDroneSno;
@Column(name = "PLAN_SNO")
private Long planSno;
@Column(name = "FBCTN_NO")
private String fbctnNo;
@Column(name = "BENEFIT")
private String benefit;
@Column(name = "WEIGHT_CD")
private String weightCd;
@Column(name = "INSRNC_JOIN_YN")
private String insrncJoinYn;
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
@Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
}

34
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanPilot.java

@ -0,0 +1,34 @@
package com.palnet.biz.jpa.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "DOS_FLT_PLAN_PILOT")
public class DosFltPlanPilot {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLAN_PILOT_SNO")
private Long planPilotSno;
@Column(name = "PLAN_SNO")
private Long planSno;
@Column(name = "PILOT_NM")
private String pilotNm;
@Column(name = "BIRTH_DATE")
private String birthDate;
@Column(name = "CRTFCT_NO")
private String crtfctNo;
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
@Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
}

9
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java

@ -0,0 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.jpa.entity.DosFltPlanDrone;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DosFltPlanDroneRepository extends JpaRepository<DosFltPlanDrone, Long> {
}

9
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java

@ -0,0 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.jpa.entity.DosFltPlanPilot;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DosFltPlanPilotRepository extends JpaRepository<DosFltPlanPilot, Long> {
}
Loading…
Cancel
Save