Browse Source

feat: 드론원스톱 외부 연동 api 등록(laanc 미적용)

feature/address-coordinate
지대한 5 months ago
parent
commit
62d4c381e8
  1. 5
      pav-server/src/main/java/com/palnet/biz/api/external/controller/ExternalDronOneStopController.java
  2. 85
      pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java
  3. 39
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java
  4. 38
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanAreaCoord.java
  5. 46
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java
  6. 35
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanResult.java
  7. 9
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanAreaCoordRepository.java
  8. 9
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanAreaRepository.java
  9. 9
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanBasRepository.java
  10. 9
      pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanResultRepository.java

5
pav-server/src/main/java/com/palnet/biz/api/external/controller/ExternalDronOneStopController.java vendored

@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.palnet.biz.api.external.model.DosPlanRq;
import com.palnet.biz.api.external.model.TsPlanRq;
import com.palnet.biz.api.external.service.DronOneStopService;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.JsonUtils;
@ -25,7 +26,7 @@ import java.util.Map;
@RestController
public class ExternalDronOneStopController {
private final ObjectMapper objectMapper;
private final DronOneStopService dronOneStopService;
@Operation(summary = "TS로 부터 비행 신청 정보", description = "TS로 부터 비행 신청 정보")
@PostMapping({"/api/external/dos/plan/laanc", "/api/laanc/flight/plan"})
@ -45,7 +46,7 @@ public class ExternalDronOneStopController {
}
try {
// basLaancService.createPlanDos(tsPlanRq);
dronOneStopService.saveDosPlan(paln);
} catch (CustomException e) {
log.error("IGNORE: ", e);

85
pav-server/src/main/java/com/palnet/biz/api/external/service/DronOneStopService.java vendored

@ -0,0 +1,85 @@
package com.palnet.biz.api.external.service;
import com.palnet.biz.api.external.model.DosPlanRq;
import com.palnet.biz.jpa.entity.DosFltPlanArea;
import com.palnet.biz.jpa.entity.DosFltPlanAreaCoord;
import com.palnet.biz.jpa.entity.DosFltPlanBas;
import com.palnet.biz.jpa.repository.dos.DosFltPlanAreaCoordRepository;
import com.palnet.biz.jpa.repository.dos.DosFltPlanAreaRepository;
import com.palnet.biz.jpa.repository.dos.DosFltPlanBasRepository;
import com.palnet.biz.jpa.repository.dos.DosFltPlanResultRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.util.List;
@Slf4j
@Transactional
@RequiredArgsConstructor
@Service
public class DronOneStopService {
private final DosFltPlanBasRepository dosFltPlanBasRepository;
private final DosFltPlanAreaRepository dosFltPlanAreaRepository;
private final DosFltPlanAreaCoordRepository dosFltPlanAreaCoordRepository;
private final DosFltPlanResultRepository dosFltPlanResultRepository;
public void saveDosPlan(DosPlanRq rq) {
if (rq == null) {
throw new CustomException(ErrorCode.TS_PARAM_REQUIRED);
}
// bas save
DosPlanRq.DosPlan fltaplylist = rq.getFltaplylist();
DosFltPlanBas dosFltPlanBasInsert = DosFltPlanBas.builder()
.applyNo(fltaplylist.getAplyno())
.applyDt(fltaplylist.getAplyymd())
.fbctnNo(fltaplylist.getFbctnno())
.schFltStDt(fltaplylist.getFltstymd())
.schFltEndDt(fltaplylist.getFltendymd())
.updateDt(Instant.now())
.createDt(Instant.now())
.build();
DosFltPlanBas saveDosFltPlanBas = dosFltPlanBasRepository.save(dosFltPlanBasInsert);
// area save
if (fltaplylist.getZone() == null) {
throw new CustomException(ErrorCode.TS_PARAM_REQUIRED);
}
List<DosPlanRq.DosPlan.DosPlanArea> zone = fltaplylist.getZone();
zone.forEach(area -> {
DosFltPlanArea dosFltPlanAreaInsert = DosFltPlanArea.builder()
.planSno(saveDosFltPlanBas.getPlanSno())
.fltElev(area.getElev())
.bufferZone(area.getRadius())
.updateDt(Instant.now())
.createDt(Instant.now())
.build();
DosFltPlanArea saveDosFltPlanArea = dosFltPlanAreaRepository.save(dosFltPlanAreaInsert);
if (area.getCoords() == null) {
throw new CustomException(ErrorCode.TS_PARAM_REQUIRED);
}
// coord save
List<DosPlanRq.DosPlan.DosPlanArea.DosPlanAreaCoords> coords = area.getCoords();
coords.forEach(coord -> {
DosFltPlanAreaCoord dosFltPlanAreaCoordInsert = DosFltPlanAreaCoord.builder()
.planAreaSno(saveDosFltPlanArea.getPlanAreaSno())
.lat(coord.getLat())
.lon(coord.getLon())
.updateDt(Instant.now())
.createDt(Instant.now())
.build();
dosFltPlanAreaCoordRepository.save(dosFltPlanAreaCoordInsert);
});
});
// TODO: Laanc 검증(고도 중점)
// TODO: Laanc 결과 저장
}
}

39
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java

@ -0,0 +1,39 @@
package com.palnet.biz.jpa.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "DOS_FLT_PLAN_AREA")
public class DosFltPlanArea {
// 비행구역일련번호
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLAN_AREA_SNO")
private Long planAreaSno;
// 비행신청일련번호
@Column(name = "PLAN_SNO")
private Long planSno;
// 버퍼존(반경)
@Column(name = "BUFFER_ZONE")
private Double bufferZone;
// 고도
@Column(name = "FLT_ELEV")
private Double fltElev;
// 수정일시
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
// 생성일시
@Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
}

38
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanAreaCoord.java

@ -0,0 +1,38 @@
package com.palnet.biz.jpa.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "DOS_FLT_PLAN_AREA_COORD")
public class DosFltPlanAreaCoord {
// 비행구역좌표일련번호
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLAN_AREA_COORD_SNO")
private Long planAreaCoordSno;
// 비행구역일련번호
@Column(name = "PLAN_AREA_SNO")
private Long planAreaSno;
// 위도
@Column(name = "LAT")
private Double lat;
// 경도
@Column(name = "LON")
private Double lon;
// 수정일시
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
// 생성일시
@Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
}

