|
|
|
@ -23,6 +23,7 @@ import com.palnet.comn.exception.CustomException;
|
|
|
|
|
import com.palnet.comn.utils.AirspaceUtils; |
|
|
|
|
import com.palnet.comn.utils.AreaUtils; |
|
|
|
|
import com.palnet.comn.utils.HttpUtils; |
|
|
|
|
import com.palnet.comn.utils.InstantUtils; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.locationtech.jts.geom.Coordinate; |
|
|
|
@ -113,14 +114,14 @@ public class BasLaancService {
|
|
|
|
|
|
|
|
|
|
// 판단구역 - 공역과 겹칠 경우, 비행가능여부
|
|
|
|
|
BasLaancValidatedRs validationPlanAirspaceRs = this.validationPlanAreaAndArcrft(rq); |
|
|
|
|
rs.setEvaluatedTargetArea(validationPlanAirspaceRs.isEvaluatedTargetArea()); |
|
|
|
|
rs.setFlightArea(validationPlanAirspaceRs.isFlightArea()); |
|
|
|
|
rs.setPlanAreaDuplicatd(validationPlanAirspaceRs.isPlanAreaDuplicatd()); |
|
|
|
|
rs.setArcrftDuplicated(validationPlanAirspaceRs.isArcrftDuplicated()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 비행구역 중복여부, 기체 중복여부
|
|
|
|
|
BasLaancValidatedRs validationPlanDbRs = this.validationPlanAirspace(rq); |
|
|
|
|
rs.setPlanAreaDuplicatd(validationPlanDbRs.isPlanAreaDuplicatd()); |
|
|
|
|
rs.setArcrftDuplicated(validationPlanDbRs.isArcrftDuplicated()); |
|
|
|
|
|
|
|
|
|
rs.setEvaluatedTargetArea(validationPlanDbRs.isEvaluatedTargetArea()); |
|
|
|
|
rs.setFlightArea(validationPlanDbRs.isFlightArea()); |
|
|
|
|
return rs; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -138,7 +139,7 @@ public class BasLaancService {
|
|
|
|
|
|
|
|
|
|
// BasLaancMapper.MAPPER.merge(basLaancValidatedRs, validatedRs);
|
|
|
|
|
// LAANC가 검증된것들만 DB저장
|
|
|
|
|
if (!basLaancValidatedRs.isValid()) throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); |
|
|
|
|
if (!basLaancValidatedRs.isValid()) throw new CustomException(ErrorCode.PLAN_LAANC_NOT_VALID); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 비행계획서
|
|
|
|
@ -175,11 +176,27 @@ public class BasLaancService {
|
|
|
|
|
List<BasLaancAreaModel> basLaancAreaModelList = rq.getAreaList(); |
|
|
|
|
if (basLaancAreaModelList != null && !basLaancAreaModelList.isEmpty()) { |
|
|
|
|
for (BasLaancAreaModel laancAreaModel : basLaancAreaModelList) { |
|
|
|
|
|
|
|
|
|
// 주소 가져오기
|
|
|
|
|
try { |
|
|
|
|
double firstLat = laancAreaModel.getCoordList().get(0).getLat(); |
|
|
|
|
double firstLon = laancAreaModel.getCoordList().get(0).getLon(); |
|
|
|
|
CtrTrnsLctnModel ctrTrnsLctnModel = ctrTrnsLctnService.convertLatlonToAddress(firstLat, firstLon); |
|
|
|
|
String address = ctrTrnsLctnModel.getArea1() + " " + |
|
|
|
|
ctrTrnsLctnModel.getArea2() + " " + |
|
|
|
|
ctrTrnsLctnModel.getLandNm() + " " + |
|
|
|
|
ctrTrnsLctnModel.getLandNum(); |
|
|
|
|
laancAreaModel.setFltAreaAddr(address); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("get first coords to address fail. : ", e); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
FltPlanArea areaEntity = BasLaancMapper.MAPPER.modelToPlanEntity(laancAreaModel); |
|
|
|
|
areaEntity.setPlanSno(planSno); |
|
|
|
|
areaEntity.setCreateUserId(userId); |
|
|
|
|
areaEntity.setUpdateUserId(userId); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FltPlanArea rAreaEntity = fltPlanAreaRepository.save(areaEntity); |
|
|
|
|
Integer planAreaSno = rAreaEntity.getPlanAreaSno(); |
|
|
|
|
List<BasLaancAreaCoordModel> laancAreaModelCoordList = laancAreaModel.getCoordList(); |
|
|
|
@ -238,30 +255,36 @@ public class BasLaancService {
|
|
|
|
|
} else { |
|
|
|
|
throw new CustomException(ErrorCode.FAIL, "약관등록 실패"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String address = ""; |
|
|
|
|
// PDF 생성 후 URL 가져오기
|
|
|
|
|
LaancPdfModel laancPdfModel = new LaancPdfModel(); |
|
|
|
|
laancPdfModel.setUserName(fltPlanBas.getMemberName()); |
|
|
|
|
laancPdfModel.setPilotName(cstmrInfo.getMemberName()); |
|
|
|
|
|
|
|
|
|
if (rq.getAreaList() != null && !rq.getAreaList().isEmpty()) { |
|
|
|
|
address = rq.getAreaList().get(0).getFltAreaAddr(); |
|
|
|
|
laancPdfModel.setAddress(address); |
|
|
|
|
laancPdfModel.setElev(rq.getAreaList().get(0).getFltElev()); |
|
|
|
|
} |
|
|
|
|
if (rq.getArcrftList() != null && !rq.getArcrftList().isEmpty()) { |
|
|
|
|
laancPdfModel.setArcrftType(rq.getArcrftList().get(0).getArcrftTypeCd().getValue()); |
|
|
|
|
laancPdfModel.setIdntfNum(rq.getArcrftList().get(0).getIdntfNum()); |
|
|
|
|
} |
|
|
|
|
laancPdfModel.setBirthDate(InstantUtils.toDateString(cstmrInfo.getBrthdyDate())); |
|
|
|
|
// laancPdfModel.setSchFltStDt(InstantUtils.toDatetimeString(rq.getSchFltStDt()));
|
|
|
|
|
// laancPdfModel.setSchFltEndDt(InstantUtils.toDatetimeString(rq.getSchFltEndDt()));
|
|
|
|
|
// laancPdfModel.setCreateDt(InstantUtils.toDatetimeString(Instant.now()));
|
|
|
|
|
laancPdfModel.setSchFltStDt(InstantUtils.toDatetimeStringByFormat(rq.getSchFltStDt(), "yyyy.MM.dd HH:mm")); |
|
|
|
|
laancPdfModel.setSchFltEndDt(InstantUtils.toDatetimeStringByFormat(rq.getSchFltEndDt(), "yyyy.MM.dd HH:mm")); |
|
|
|
|
laancPdfModel.setCreateDt(InstantUtils.toDatetimeStringByFormat(Instant.now(), "yyyy.MM.dd HH:mm")); |
|
|
|
|
laancPdfModel.setFltPurpose(rq.getFltPurpose().getValue()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ComFileBas comFileBas = comnFileService.makePdf(laancPdfModel); |
|
|
|
|
|
|
|
|
|
String sb = FILE_DOWNLOAD_URL + "?fileSno=" + comFileBas.getFileSno(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 주소 가져오기
|
|
|
|
|
String address = ""; |
|
|
|
|
try { |
|
|
|
|
double firstLat = rq.getAreaList().get(0).getCoordList().get(0).getLat(); |
|
|
|
|
double firstLon = rq.getAreaList().get(0).getCoordList().get(0).getLon(); |
|
|
|
|
CtrTrnsLctnModel ctrTrnsLctnModel = ctrTrnsLctnService.convertLatlonToAddress(firstLat, firstLon); |
|
|
|
|
address = ctrTrnsLctnModel.getArea1() + " " + |
|
|
|
|
ctrTrnsLctnModel.getArea2() + " " + |
|
|
|
|
ctrTrnsLctnModel.getLandNm() + " " + |
|
|
|
|
ctrTrnsLctnModel.getLandNum(); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("get first coords to address fail. : ", e); |
|
|
|
|
address = ""; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BasLaancLastRs rs = BasLaancLastRs.builder() |
|
|
|
|
.pdfUrl(sb) |
|
|
|
|
.pdfUrl(address) |
|
|
|
|