|
|
@ -109,9 +109,15 @@ public class BasLaancService { |
|
|
|
boolean isArcrftWeight = rq.getArcrftList().stream().anyMatch(arcrft -> arcrft.getArcrftWghtCd() != ArcrftWghtCd.W25KG_GO && arcrft.getArcrftWghtCd() != ArcrftWghtCd.W25KG_GO_TEST); |
|
|
|
boolean isArcrftWeight = rq.getArcrftList().stream().anyMatch(arcrft -> arcrft.getArcrftWghtCd() != ArcrftWghtCd.W25KG_GO && arcrft.getArcrftWghtCd() != ArcrftWghtCd.W25KG_GO_TEST); |
|
|
|
rs.setArcrftWeight(isArcrftWeight); |
|
|
|
rs.setArcrftWeight(isArcrftWeight); |
|
|
|
|
|
|
|
|
|
|
|
// 비행구역 중복여부, 기체 중복여부, 판단구역 - 공역과 겹칠 경우, 비행가능여부
|
|
|
|
// 판단구역 - 공역과 겹칠 경우, 비행가능여부
|
|
|
|
BasLaancValidatedRs validationPlanRs = this.validationPlanAreaAndArcrftAndAirspace(rq); |
|
|
|
BasLaancValidatedRs validationPlanAirspaceRs = this.validationPlanAreaAndArcrft(rq); |
|
|
|
BasLaancMapper.MAPPER.merge(rs, validationPlanRs); |
|
|
|
rs.setEvaluatedTargetArea(validationPlanAirspaceRs.isEvaluatedTargetArea()); |
|
|
|
|
|
|
|
rs.setFlightArea(validationPlanAirspaceRs.isFlightArea()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 비행구역 중복여부, 기체 중복여부
|
|
|
|
|
|
|
|
BasLaancValidatedRs validationPlanDbRs = this.validationPlanAirspace(rq); |
|
|
|
|
|
|
|
rs.setPlanAreaDuplicatd(validationPlanDbRs.isPlanAreaDuplicatd()); |
|
|
|
|
|
|
|
rs.setArcrftDuplicated(validationPlanDbRs.isArcrftDuplicated()); |
|
|
|
|
|
|
|
|
|
|
|
return rs; |
|
|
|
return rs; |
|
|
|
|
|
|
|
|
|
|
@ -122,8 +128,13 @@ public class BasLaancService { |
|
|
|
public BasLaancLastRs createFlightPlan(BasLaancPlanRq rq) { |
|
|
|
public BasLaancLastRs createFlightPlan(BasLaancPlanRq rq) { |
|
|
|
BasLaancValidatedRs basLaancValidatedRs = rq.getValidatedRs(); |
|
|
|
BasLaancValidatedRs basLaancValidatedRs = rq.getValidatedRs(); |
|
|
|
|
|
|
|
|
|
|
|
BasLaancValidatedRs validatedRs = this.validationPlanAreaAndArcrftAndAirspace(rq); |
|
|
|
// BasLaancValidatedRs validatedAirspaceRs = this.validationPlanAirspace(rq);
|
|
|
|
BasLaancMapper.MAPPER.merge(basLaancValidatedRs, validatedRs); |
|
|
|
|
|
|
|
|
|
|
|
BasLaancValidatedRs validatedDbRs = this.validationPlanAreaAndArcrft(rq); |
|
|
|
|
|
|
|
basLaancValidatedRs.setPlanAreaDuplicatd(validatedDbRs.isPlanAreaDuplicatd()); |
|
|
|
|
|
|
|
basLaancValidatedRs.setArcrftDuplicated(validatedDbRs.isArcrftDuplicated()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// BasLaancMapper.MAPPER.merge(basLaancValidatedRs, validatedRs);
|
|
|
|
// LAANC가 검증된것들만 DB저장
|
|
|
|
// LAANC가 검증된것들만 DB저장
|
|
|
|
if (!basLaancValidatedRs.isValid()) throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); |
|
|
|
if (!basLaancValidatedRs.isValid()) throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); |
|
|
|
|
|
|
|
|
|
|
@ -240,14 +251,12 @@ public class BasLaancService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// LAANC 검증
|
|
|
|
// LAANC 검증
|
|
|
|
private BasLaancValidatedRs validationPlanAreaAndArcrftAndAirspace(BasLaancPlanRq rq) { |
|
|
|
private BasLaancValidatedRs validationPlanAreaAndArcrft(BasLaancPlanRq rq) { |
|
|
|
|
|
|
|
|
|
|
|
// 초기화
|
|
|
|
// 초기화
|
|
|
|
BasLaancValidatedRs rs = BasLaancValidatedRs.builder() |
|
|
|
BasLaancValidatedRs rs = BasLaancValidatedRs.builder() |
|
|
|
.isPlanAreaDuplicatd(false) // 비행구역 중복여부
|
|
|
|
.isPlanAreaDuplicatd(false) // 비행구역 중복여부
|
|
|
|
.isArcrftDuplicated(false) // 기체 중복여부
|
|
|
|
.isArcrftDuplicated(false) // 기체 중복여부
|
|
|
|
.isEvaluatedTargetArea(false) // 판단구역 - 공역과 겹칠 경우
|
|
|
|
|
|
|
|
.isFlightArea(false) // 비행가능여부
|
|
|
|
|
|
|
|
.build(); |
|
|
|
.build(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -337,6 +346,59 @@ public class BasLaancService { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // 공역 중복 확인
|
|
|
|
|
|
|
|
// for (BasLaancAreaModel basLaancAreaModel : rq.getAreaList()) {
|
|
|
|
|
|
|
|
// List<Coordinate> rqCoord = new ArrayList<>();
|
|
|
|
|
|
|
|
// List<Coordinate> rqCoordBufferList = new ArrayList<>();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// //rq로 들어온 좌표로 버퍼좌표 생성
|
|
|
|
|
|
|
|
// for (BasLaancAreaCoordModel basLaancAreaCoordModel : basLaancAreaModel.getCoordList()) {
|
|
|
|
|
|
|
|
// Coordinate coords = new Coordinate(basLaancAreaCoordModel.getLon(), basLaancAreaCoordModel.getLat());
|
|
|
|
|
|
|
|
// rqCoord.add(coords);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if ("LINE".equals(basLaancAreaModel.getAreaType())) {
|
|
|
|
|
|
|
|
// List<Coordinate> trans = areaUtils.transform(rqCoord, "EPSG:4326", "EPSG:5181");
|
|
|
|
|
|
|
|
// List<Coordinate> bufferList = areaUtils.buffer(trans, basLaancAreaModel.getBufferZone());
|
|
|
|
|
|
|
|
// rqCoordBufferList = areaUtils.transform(bufferList, "EPSG:5181", "EPSG:4326");
|
|
|
|
|
|
|
|
// } else if ("POLYGON".equals(basLaancAreaModel.getAreaType())) {
|
|
|
|
|
|
|
|
// rqCoordBufferList.addAll(rqCoord);
|
|
|
|
|
|
|
|
// } else if ("CIRCLE".equals(basLaancAreaModel.getAreaType())) {
|
|
|
|
|
|
|
|
// rqCoordBufferList = areaUtils.createCircle(rqCoord.get(0), basLaancAreaModel.getBufferZone());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// AirspaceUtils airspaceUtils = AirspaceUtils.getInstance();
|
|
|
|
|
|
|
|
// Geometry rqGeometry = airspaceUtils.createGeometryByCoordinate(rqCoordBufferList);
|
|
|
|
|
|
|
|
// Integer fltElev = basLaancAreaModel.getFltElev() != null ? Integer.valueOf(basLaancAreaModel.getFltElev()) : 0;
|
|
|
|
|
|
|
|
// AirspaceUtils.FeatureInfo featureInfo = new AirspaceUtils.FeatureInfo(null, null, 0, fltElev, rqGeometry);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 평가 가능 지역 판단
|
|
|
|
|
|
|
|
// boolean duplicatedAirspace = airspaceUtils.isDuplicatedAirspace(featureInfo);
|
|
|
|
|
|
|
|
// rs.setEvaluatedTargetArea(duplicatedAirspace);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 비행 가능 지역 판단
|
|
|
|
|
|
|
|
//// if (duplicatedAirspace) {
|
|
|
|
|
|
|
|
//// boolean validLaancAirspace = airspaceUtils.isValidLaancAirspace(featureInfo);
|
|
|
|
|
|
|
|
//// rs.setFlightAreaYn(validLaancAirspace ? "Y" : "N");
|
|
|
|
|
|
|
|
//// } else {
|
|
|
|
|
|
|
|
//// rs.setFlightAreaYn("N");
|
|
|
|
|
|
|
|
//// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 비행 가능 지역 판단
|
|
|
|
|
|
|
|
// boolean validLaancAirspace = airspaceUtils.isValidLaancAirspace(featureInfo);
|
|
|
|
|
|
|
|
// rs.setFlightArea(validLaancAirspace);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
return rs; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BasLaancValidatedRs validationPlanAirspace(BasLaancPlanRq rq) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 초기화
|
|
|
|
|
|
|
|
BasLaancValidatedRs rs = BasLaancValidatedRs.builder() |
|
|
|
|
|
|
|
.isEvaluatedTargetArea(false) // 판단구역 - 공역과 겹칠 경우
|
|
|
|
|
|
|
|
.isFlightArea(false) // 비행가능여부
|
|
|
|
|
|
|
|
.build(); |
|
|
|
|
|
|
|
|
|
|
|
// 공역 중복 확인
|
|
|
|
// 공역 중복 확인
|
|
|
|
for (BasLaancAreaModel basLaancAreaModel : rq.getAreaList()) { |
|
|
|
for (BasLaancAreaModel basLaancAreaModel : rq.getAreaList()) { |
|
|
|
List<Coordinate> rqCoord = new ArrayList<>(); |
|
|
|
List<Coordinate> rqCoord = new ArrayList<>(); |
|
|
|