|
|
@ -39,7 +39,6 @@ import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
import org.springframework.web.util.UriComponents; |
|
|
|
|
|
|
|
import org.springframework.web.util.UriComponentsBuilder; |
|
|
|
import org.springframework.web.util.UriComponentsBuilder; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
import java.io.IOException; |
|
|
@ -170,7 +169,7 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 비행계획서 등록, 약관 등록, 공문 생성 |
|
|
|
* 비행계획서 등록, 약관 등록, 공문 생성 |
|
|
|
* |
|
|
|
* |
|
|
|
* @param rq |
|
|
|
* @param rq |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -197,7 +196,7 @@ public class BasLaancService { |
|
|
|
// 비행계획서
|
|
|
|
// 비행계획서
|
|
|
|
String userId = jwtTokenUtil.getUserIdByToken(); |
|
|
|
String userId = jwtTokenUtil.getUserIdByToken(); |
|
|
|
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); |
|
|
|
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); |
|
|
|
|
|
|
|
|
|
|
|
// 개인정보 가져오기 - 비행계획서 작성자 정보, 조종사 정보
|
|
|
|
// 개인정보 가져오기 - 비행계획서 작성자 정보, 조종사 정보
|
|
|
|
AnctCstmrModel cstmrInfo = ptyCstmrQueryRepository.findByCstmrSno(cstmrSno); |
|
|
|
AnctCstmrModel cstmrInfo = ptyCstmrQueryRepository.findByCstmrSno(cstmrSno); |
|
|
|
FltPlanBas fltPlanBas = BasLaancMapper.MAPPER.modelToPlanEntity(cstmrInfo); |
|
|
|
FltPlanBas fltPlanBas = BasLaancMapper.MAPPER.modelToPlanEntity(cstmrInfo); |
|
|
@ -230,7 +229,7 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
FltPlanBas rBasEntity = fltPlanBasRepository.save(fltPlanBas); |
|
|
|
FltPlanBas rBasEntity = fltPlanBasRepository.save(fltPlanBas); |
|
|
|
Integer planSno = rBasEntity.getPlanSno(); |
|
|
|
Integer planSno = rBasEntity.getPlanSno(); |
|
|
|
|
|
|
|
|
|
|
|
// 비행구역
|
|
|
|
// 비행구역
|
|
|
|
List<BasLaancAreaModel> basLaancAreaModelList = rq.getAreaList(); |
|
|
|
List<BasLaancAreaModel> basLaancAreaModelList = rq.getAreaList(); |
|
|
|
if (basLaancAreaModelList != null && !basLaancAreaModelList.isEmpty()) { |
|
|
|
if (basLaancAreaModelList != null && !basLaancAreaModelList.isEmpty()) { |
|
|
@ -391,7 +390,7 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 비행신청 - 공역관련 검증 |
|
|
|
* 비행신청 - 공역관련 검증 |
|
|
|
* |
|
|
|
* |
|
|
|
* @param rq |
|
|
|
* @param rq |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -426,7 +425,11 @@ public class BasLaancService { |
|
|
|
AirspaceUtils airspaceUtils = AirspaceUtils.getInstance(); |
|
|
|
AirspaceUtils airspaceUtils = AirspaceUtils.getInstance(); |
|
|
|
Geometry rqGeometry = airspaceUtils.createGeometryByCoordinate(rqCoordBufferList); |
|
|
|
Geometry rqGeometry = airspaceUtils.createGeometryByCoordinate(rqCoordBufferList); |
|
|
|
Double fltElev = basLaancAreaModel.getFltElev() != null ? basLaancAreaModel.getFltElev() : 0D; |
|
|
|
Double fltElev = basLaancAreaModel.getFltElev() != null ? basLaancAreaModel.getFltElev() : 0D; |
|
|
|
AirspaceUtils.FeatureInfo featureInfo = new AirspaceUtils.FeatureInfo(null, null, 0D, fltElev, rqGeometry); |
|
|
|
AirspaceUtils.FeatureInfo featureInfo = AirspaceUtils.FeatureInfo.builder() |
|
|
|
|
|
|
|
.lowElev(0D) |
|
|
|
|
|
|
|
.highElev(fltElev) |
|
|
|
|
|
|
|
.geometry(rqGeometry) |
|
|
|
|
|
|
|
.build(); |
|
|
|
|
|
|
|
|
|
|
|
// 평가 가능 지역 판단
|
|
|
|
// 평가 가능 지역 판단
|
|
|
|
boolean duplicatedAirspace = airspaceUtils.isDuplicatedAirspace(featureInfo); |
|
|
|
boolean duplicatedAirspace = airspaceUtils.isDuplicatedAirspace(featureInfo); |
|
|
@ -472,6 +475,7 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 비행계획서 검증 - 특별 비행 |
|
|
|
* 비행계획서 검증 - 특별 비행 |
|
|
|
|
|
|
|
* |
|
|
|
* @param rq |
|
|
|
* @param rq |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -621,7 +625,12 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
Geometry targetGeometry = airspaceUtils.createGeometryByCoordinate(targetCoordBufferList); |
|
|
|
Geometry targetGeometry = airspaceUtils.createGeometryByCoordinate(targetCoordBufferList); |
|
|
|
Double fltElev = area.getFltElev() != null ? Double.parseDouble(area.getFltElev()) : 0; |
|
|
|
Double fltElev = area.getFltElev() != null ? Double.parseDouble(area.getFltElev()) : 0; |
|
|
|
AirspaceUtils.FeatureInfo targetFeatureInfo = new AirspaceUtils.FeatureInfo(null, null, 0D, fltElev, targetGeometry); |
|
|
|
// AirspaceUtils.FeatureInfo targetFeatureInfo = new AirspaceUtils.FeatureInfo(null, null, 0D, fltElev, targetGeometry);
|
|
|
|
|
|
|
|
AirspaceUtils.FeatureInfo targetFeatureInfo = AirspaceUtils.FeatureInfo.builder() |
|
|
|
|
|
|
|
.lowElev(0D) |
|
|
|
|
|
|
|
.highElev(fltElev) |
|
|
|
|
|
|
|
.geometry(targetGeometry) |
|
|
|
|
|
|
|
.build(); |
|
|
|
boolean duplicatedAirspace = airspaceUtils.isDuplicatedAirspace(targetFeatureInfo); |
|
|
|
boolean duplicatedAirspace = airspaceUtils.isDuplicatedAirspace(targetFeatureInfo); |
|
|
|
BasLaancDuplicatedAirspaceRs duplicatedAirspaceRs = BasLaancDuplicatedAirspaceRs.builder() |
|
|
|
BasLaancDuplicatedAirspaceRs duplicatedAirspaceRs = BasLaancDuplicatedAirspaceRs.builder() |
|
|
|
.isDuplicated(duplicatedAirspace) |
|
|
|
.isDuplicated(duplicatedAirspace) |
|
|
@ -715,7 +724,7 @@ public class BasLaancService { |
|
|
|
* QR code 확인 |
|
|
|
* QR code 확인 |
|
|
|
* QR code 촬영후 return url로 데이터 받은 이후 확인 프로세스 |
|
|
|
* QR code 촬영후 return url로 데이터 받은 이후 확인 프로세스 |
|
|
|
* QR code 생성(PAV-KAC) > qr code 스캔(사용자) > 자격정보 전송(TS) > return url 자격정보 받음(PAV-KAC) > 확인(자격정보 확인)* |
|
|
|
* QR code 생성(PAV-KAC) > qr code 스캔(사용자) > 자격정보 전송(TS) > return url 자격정보 받음(PAV-KAC) > 확인(자격정보 확인)* |
|
|
|
* |
|
|
|
* |
|
|
|
* @param confirmKey |
|
|
|
* @param confirmKey |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -723,8 +732,8 @@ public class BasLaancService { |
|
|
|
log.info(">>> confirmKey : {}", confirmKey); |
|
|
|
log.info(">>> confirmKey : {}", confirmKey); |
|
|
|
String userIdByToken = jwtTokenUtil.getUserIdByToken(); |
|
|
|
String userIdByToken = jwtTokenUtil.getUserIdByToken(); |
|
|
|
ComConfirmBas entity = comConfirmBasRepository.findFirstByConfirmKeyOrderByCreateDtDesc(confirmKey); |
|
|
|
ComConfirmBas entity = comConfirmBasRepository.findFirstByConfirmKeyOrderByCreateDtDesc(confirmKey); |
|
|
|
if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND, "QR코드 조회 실패"); |
|
|
|
if (entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND, "QR코드 조회 실패"); |
|
|
|
if (!"RECEIVED".equals(entity.getStatus())){ |
|
|
|
if (!"RECEIVED".equals(entity.getStatus())) { |
|
|
|
Map<String, String> errorParam = new HashMap<>(); |
|
|
|
Map<String, String> errorParam = new HashMap<>(); |
|
|
|
errorParam.put("status", entity.getStatus()); |
|
|
|
errorParam.put("status", entity.getStatus()); |
|
|
|
throw new CustomException(ErrorCode.DATA_NOTFIND, errorParam); |
|
|
|
throw new CustomException(ErrorCode.DATA_NOTFIND, errorParam); |
|
|
@ -743,7 +752,7 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
PilotValidRs rs = null; |
|
|
|
PilotValidRs rs = null; |
|
|
|
String rsData = entity.getRsData(); |
|
|
|
String rsData = entity.getRsData(); |
|
|
|
if(rsData != null && !rsData.isEmpty()){ |
|
|
|
if (rsData != null && !rsData.isEmpty()) { |
|
|
|
rs = JsonUtils.fromJson(rsData, PilotValidRs.class); |
|
|
|
rs = JsonUtils.fromJson(rsData, PilotValidRs.class); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -753,9 +762,9 @@ public class BasLaancService { |
|
|
|
/** |
|
|
|
/** |
|
|
|
* TS 비행계획서 |
|
|
|
* TS 비행계획서 |
|
|
|
* 드론원스탑에서 받은 데이터 받기 |
|
|
|
* 드론원스탑에서 받은 데이터 받기 |
|
|
|
* |
|
|
|
* |
|
|
|
* @param tsPlanRq |
|
|
|
* @param tsPlanRq |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public void createPlanDos(TsPlanRq tsPlanRq) { |
|
|
|
public void createPlanDos(TsPlanRq tsPlanRq) { |
|
|
|
// convert
|
|
|
|
// convert
|
|
|
|
BasLaancPlanRq rq = tsPlanRq.toBasLaancPlanRq(); |
|
|
|
BasLaancPlanRq rq = tsPlanRq.toBasLaancPlanRq(); |
|
|
|