From 8e7202c0a0082339df1c3d7e11456181e511ffa9 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, 31 Jul 2024 11:52:18 +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=20=EC=97=B0=EB=8F=99=20=EC=88=98=EC=A0=95=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EC=88=98=EC=A0=95=20-=20=EB=AF=B8?= =?UTF-8?q?=EB=8C=80=EC=83=81(=EB=B9=84=EB=8C=80=EC=83=81)=20=EC=A7=80?= =?UTF-8?q?=EC=97=AD=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=20=EA=B2=80=ED=86=A0?= =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=20=EC=B2=98=EB=A6=AC=20=EA=B7=B8?= =?UTF-8?q?=EC=99=B8=20=EA=B2=80=ED=86=A0=EB=8C=80=EA=B8=B0=20-=20?= =?UTF-8?q?=EB=B9=84=ED=96=89=20=EB=AA=A9=EC=A0=81=EC=9D=B4=20=ED=8A=B9?= =?UTF-8?q?=EC=A0=95=20=EB=AC=B8=EA=B5=AC(=EC=88=98=EC=83=89=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0,=20=EC=9D=B8=EB=AA=85=EA=B5=AC=EC=A1=B0,=20=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=EC=A0=95=EA=B2=80=20=EB=93=B1)=EC=9D=B8=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EB=AC=B4=EC=A1=B0=EA=B1=B4=20=EC=8A=B9=EC=9D=B8=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20-=20=EB=B0=98=ED=99=98=EC=8B=9C=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=EA=B5=AC=EC=97=AD=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=B0=8F=20=ED=97=88=EC=9A=A9=EA=B3=A0=EB=8F=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/api/external/model/DosPlanRs.java | 4 ++-- .../external/service/DronOneStopService.java | 19 ++++++++++++++++++- .../biz/jpa/entity/type/ReviewedType.java | 6 +++--- .../service/DronOneStopServiceTest.java | 2 ++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRs.java b/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRs.java index 6c6e6f2e..2d7e4899 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRs.java +++ b/pav-server/src/main/java/com/palnet/biz/api/external/model/DosPlanRs.java @@ -1,12 +1,10 @@ package com.palnet.biz.api.external.model; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDate; import java.util.List; @Data @@ -35,6 +33,8 @@ public class DosPlanRs { private String zoneno; private String chkresult; + private String obslimit; + private String prmtelev; private String reason; 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 615660a8..79036bfe 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 @@ -6,6 +6,7 @@ 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.*; +import com.palnet.biz.jpa.entity.type.ReviewedType; import com.palnet.biz.jpa.repository.dos.*; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; @@ -24,6 +25,7 @@ import java.time.Instant; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @Slf4j @@ -38,6 +40,7 @@ public class DronOneStopService { private final DosFltPlanDroneRepository dosFltPlanDroneRepository; private final DosFltPlanPilotRepository dosFltPlanPilotRepository; private final AreaUtils areaUtils; + private final List PASS_PURPOSES = List.of("수색구조", "인명구조", "시설정검"); public DosPlanRs saveDosPlan(DosPlanRq rq) { if (rq == null) { @@ -66,6 +69,7 @@ public class DronOneStopService { DosPlanRs.DosPlan dosPlan = DosPlanRs.DosPlan.builder() .aplyno(fltaply.getAplyno()) .build(); + List checkInfos = new ArrayList<>(); // drone save @@ -115,6 +119,10 @@ public class DronOneStopService { // 검증 Coordinate centerCoordinate = new Coordinate(area.getLon(), area.getLat()); DosApprovalResult approvalResult = getApprovalResult(area.getRadius(), area.getElev(), centerCoordinate); + ApprovalCd saveApprovalCd = approvalResult.getApprovalCd(); + + // 검토결과 - approvalCd가 비대상일 경우 검토불필요 그외 대기 + ReviewedType reviewedType = saveApprovalCd == ApprovalCd.UNTARGETED_AREA ? ReviewedType.UNNECESSARY : ReviewedType.WAIT; // area save DosFltPlanArea dosFltPlanAreaInsert = DosFltPlanArea.builder() @@ -128,16 +136,22 @@ public class DronOneStopService { .allowRadius(approvalResult.getAllowRadius()) .reqRadius(approvalResult.getReqRadius()) .limitZone(approvalResult.getLimitZone()) + .reviewedType(reviewedType) .updateDt(Instant.now()) .createDt(Instant.now()) .build(); DosFltPlanArea saveDosFltPlanArea = dosFltPlanAreaRepository.save(dosFltPlanAreaInsert); + // 비행 목적이 특정 문구(수색구조, 인명구조, 시설정검 등)인 경우 승인 처리 + if(PASS_PURPOSES.contains(fltaply.getPrps())) { + saveApprovalCd = ApprovalCd.APPROVAL; + } + // result save DosFltPlanResult dosFltPlanResultInsert = DosFltPlanResult.builder() .planSno(saveDosFltPlanArea.getPlanSno()) .planAreaSno(saveDosFltPlanArea.getPlanAreaSno()) - .approvalCd(approvalResult.getApprovalCd().getCode()) + .approvalCd(saveApprovalCd.getCode()) .fltElevMax(approvalResult.getFltElevMax()) .updateDt(Instant.now()) .createDt(Instant.now()) @@ -157,7 +171,10 @@ public class DronOneStopService { .zoneno(area.getZoneno()) .chkresult(approvalCd.getCode()) .reason(approvalCd.getMessage()) + .obslimit(Objects.requireNonNull(LimitZoneType.fromCode(approvalResult.getLimitZone())).getMessage()) + .prmtelev(approvalResult.getFltElevMax() != null ? String.valueOf(((int) Math.floor(approvalResult.getFltElevMax()))) : null) .build(); + checkInfos.add(checkInfo); }); dosPlan.setCheckinfos(checkInfos); diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/ReviewedType.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/ReviewedType.java index 3abefbb1..63e74c3e 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/ReviewedType.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/entity/type/ReviewedType.java @@ -5,9 +5,9 @@ import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; public enum ReviewedType { - REVIEWED("R", "완료"), - WAIT("W", "대기"), - UNNECESSARY("U", "불필요"), + REVIEWED("R", "검토완료"), + WAIT("W", "검토대기"), + UNNECESSARY("U", "검토불필요"), REVIEW_AGAIN("A", "재검토"); private final String code; diff --git a/pav-server/src/test/java/com/palnet/biz/api/external/service/DronOneStopServiceTest.java b/pav-server/src/test/java/com/palnet/biz/api/external/service/DronOneStopServiceTest.java index 5fb4b2e2..a9283934 100644 --- a/pav-server/src/test/java/com/palnet/biz/api/external/service/DronOneStopServiceTest.java +++ b/pav-server/src/test/java/com/palnet/biz/api/external/service/DronOneStopServiceTest.java @@ -78,6 +78,8 @@ class DronOneStopServiceTest { @Test void updateApprovalResult() { + // TODO 비행목적(DosFltPlanBas.purpose)이 수색구조, 인명구조, 시설점검 등 고도, 반경 상관없이 무조건 승인처리 + List areaList = dosFltPlanAreaRepository.findAll(); List resultList = dosFltPlanResultRepository.findAll();