지대한
5 months ago
10 changed files with 282 additions and 2 deletions
@ -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 결과 저장
|
||||
} |
||||
|
||||
} |
@ -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; |
||||
|
||||
} |
@ -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; |
||||
} |
@ -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; |
||||
|
||||
} |
@ -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; |
||||
} |
@ -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> { |
||||
} |
@ -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> { |
||||
} |
@ -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> { |
||||
} |
@ -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…
Reference in new issue