Browse Source

merge

pull/12/head
지대한 11 months ago
parent
commit
f49d34627c
  1. 1
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancAprvController.java
  2. 1
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancController.java
  3. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancValidatedRs.java
  4. 35
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java
  5. 2
      pav-server/src/main/java/com/palnet/comn/utils/InstantUtils.java

1
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancAprvController.java

@ -135,4 +135,5 @@ public class BasLaancAprvController {
}
return ResponseEntity.ok().body(new SuccessResponse<>(rs));
}
}

1
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancController.java

@ -68,7 +68,6 @@ public class BasLaancController {
.body(new ErrorResponse("Server Error", "-1"));
}
log.warn("new SuccessResponse<>(rs) -? {}", new SuccessResponse<>(rs));
return ResponseEntity.ok().body(new SuccessResponse<>(rs));
}

4
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancValidatedRs.java

@ -37,8 +37,6 @@ public class BasLaancValidatedRs {
private boolean isReport; // 신고 대상 - 상업적이면서 기체중량2kg 이상일경우 - true
private boolean isNotSpecial; // 특별승인 여부 - 특별승인인 경우가 아니면 - true
private String corpRegYn; // 사업자 여부
private List<PilotValidRs> pilotValidRsList; // 자격여부
@ -53,13 +51,11 @@ public class BasLaancValidatedRs {
// && !isArcrftDuplicated // 기체 중복여부
// && !isPlanAreaDuplicatd // 비행구역 중복여부
&& isFlightArea // 비행가능여부
&& isNotSpecial
&& isCheckingLance();
}
return isCheckingLance()
// && !isPlanAreaDuplicatd
// && !isArcrftDuplicated
&& isNotSpecial
&& isFlightArea;
}

35
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java

