From 6f13ee19ff5d00164f6444e8abc1e3bc8703ed92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dhji=28=EC=A7=80=EB=8C=80=ED=95=9C=29?= Date: Wed, 10 Jul 2024 11:44:16 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=93=9C=EB=A1=A0=EC=9B=90=EC=8A=A4?= =?UTF-8?q?=ED=86=B1=20interface=20=EB=B3=80=EA=B2=BD=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B8=ED=95=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- http/server/server.http | 45 +++++++++++----- .../api/bas/dos/service/BasDosService.java | 2 +- .../biz/api/external/model/DosPlanRq.java | 39 ++++++++++++-- .../external/service/DronOneStopService.java | 52 ++++++++++++++----- .../palnet/biz/jpa/entity/DosFltPlanBas.java | 3 -- .../biz/jpa/entity/DosFltPlanDrone.java | 37 +++++++++++++ .../biz/jpa/entity/DosFltPlanPilot.java | 34 ++++++++++++ .../dos/DosFltPlanDroneRepository.java | 9 ++++ .../dos/DosFltPlanPilotRepository.java | 9 ++++ 9 files changed, 197 insertions(+), 33 deletions(-) create mode 100644 pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanDrone.java create mode 100644 pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanPilot.java create mode 100644 pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java create mode 100644 pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java diff --git a/http/server/server.http b/http/server/server.http index 63754931..84c5c690 100644 --- a/http/server/server.http +++ b/http/server/server.http @@ -72,11 +72,12 @@ Content-Type: application/json { "fltaplylist": [ { - "aplyno": "T201118-1010", - "fbctnno": "163CGBEROA529Y", - "aplyymd": "20240614", - "fltstymd": "20240615", - "fltendymd": "20240615", + "aplyno": "201118-1010", + "aplyymd": "20240420", + "fltstymd": "20240420", + "fltendymd": "20240420", + "aplynm": "홍*동", + "prps": "레저비행", "zone": [ { "zoneno": "1", @@ -84,7 +85,7 @@ Content-Type: application/json "lon": 126.699, "elev": 100, "radius": 5, - "addr": "경기도 머시기" + "addr": "서울시 마포구 상암동1674" }, { "zoneno": "2", @@ -92,15 +93,33 @@ Content-Type: application/json "lon": 126.699, "elev": 150, "radius": 5, - "addr": "경기도 머시기2" + "addr": "서울시 마포구 상암동1674" + } + ], + "drone": [ + { + "fbctnno": "163CGBEROA529Y", + "benefit": "Y", + "weight": "C3", + "insrnc_join_yn": "Y" }, { - "zoneno": "3", - "lat": 37.525651, - "lon": 126.748234, - "elev": 75, - "radius": 5, - "addr": "경기도 머시기3" + "fbctnno": "163CGBEROA529Y", + "benefit": "Y", + "weight": "C3", + "insrnc_join_yn": "Y" + } + ], + "pilot": [ + { + "flnm": "홍*동", + "brdt": "2008****", + "crtfct_no": "91-123456" + }, + { + "flnm": "홍*동", + "brdt": "2008****", + "crtfct_no": "91-123456" } ] } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java index b4429b90..0c7396da 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java @@ -221,7 +221,7 @@ public class BasDosService { .applyDtMonth(applyDtMonth) .applyDtDay(applyDtDay) .applyNm(bas.getApplyNm()) - .fbctnNo(bas.getFbctnNo()) +// .fbctnNo(bas.getFbctnNo()) .schFltStDt(bas.getSchFltStDt()) .schFltEndDt(bas.getSchFltEndDt()) .purpose(purpose) diff --git a/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java b/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java index 22aa99a9..acf4ce7e 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java +++ b/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRq.java @@ -28,20 +28,22 @@ public class DosPlanRq { // 신청일자 @JsonFormat(pattern = "yyyyMMdd") private LocalDate aplyymd; - // 신청자 - private String aplynm; - // 제작번호 - private String fbctnno; // 비행시작일자 @JsonFormat(pattern = "yyyyMMdd") private LocalDate fltstymd; // 비행조료일자 @JsonFormat(pattern = "yyyyMMdd") private LocalDate fltendymd; + // 신청자 + private String aplynm; // 비행목적 private String prps; // 비행구역 private List zone; + // 기체 + private List drone; + // 조종자 + private List pilot; @Data @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; + } } diff --git a/pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java b/pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java index b6014409..8cb0ba8d 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java @@ -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.DosPlanRq; import com.palnet.biz.api.external.model.DosPlanRs; -import com.palnet.biz.jpa.entity.DosFltPlanArea; -import com.palnet.biz.jpa.entity.DosFltPlanBas; -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.biz.jpa.entity.*; +import com.palnet.biz.jpa.repository.dos.*; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; import com.palnet.comn.utils.AirspaceUtils; @@ -28,14 +24,16 @@ import java.util.List; import java.util.Map; @Slf4j -@Transactional @RequiredArgsConstructor +@Transactional @Service public class DronOneStopService { private final DosFltPlanBasRepository dosFltPlanBasRepository; private final DosFltPlanAreaRepository dosFltPlanAreaRepository; private final DosFltPlanResultRepository dosFltPlanResultRepository; + private final DosFltPlanDroneRepository dosFltPlanDroneRepository; + private final DosFltPlanPilotRepository dosFltPlanPilotRepository; private final AreaUtils areaUtils; public DosPlanRs saveDosPlan(DosPlanRq rq) { @@ -44,7 +42,6 @@ public class DronOneStopService { } Map>> validFltAplyChkList = new HashMap<>(); - // bas save List fltaplylist = rq.getFltaplylist(); fltaplylist.forEach(fltaply -> { @@ -53,7 +50,6 @@ public class DronOneStopService { .applyNo(fltaply.getAplyno()) .applyDt(fltaply.getAplyymd()) .applyNm(fltaply.getAplynm()) - .fbctnNo(fltaply.getFbctnno()) .schFltStDt(fltaply.getFltstymd()) .schFltEndDt(fltaply.getFltendymd()) .purpose(fltaply.getPrps()) @@ -62,6 +58,38 @@ public class DronOneStopService { .build(); DosFltPlanBas saveDosFltPlanBas = dosFltPlanBasRepository.save(dosFltPlanBasInsert); + // drone save + if (fltaply.getDrone() != null) { + List 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 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 if (fltaply.getZone() == null) { throw new CustomException(ErrorCode.TS_PARAM_REQUIRED); @@ -197,7 +225,7 @@ public class DronOneStopService { .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); // 중복되는 공역이 없을 경우 "미대상 지역" - if(duplicatedAirspaces.isEmpty()) { + if (duplicatedAirspaces.isEmpty()) { result.setApprovalCd(ApprovalCd.UNTARGETED_AREA); return result; } @@ -210,9 +238,9 @@ public class DronOneStopService { // 가장 낮음 허용고도보다 신청 고도가 낮을 경우 승인 처리 result.setFltElevMax(minHighElev); - if(minHighElev <= 0){ + if (minHighElev <= 0) { result.setApprovalCd(ApprovalCd.UNAPPROVED); - } else if(targetHighElev > minHighElev) { + } else if (targetHighElev > minHighElev) { result.setApprovalCd(ApprovalCd.CONDITIONAL_APPROVED); } else { result.setApprovalCd(ApprovalCd.APPROVAL); diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java index fb542ddf..e4ca4693 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java @@ -30,9 +30,6 @@ public class DosFltPlanBas { // 시청자 @Column(name = "APPLY_NM") private String applyNm; - // 제작번호 - @Column(name = "FBCTN_NO") - private String fbctnNo; // 예상비행시작일시 @Column(name = "SCH_FLT_ST_DT") private LocalDate schFltStDt; diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanDrone.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanDrone.java new file mode 100644 index 00000000..71aeb0d0 --- /dev/null +++ b/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; + +} diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanPilot.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanPilot.java new file mode 100644 index 00000000..0294ecd5 --- /dev/null +++ b/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; +} diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanDroneRepository.java new file mode 100644 index 00000000..afa0c2c3 --- /dev/null +++ b/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 { +} diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanPilotRepository.java new file mode 100644 index 00000000..1e82bcc0 --- /dev/null +++ b/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 { +}