46
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanBas.java

@ -0,0 +1,46 @@
package com.palnet.biz.jpa.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
import java.time.LocalDate;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "DOS_FLT_PLAN_BAS")
public class DosFltPlanBas {
// 비행계획일련번호
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLAN_SNO")
private Long planSno;
// 민원번호
@Column(name = "APPLY_NO")
private String applyNo;
// 신청일자
@Column(name = "APPLY_DT")
private LocalDate applyDt;
// 제작번호
@Column(name = "FBCTN_NO")
private String fbctnNo;
// 예상비행시작일시
@Column(name = "SCH_FLT_ST_DT")
private LocalDate schFltStDt;
// 예상비행종료일시
@Column(name = "SCH_FLT_END_DT")
private LocalDate schFltEndDt;
// 수정일시
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
// 생성일시
@Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
}

35
pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanResult.java

@ -0,0 +1,35 @@
package com.palnet.biz.jpa.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "DOS_FLT_PLAN_RESULT")
public class DosFltPlanResult {
// 비행계획결과일련번호
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PLAN_RESULT_SNO")
private Long planResultSno;
// 비행계획일련번호
@Column(name = "PLAN_SNO")
private Long planSno;
// 승인코드
@Column(name = "APPROVAL_CD")
private String approvalCd;
// 수정일시
@Column(name = "UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
// 생성일시
@Column(name = "CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
}

9
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanAreaCoordRepository.java

@ -0,0 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.jpa.entity.DosFltPlanAreaCoord;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DosFltPlanAreaCoordRepository extends JpaRepository<DosFltPlanAreaCoord, Long> {
}

9
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanAreaRepository.java

@ -0,0 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.jpa.entity.DosFltPlanArea;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DosFltPlanAreaRepository extends JpaRepository<DosFltPlanArea, Long> {
}

9
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanBasRepository.java

@ -0,0 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.jpa.entity.DosFltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DosFltPlanBasRepository extends JpaRepository<DosFltPlanBas, Long> {
}

9
pav-server/src/main/java/com/palnet/biz/jpa/repository/dos/DosFltPlanResultRepository.java

@ -0,0 +1,9 @@
package com.palnet.biz.jpa.repository.dos;
import com.palnet.biz.jpa.entity.DosFltPlanResult;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DosFltPlanResultRepository extends JpaRepository<DosFltPlanResult, Long> {
}
Loading…
Cancel
Save