@ -101,7 +101,7 @@ public class BasLaancService {
// LAANC 검증
public BasLaancValidatedRs validationLaanc(BasLaancPlanRq rq) {
if (!this.laancParamValid(rq)) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
BasLaancValidatedRs rs = new BasLaancValidatedRs();
// 조종사 자격 확인 - 무게가 2kg 초과이거나 상업적일 경우에만 진행
@ -155,7 +155,6 @@ public class BasLaancService {
BasLaancValidatedRs validationPlanDbRs = this.validationPlanAirspace(rq);
rs.setEvaluatedTargetArea(validationPlanDbRs.isEvaluatedTargetArea());
rs.setFlightArea(validationPlanDbRs.isFlightArea());
rs.setNotSpecial(this.laancParamValid(rq));
return rs;
@ -165,6 +164,7 @@ public class BasLaancService {
@Transactional
public BasLaancLastRs createFlightPlan(BasLaancPlanRq rq) {
if (rq == null || rq.getValidatedRs() == null) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
if (!this.laancParamValid(rq)) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
BasLaancValidatedRs basLaancValidatedRs = rq.getValidatedRs();
@ -519,29 +519,28 @@ public class BasLaancService {
* 1. 비행시작 일자 금일 ~ 90일 이내
* 2. 비행 종료일자 금일 ~ 6개월까지 -- validtion 통과후 일몰
* 3. 일몰, 일출 시간[해떠있는 시간] 체크
*
* @param rq
* @return
*/
private boolean laancParamValid(BasLaancPlanRq rq){
private boolean laancParamValid(BasLaancPlanRq rq) {
// 시작날짜보다 종료날짜가 뒤에있으면 Exception발생
if(!(rq.getSchFltEndDt().isAfter(rq.getSchFltStDt()))) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
// TODO :: Instant는 ChronoUnit.MONTHS 지원을 해주지 않아 LocalDateTime으로 계산을 진행했습니다.
LocalDateTime today = Instant.now().atZone(ZoneId.of(InstantUtils.DEFAULT_ZONE)).toLocalDateTime();
if (!(rq.getSchFltEndDt().isAfter(rq.getSchFltStDt())))
throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
LocalDateTime stDt = rq.getSchFltStDt().atZone(ZoneId.of(InstantUtils.DEFAULT_ZONE)).toLocalDateTime();
LocalDateTime endDt = rq.getSchFltEndDt().atZone(ZoneId.of(InstantUtils.DEFAULT_ZONE)).toLocalDateTime();
LocalDateTime today = Instant.now().atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime();
LocalDateTime stDt = rq.getSchFltStDt().atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime();
LocalDateTime endDt = rq.getSchFltEndDt().atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime();
// schFltStDt가 금일부터 90일 이내에 있는지 확인
boolean isSchFltStDtValid = stDt.isAfter(today) &&
stDt.isBefore(today.plus(90, ChronoUnit.DAYS));
boolean isSchFltStDtValid = stDt.isAfter(today) && stDt.isBefore(today.plusDays(90));
// schFltEndDt가 SchFltStDt보다 뒤에 있고, 금일부터 6개월 이내에 있는지 확인
boolean isSchFltEndDtValid = endDt.isBefore(today.plus(6, ChronoUnit.MONTHS));
boolean isSchFltEndDtValid = endDt.isBefore(today.plusMonths(6));
// 시간 파라미터가 맞지 않을경우
if(!(isSchFltStDtValid && isSchFltEndDtValid)) return false;
if (!(isSchFltStDtValid && isSchFltEndDtValid)) return false;
String[] stringStDt = InstantUtils.toDatetimeString(rq.getSchFltStDt()).split(" ");
String[] stringEndDt = InstantUtils.toDatetimeString(rq.getSchFltEndDt()).split(" ");
@ -550,8 +549,8 @@ public class BasLaancService {
ComnSunrisesetRs comnSunrisesetRs = comRiseSetQueryRepository.findBySearchCoordDateTransform(comnSunrisesetCoordRq);
LocalTime sunUp = this.convertStringToTime(comnSunrisesetRs.getSunrise(), "HHmmss");
LocalTime sunDown = this.convertStringToTime(comnSunrisesetRs.getSunset(), "HHmmss");
LocalTime sunUp = this.convertStringToTime(comnSunrisesetRs.getCivilm(), "HHmmss");
LocalTime sunDown = this.convertStringToTime(comnSunrisesetRs.getCivile(), "HHmmss");
LocalTime stringStTm = this.convertStringToTime(stringStDt[1].replace(":", ""), "HHmmss");
LocalTime stringEndTm = this.convertStringToTime(stringEndDt[1].replace(":", ""), "HHmmss");
@ -564,17 +563,19 @@ public class BasLaancService {
/**
* String to LocalTime - Instant는 시간정보만 담을 없음..
*
* @param time
* @param format
* @return
*/
private LocalTime convertStringToTime(String time, String format){
private LocalTime convertStringToTime(String time, String format) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return LocalTime.parse(time, formatter);
}
/**
* 일출, 일몰 시간 아래에 있는지 확인
*
* @param sunrise
* @param sunset
* @param timeToCheck
@ -582,7 +583,7 @@ public class BasLaancService {
*/
private boolean isBetweenSunriseAndSunset(LocalTime sunrise, LocalTime sunset, LocalTime timeToCheck) {
return (timeToCheck.isAfter(sunrise) || timeToCheck.equals(sunrise)) &&
timeToCheck.isBefore(sunset);
timeToCheck.isBefore(sunset);
}
}

2
pav-server/src/main/java/com/palnet/comn/utils/InstantUtils.java

@ -17,7 +17,7 @@ import java.time.format.DateTimeFormatter;
* 2023-09-14(014) dhji 최초 생성
*/
public class InstantUtils {
public static final String DEFAULT_ZONE = "Asia/Seoul";
private static final String DEFAULT_ZONE = "Asia/Seoul";
private static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";

Loading…
Cancel
Save