Browse Source

feat: 드론원스톱 검증시 조건부승인 추가

feature/address-coordinate
지대한 3 months ago
parent
commit
938a683eca
  1. 1
      pav-server/src/main/java/com/palnet/biz/api/external/model/ApprovalCd.java
  2. 10
      pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java
  3. 13
      pav-server/src/main/resources/application-database.yml
  4. 25
      pav-server/src/test/java/com/palnet/biz/api/external/service/DronOneStopServiceTest.java

1
pav-server/src/main/java/com/palnet/biz/api/external/model/ApprovalCd.java vendored

@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
public enum ApprovalCd {
APPROVAL("S", "관제권내 허용고도"), // 승인
UNAPPROVED("F", "관제권내 제한고도"), // 미승인
CONDITIONAL_APPROVED("C", "관제권내 조건부 승인"), // 조건부 승인
UNTARGETED_AREA("U", "미대상 지역"); // 미대상
private final String code;

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

@ -138,8 +138,12 @@ public class DronOneStopService {
String approvalCdStr = (String) saveZone.get("approvalCd");
ApprovalCd approvalCd = ApprovalCd.fromCode(approvalCdStr);
// 조건부 승인인 경우 미승인으로 변경 - 아직 드론원스톱에서 작업을 안함으로 인한 작업
if (approvalCd == null) {
approvalCd = ApprovalCd.UNTARGETED_AREA;
} else if (approvalCd == ApprovalCd.CONDITIONAL_APPROVED) {
approvalCd = ApprovalCd.UNAPPROVED;
}
log.info("approvalCd : {}/{}", approvalCdStr, approvalCd);
@ -173,6 +177,7 @@ public class DronOneStopService {
/*
- 김포공항 관제지역 - U: 허용 관제권이 아닌 지역
- 김포공항 관제지역 승인 - S: 관제권내 허용고도
- 김포공항 관제지역 조건부승인 - C: 관제권내 제한고도
- 김포공항 관제지역 미승인 - F: 관제권내 제한고도
*/
// 김포지역의 고도 데이터가 있는 경우만 검증
@ -205,9 +210,10 @@ public class DronOneStopService {
// 가장 낮음 허용고도보다 신청 고도가 낮을 경우 승인 처리
result.setFltElevMax(minHighElev);
if(targetHighElev > minHighElev) {
if(minHighElev <= 0){
result.setApprovalCd(ApprovalCd.UNAPPROVED);
} else if(targetHighElev > minHighElev) {
result.setApprovalCd(ApprovalCd.CONDITIONAL_APPROVED);
} else {
result.setApprovalCd(ApprovalCd.APPROVAL);
}

13
pav-server/src/main/resources/application-database.yml

@ -14,8 +14,10 @@ spring:
idletimeout: 60000
maxlifetime: 300000
connectiontimeout: 30000
validationtimeout: 5000
---
validationtimeout: 5000
---
spring:
config:
activate:
@ -32,8 +34,10 @@ spring:
idletimeout: 60000
maxlifetime: 300000
connectiontimeout: 30000
validationtimeout: 5000
validationtimeout: 5000
---
spring:
config:
activate:
@ -52,7 +56,8 @@ spring:
connectiontimeout: 30000
validationtimeout: 5000
---
---
spring:
config:
activate:

25
pav-server/src/test/java/com/palnet/biz/api/external/service/DronOneStopServiceTest.java vendored

@ -33,7 +33,7 @@ class DronOneStopServiceTest {
void saveDosPlan() {
List<DosFltPlanArea> areaList = dosFltPlanAreaRepository.findAll();
List<DosFltPlanResult> resultList = dosFltPlanResultRepository.findAll();
for(DosFltPlanArea area : areaList) {
for (DosFltPlanArea area : areaList) {
// Circle만 체크
Double bufferZone = area.getBufferZone();
@ -47,10 +47,10 @@ class DronOneStopServiceTest {
List<DosFltPlanResult> rList = resultList.stream().filter(result -> result.getPlanSno().equals(area.getPlanSno()) && result.getPlanAreaSno().equals(area.getPlanAreaSno())).collect(Collectors.toList());
log.info("rList size: {}", rList.size());
if(!rList.isEmpty()){
if (!rList.isEmpty()) {
rList.forEach(r -> {
if(r.getApprovalCd().equals(approvalResult.getApprovalCd().getCode())) {
if (r.getApprovalCd().equals(approvalResult.getApprovalCd().getCode())) {
log.info("approvalCd is same");
} else {
log.info("approvalCd is different{} -> {}", r.getApprovalCd(), approvalResult.getApprovalCd().getCode());
@ -77,11 +77,11 @@ class DronOneStopServiceTest {
}
@Test
void updateFltElevMax() {
void updateFltElevMaxAndApprovalCd() {
List<DosFltPlanArea> areaList = dosFltPlanAreaRepository.findAll();
List<DosFltPlanResult> resultList = dosFltPlanResultRepository.findAll();
for(DosFltPlanArea area : areaList) {
for (DosFltPlanArea area : areaList) {
// Circle만 체크
Double bufferZone = area.getBufferZone();
Double fltElev = area.getFltElev() != null ? area.getFltElev() : 0;
@ -94,16 +94,13 @@ class DronOneStopServiceTest {
List<DosFltPlanResult> rList = resultList.stream().filter(result -> result.getPlanSno().equals(area.getPlanSno()) && result.getPlanAreaSno().equals(area.getPlanAreaSno())).collect(Collectors.toList());
log.info("rList size: {}", rList.size());
if(!rList.isEmpty()){
if (!rList.isEmpty()) {
rList.forEach(r -> {
if(r.getFltElevMax() == null){
log.info("fltElevMax is null");
r.setFltElevMax(approvalResult.getFltElevMax());
r.setUpdateDt(Instant.now());
DosFltPlanResult save = dosFltPlanResultRepository.save(r);
log.info("update: {}", save);
}
r.setApprovalCd(approvalResult.getApprovalCd().getCode());
r.setFltElevMax(approvalResult.getFltElevMax());
r.setUpdateDt(Instant.now());
DosFltPlanResult save = dosFltPlanResultRepository.save(r);
log.info("update: {}", save);
});
} else {
log.info("result is empty");

Loading…
Cancel
Save