Browse Source

비행계획서 등록 반환 객체 변경

pull/6/head
지대한 1 year ago
parent
commit
339cadfe65
  1. 5
      pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtRqModel.java
  2. 39
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  3. 1
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordModel.java
  4. 5
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordQueryList.java
  5. 2
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordRq.java
  6. 37
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanLaancRs.java
  7. 1
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightScheduleRs.java
  8. 74
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java
  9. 2
      pav-socket/build.gradle
  10. 2
      pav-websocket/build.gradle
  11. 2
      settings.gradle

5
pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtRqModel.java

@ -1,11 +1,10 @@
package com.palnet.biz.api.acnt.jwt.model;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
@NoArgsConstructor

39
pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java

@ -6,38 +6,24 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.palnet.biz.api.bas.flight.model.*;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.proj4j.CRSFactory;
import org.locationtech.proj4j.CoordinateReferenceSystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import com.palnet.biz.api.bas.flight.model.BasFlightAprovRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel;
import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs;
import com.palnet.biz.api.bas.flight.model.BasFlightWeatherModel;
import com.palnet.biz.api.bas.flight.service.BasFlightService;
import com.palnet.biz.api.comn.model.ComnPagingRs;
import com.palnet.biz.api.comn.response.BasicResponse;
@ -136,14 +122,14 @@ public class BasFlightController {
@ApiOperation(value = "비행계획서 등록")
@Tag(name = "비행계획서", description = "비행계획서 관련 API")
public ResponseEntity<? extends BasicResponse> createPlan(@RequestBody BasFlightPlanModel rq) {
Map<String, Object> resultMap = new HashMap<String, Object>();
BasFlightPlanLaancRs rs = null;
try {
log.error(">>> rq : {}", rq);
boolean result = basFlightService.createPlan(rq);
resultMap.put("result", result);
log.info(">>> resultMap : " , resultMap);
log.debug(">>> rq : {}", rq);
rs = basFlightService.createPlan(rq);
log.debug(">>> rs : {}", rs);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<String, Object>();
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
@ -155,7 +141,7 @@ public class BasFlightController {
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
return ResponseEntity.ok().body(new SuccessResponse<>(rs));
}
// 비행계획서 수정
@ -163,12 +149,12 @@ public class BasFlightController {
@ApiOperation(value = "비행계획서 수정")
@Tag(name = "비행계획서", description = "비행계획서 관련 API")
public ResponseEntity<? extends BasicResponse> updatePlan(@RequestBody BasFlightPlanModel rq) {
Map<String, Object> resultMap = new HashMap<String, Object>();
BasFlightPlanLaancRs rs = null;
try {
boolean result = basFlightService.updatePlan(rq);
resultMap.put("result", result);
rs = basFlightService.updatePlan(rq);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<String, Object>();
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
@ -180,7 +166,7 @@ public class BasFlightController {
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
return ResponseEntity.ok().body(new SuccessResponse<>(rs));
}
// 비행계획서 삭제
@ -227,6 +213,7 @@ public class BasFlightController {
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
// 그룹 기체 조회
@GetMapping(value = "/plan/arcrft/{groupId}")
@ApiOperation(value = "그룹의 기체 조회")
@ -280,6 +267,7 @@ public class BasFlightController {
return ResponseEntity.ok().body(new SuccessResponse<>(jsonObject));
}
// 비행계획서 리스트(승인)
@GetMapping(value = "/aprv/list")
@ApiOperation(value = "비행계획서 리스트(승인)")
@ -296,6 +284,7 @@ public class BasFlightController {
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
// 비행계획서 승인/미승인
@PutMapping(value = "/aprv/proc")
@ApiOperation(value = "비행 계획서 승인/미승인")

1
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordModel.java

@ -3,7 +3,6 @@ package com.palnet.biz.api.bas.flight.model;
import lombok.Data;
import java.time.Instant;
import java.util.Date;
@Data
public class BasFlightPlanAreaCoordModel {

5
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordQueryList.java

@ -1,10 +1,9 @@
package com.palnet.biz.api.bas.flight.model;
import java.util.List;
import lombok.Data;
import org.locationtech.jts.geom.Coordinate;
import lombok.Data;
import java.util.List;
@Data
public class BasFlightPlanAreaCoordQueryList {

2
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordRq.java

@ -1,7 +1,5 @@
package com.palnet.biz.api.bas.flight.model;
import java.util.Date;
import lombok.Data;
@Data

37
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanLaancRs.java

@ -0,0 +1,37 @@
package com.palnet.biz.api.bas.flight.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* packageName : com.palnet.biz.api.bas.flight.model
* fileName : BasFlightPlanErrorRS
* author : dhji
* date : 2023-09-19(019)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-09-19(019) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BasFlightPlanLaancRs {
private String pilotQlfcYn; // 자격여부
private String acrftInsuranceYn; // 항공기보험여부
private String acrftDuplicatedYn; // 기체 중복여부
private String planAreaDuplicatdYn; // 비행계획서비행구역 중복여부
private String airspaceDuplicatedYn; // 공역 중복여부
public boolean isValid() {
return "Y".equals(pilotQlfcYn)
&& "Y".equals(acrftInsuranceYn)
&& "N".equals(acrftDuplicatedYn)
&& "N".equals(planAreaDuplicatdYn)
&& "N".equals(airspaceDuplicatedYn);
}
}

1
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightScheduleRs.java

@ -3,7 +3,6 @@ package com.palnet.biz.api.bas.flight.model;
import lombok.Data;
import java.time.Instant;
import java.util.Date;
@Data
public class BasFlightScheduleRs {

74
pav-server/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java

@ -13,6 +13,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.palnet.biz.api.bas.flight.model.*;
import org.apache.commons.lang3.StringUtils;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
@ -27,16 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.flight.model.BasFlightAprovRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel;
import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs;
import com.palnet.biz.api.bas.flight.model.BasFlightWeatherModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.comn.model.ComnPagingRs;
import com.palnet.biz.jpa.entity.FltPlanArcrft;
@ -181,7 +172,14 @@ public class BasFlightService {
return rs;
}
public void planValid(BasFlightPlanModel rq) {
public BasFlightPlanLaancRs planValid(BasFlightPlanModel rq) {
BasFlightPlanLaancRs rs = BasFlightPlanLaancRs.builder()
.pilotQlfcYn("N")
.acrftInsuranceYn("N")
.airspaceDuplicatedYn("N")
.acrftDuplicatedYn("N")
.planAreaDuplicatdYn("N")
.build();
boolean isEqualsFltElev = false;
List<BasFlightPlanAreaModel> rqAreaList = rq.getAreaList();
String rqFltElev = rqAreaList.get(0).getFltElev();
@ -197,10 +195,12 @@ public class BasFlightService {
}
List<BasFlightPlanAreaCoordRq> effectivePlanCount = fltPlanQueryRepository.CoordCount(rq);
for (BasFlightPlanModel i : effectivePlanList) {
if (rq.getPlanSno().equals(i.getPlanSno())) return;
// TODO 의미?
if (rq.getPlanSno().equals(i.getPlanSno())) return rs;
}
if (effectivePlanList != null && !effectivePlanList.isEmpty()) {
for (BasFlightPlanModel plan : effectivePlanList) {
plan: for (BasFlightPlanModel plan : effectivePlanList) {
// 1. 구역 조회
List<FltPlanArea> areaList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(plan.getPlanSno());
@ -251,23 +251,29 @@ public class BasFlightService {
} else if ("CIRCLE".equals(rqArea.getAreaType())) {
rqCoordBufferList = areaUtils.createCircle(rqCoord.get(0), rqArea.getBufferZone());
}
//검증
//검증 - 비행계획서 비행구역 중복확인
overlapCheck = areaUtils.overlaps(rqCoordBufferList, effectiveCoordBufferList);
overlapCheck2 = areaUtils.overlaps(effectiveCoordBufferList, rqCoordBufferList);
if ((overlapCheck || overlapCheck2) && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
// throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
rs.setPlanAreaDuplicatdYn("Y");
break plan;
}
for (Coordinate coord : effectiveCoordBufferList) {
containCheck = areaUtils.contains(rqCoordBufferList, coord);
if (containCheck && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
// throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
rs.setPlanAreaDuplicatdYn("Y");
break plan;
}
}
for (Coordinate coord : rqCoordBufferList) {
containCheck2 = areaUtils.contains(effectiveCoordBufferList, coord);
if (containCheck2 && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
// throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
rs.setPlanAreaDuplicatdYn("Y");
break plan;
}
}
}
@ -275,24 +281,34 @@ public class BasFlightService {
}
// 3. 중복 기체 확인
for (BasFlightPlanAreaCoordRq idntfNum : effectivePlanCount) {
acrft: for (BasFlightPlanAreaCoordRq idntfNum : effectivePlanCount) {
for (BasFlightPlanArcrftModel rqArcrft : rq.getArcrftList()) {
if (rqArcrft.getIdntfNum().equals(idntfNum.getIdntfNum())) {
throw new CustomException(ErrorCode.ARCRFT_DATA_DUPLICATE);
// throw new CustomException(ErrorCode.ARCRFT_DATA_DUPLICATE);
rs.setAcrftDuplicatedYn("Y");
break acrft;
}
}
}
}
}
return rs;
}
// 비행계획서 등록
@Transactional
public boolean createPlan(BasFlightPlanModel rq) {
public BasFlightPlanLaancRs createPlan(BasFlightPlanModel rq) {
// 비행계획서 유효성 검사.
this.planValid(rq);
BasFlightPlanLaancRs rs = this.planValid(rq);
// TODO 공역 중복 확인
rs.setAirspaceDuplicatedYn("N");
// TODO 조종사 자격 및 기체보험 확인
rs.setPilotQlfcYn("Y");
rs.setAcrftInsuranceYn("Y");
if(!rs.isValid()) return rs;
// 비행계획서
String userId = jwtTokenUtil.getUserIdByToken();
@ -349,15 +365,23 @@ public class BasFlightService {
fltPlanArcrftRepository.save(arcrftEntity);
}
}
return true;
return rs;
}
// 비행계획서 수정
@Transactional
public boolean updatePlan(BasFlightPlanModel rq) {
public BasFlightPlanLaancRs updatePlan(BasFlightPlanModel rq) {
// 비행계획서 유효성 검사.
this.planValid(rq);
// 비행계획서 유효성 검사.
BasFlightPlanLaancRs rs = this.planValid(rq);
// TODO 공역 중복 확인
rs.setAirspaceDuplicatedYn("N");
// TODO 조종사 자격 및 기체보험 확인
rs.setPilotQlfcYn("Y");
rs.setAcrftInsuranceYn("Y");
if(!rs.isValid()) return rs;
if (rq != null && rq.getPlanSno() != null) {
String userId = jwtTokenUtil.getUserIdByToken();
@ -475,7 +499,7 @@ public class BasFlightService {
fltPlanArcrftRepository.deleteAll(deleteArcrftEntity);
}
}
return true;
return rs;
}
// 비행계획서 삭제

2
pav-socket/build.gradle

@ -20,7 +20,7 @@ jar {
}
dependencies {
implementation project(':pav-common')
// implementation project(':pav-common')
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

2
pav-websocket/build.gradle

@ -20,7 +20,7 @@ jar {
}
dependencies {
implementation project(':pav-common')
// implementation project(':pav-common')
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'io.netty:netty-all:4.1.63.Final'

2
settings.gradle

@ -1,6 +1,6 @@
rootProject.name = 'pav-be-kac'
include 'pav-common'
//include 'pav-common'
include 'pav-socket'
include 'pav-websocket'
include 'pav-server'

Loading…
Cancel
Save