Browse Source

DB 추가 필드에 대한 비행계획서 등록/수정/조회/상세조회 모델 변경

pull/2/head
지대한 1 year ago
parent
commit
24fa9841e2
  1. 6
      pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrRqModel.java
  2. 2
      pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmerRlModel.java
  3. 5
      pav-server/src/main/java/com/palnet/biz/api/acnt/terms/model/AcntTermsRsModel.java
  4. 3
      pav-server/src/main/java/com/palnet/biz/api/bas/dron/model/BasDronModel.java
  5. 8
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  6. 7
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanArcrftModel.java
  7. 2
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaModel.java
  8. 7
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java
  9. 20
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanModel.java
  10. 391
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java
  11. 2
      pav-server/src/main/java/com/palnet/biz/jpa/entity/FltPlanArcrft.java
  12. 3
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java
  13. 2
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java
  14. 7
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java
  15. 23
      pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCrtfyhpBasQueryRepository.java
  16. 15
      pav-server/src/main/java/com/palnet/pav/kac/api/flight/plan/controller/KacFlightPlanController.java
  17. 15
      pav-server/src/main/java/com/palnet/pav/kac/api/flight/plan/model/KacFlightPlanModel.java
  18. 15
      pav-server/src/main/java/com/palnet/pav/kac/api/flight/plan/service/KacFlightPlanService.java
  19. 49768
      pav-server/src/main/resources/air/airgeo.json

6
pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrRqModel.java

@ -1,5 +1,7 @@
package com.palnet.biz.api.acnt.cstmr.model; package com.palnet.biz.api.acnt.cstmr.model;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.palnet.biz.config.convert.InstantDateStrSerializer;
import lombok.Data; import lombok.Data;
import java.time.Instant; import java.time.Instant;
@ -32,8 +34,10 @@ public class AcntCstmrRqModel{
private String genderCd; private String genderCd;
private String memberName; private String memberName;
@JsonSerialize(using = InstantDateStrSerializer.class)
private Instant brthdyDate; private Instant brthdyDate;
private Instant testDt; private Instant testDt;
private String email; private String email;

2
pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmerRlModel.java

@ -1,6 +1,5 @@
package com.palnet.biz.api.acnt.cstmr.model; package com.palnet.biz.api.acnt.cstmr.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.palnet.biz.config.convert.InstantDateStrSerializer; import com.palnet.biz.config.convert.InstantDateStrSerializer;
import lombok.Data; import lombok.Data;
@ -12,7 +11,6 @@ public class AnctCstmerRlModel {
private String memberName; private String memberName;
// @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
@JsonSerialize(using = InstantDateStrSerializer.class) @JsonSerialize(using = InstantDateStrSerializer.class)
private Instant brthdyDate; private Instant brthdyDate;

5
pav-server/src/main/java/com/palnet/biz/api/acnt/terms/model/AcntTermsRsModel.java

@ -1,5 +1,7 @@
package com.palnet.biz.api.acnt.terms.model; package com.palnet.biz.api.acnt.terms.model;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.palnet.biz.config.convert.InstantDateStrSerializer;
import lombok.Data; import lombok.Data;
import java.time.Instant; import java.time.Instant;
@ -10,7 +12,8 @@ public class AcntTermsRsModel{
private int termsSno ; private int termsSno ;
private String siteCd; private String siteCd;
@JsonSerialize(using = InstantDateStrSerializer.class)
private Instant estbshDate; private Instant estbshDate;
private String termsCtgryCd; private String termsCtgryCd;

3
pav-server/src/main/java/com/palnet/biz/api/bas/dron/model/BasDronModel.java

@ -3,6 +3,8 @@ package com.palnet.biz.api.bas.dron.model;
import java.time.Instant; import java.time.Instant;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.palnet.biz.config.convert.InstantDateStrSerializer;
import lombok.Data; import lombok.Data;
@Data @Data
@ -36,6 +38,7 @@ public class BasDronModel {
private String prdctCmpnNm; private String prdctCmpnNm;
@JsonSerialize(using = InstantDateStrSerializer.class)
private Instant prdctDate; private Instant prdctDate;
private String prdctNum; private String prdctNum;

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

@ -89,8 +89,8 @@ public class BasFlightController {
Object airArea = jsonObject; Object airArea = jsonObject;
List<Object> features = (List<Object>) jsonObject.get("features"); List<Object> features = (List<Object>) jsonObject.get("features");
log.info("type is name : {}", type); log.debug("type is name : {}", type);
log.info("features size : {}", features.size()); log.debug("features size : {}", features.size());
return ResponseEntity.ok().body(airArea); return ResponseEntity.ok().body(airArea);
} }
@ -101,9 +101,7 @@ public class BasFlightController {
@Tag(name = "비행계획서", description = "비행계획서 관련 API") @Tag(name = "비행계획서", description = "비행계획서 관련 API")
public ResponseEntity<? extends BasicResponse> findPlanList(BasFlightPlanListRq rq) { public ResponseEntity<? extends BasicResponse> findPlanList(BasFlightPlanListRq rq) {
ComnPagingRs<BasFlightPlanModel> result = null; ComnPagingRs<BasFlightPlanModel> result = null;
// System.out.println(rq); log.debug(">>> rq : {}", rq);
log.error(">>> rq : {}", rq);
try { try {
result = basFlightService.listPlan(rq); result = basFlightService.listPlan(rq);
} catch (Exception e) { } catch (Exception e) {

7
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanArcrftModel.java

@ -1,5 +1,7 @@
package com.palnet.biz.api.bas.flight.model; package com.palnet.biz.api.bas.flight.model;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.palnet.biz.config.convert.InstantDateStrSerializer;
import lombok.Data; import lombok.Data;
import java.time.Instant; import java.time.Instant;
@ -15,6 +17,7 @@ public class BasFlightPlanArcrftModel {
private String arcrftTypeCd; private String arcrftTypeCd;
private String arcrftModelNm; private String arcrftModelNm;
private String prdctCmpnNm; private String prdctCmpnNm;
@JsonSerialize(using = InstantDateStrSerializer.class)
private Instant prdctDate; private Instant prdctDate;
private double arcrftLngth; private double arcrftLngth;
private double arcrftWdth; private double arcrftWdth;
@ -33,4 +36,8 @@ public class BasFlightPlanArcrftModel {
private Instant updateDt; private Instant updateDt;
private String docState = "R"; private String docState = "R";
private String idntfTypeCd; private String idntfTypeCd;
// kac 추가 필드
private String acrftInsuranceYn;
private Instant insuranceExperiod;
private String corporationNm;
} }

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

@ -20,4 +20,6 @@ public class BasFlightPlanAreaModel {
private String docState = "R"; private String docState = "R";
private List<BasFlightPlanAreaCoordModel> coordList; private List<BasFlightPlanAreaCoordModel> coordList;
private List<BasFlightPlanAreaCoordModel> bufferCoordList; private List<BasFlightPlanAreaCoordModel> bufferCoordList;
// kac 추가 필드
private String fltMothoeRm;
} }

7
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java

@ -1,13 +1,10 @@
package com.palnet.biz.api.bas.flight.model; package com.palnet.biz.api.bas.flight.model;
import com.palnet.biz.api.comn.model.ComnPagingModel;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.Instant; import java.time.Instant;
import java.util.Date;
import com.palnet.biz.api.comn.model.ComnPagingModel;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
@Data @Data
@EqualsAndHashCode(callSuper=false) @EqualsAndHashCode(callSuper=false)

20
pav-server/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanModel.java

@ -1,6 +1,5 @@
package com.palnet.biz.api.bas.flight.model; package com.palnet.biz.api.bas.flight.model;
import com.palnet.comn.utils.DateUtils;
import lombok.Data; import lombok.Data;
import java.time.Instant; import java.time.Instant;
@ -32,20 +31,7 @@ public class BasFlightPlanModel {
private List<BasFlightPlanAreaModel> areaList; private List<BasFlightPlanAreaModel> areaList;
private List<BasFlightPlanPilotModel> pilotList; private List<BasFlightPlanPilotModel> pilotList;
private List<BasFlightPlanArcrftModel> arcrftList; private List<BasFlightPlanArcrftModel> arcrftList;
// kac 추가 필드
public void setSchFltStDt(String schFltStDt){ private String corpRegYn;
this.schFltStDt = DateUtils.stringToInstant(schFltStDt); private String serviceType;
}
public void setSchFltEndDt(String schFltEndDt){
this.schFltEndDt = DateUtils.stringToInstant(schFltEndDt);
}
public void setCreateDt(String createDt){
this.createDt = DateUtils.stringToInstant(createDt);
}
public void setUpdateDt(String updateDt){
this.updateDt = DateUtils.stringToInstant(updateDt);
}
} }

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

@ -66,9 +66,9 @@ import lombok.extern.log4j.Log4j2;
@Transactional(readOnly = true) @Transactional(readOnly = true)
public class BasFlightService { public class BasFlightService {
@Autowired @Autowired
private CtrTrnsLctnService ctrTrnsLctnService; private CtrTrnsLctnService ctrTrnsLctnService;
private final FltPlanBasRepository fltPlanBasRepository; private final FltPlanBasRepository fltPlanBasRepository;
private final FltPlanArcrftRepository fltPlanArcrftRepository; private final FltPlanArcrftRepository fltPlanArcrftRepository;
private final FltPlanAreaRepository fltPlanAreaRepository; private final FltPlanAreaRepository fltPlanAreaRepository;
@ -107,43 +107,43 @@ public class BasFlightService {
String appAuth = jwtTokenUtil.getUserAuthByToken(); String appAuth = jwtTokenUtil.getUserAuthByToken();
ComnPagingRs<BasFlightPlanModel> response = new ComnPagingRs<>(); ComnPagingRs<BasFlightPlanModel> response = new ComnPagingRs<>();
Pageable pageable = PageRequest.of(rq.getPage()-1, rq.getRecord()); Pageable pageable = PageRequest.of(rq.getPage() - 1, rq.getRecord());
if(groupList.size() > 0) { if (groupList.size() > 0) {
for (BasGroupJoinModel list : groupList) { for (BasGroupJoinModel list : groupList) {
if (list.getGroupId().equals(rq.getGroupId())) { if (list.getGroupId().equals(rq.getGroupId())) {
userAccount = list.getGroupAuthCd(); userAccount = list.getGroupAuthCd();
} }
} }
} }
if (appAuth.equals("SUPER") || appAuth.equals("ADMIN")) { if (appAuth.equals("SUPER") || appAuth.equals("ADMIN")) {
masterAccount = "ADMIN"; masterAccount = "ADMIN";
} else if (userAccount.equals("MASTER") || userAccount.equals("LEADER")) { } else if (userAccount.equals("MASTER") || userAccount.equals("LEADER")) {
masterAccount = "ADMIN"; masterAccount = "ADMIN";
} else { } else {
masterAccount = "NORMAL"; masterAccount = "NORMAL";
} }
PageImpl<BasFlightPlanModel> result = fltPlanQueryRepository.listPlan(rq, masterAccount, pageable); PageImpl<BasFlightPlanModel> result = fltPlanQueryRepository.listPlan(rq, masterAccount, pageable);
long total = fltPlanQueryRepository.listPlanCount(rq, masterAccount); long total = fltPlanQueryRepository.listPlanCount(rq, masterAccount);
long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); long totalPage = total % rq.getRecord() > 0 ? (total / rq.getRecord()) + 1 : total / rq.getRecord();
response.setItems(result.getContent()); response.setItems(result.getContent());
response.setTotal(total); response.setTotal(total);
response.setPage(rq.getPage()); response.setPage(rq.getPage());
response.setTotalPage(totalPage); response.setTotalPage(totalPage);
return response; return response;
} }
// 비행계획서 상세 조회 // 비행계획서 상세 조회
public BasFlightPlanModel detailPlan(Integer planSno) { public BasFlightPlanModel detailPlan(Integer planSno) {
BasFlightPlanModel rs = new BasFlightPlanModel(); BasFlightPlanModel rs = new BasFlightPlanModel();
// 비행계획서 // 비행계획서
FltPlanBas planEntity = fltPlanBasRepository.findByPlanSnoAndDelYnNot(planSno, "Y").orElse(null); FltPlanBas planEntity = fltPlanBasRepository.findByPlanSnoAndDelYnNot(planSno, "Y").orElse(null);
if(planEntity != null){ if (planEntity != null) {
rs = BasFlightMapper.mapper.entityToModel(planEntity); rs = BasFlightMapper.mapper.entityToModel(planEntity);
// 버퍼영역 // 버퍼영역
List<FltPlanArea> areaEntityList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(planSno); List<FltPlanArea> areaEntityList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(planSno);
if (areaEntityList != null && !areaEntityList.isEmpty()) { if (areaEntityList != null && !areaEntityList.isEmpty()) {
@ -155,7 +155,7 @@ public class BasFlightService {
areaModel.setCoordList(BasFlightMapper.mapper.entityToModelCoordList(coordEntityList)); areaModel.setCoordList(BasFlightMapper.mapper.entityToModelCoordList(coordEntityList));
// Line인 경우 BufferList 생성 // Line인 경우 BufferList 생성
if("LINE".equals(areaEntity.getAreaType())) { if ("LINE".equals(areaEntity.getAreaType())) {
List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(areaModel.getCoordList()); List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(areaModel.getCoordList());
List<Coordinate> bufferList = areaUtils.buffer(convertCoordinates, areaModel.getBufferZone()); List<Coordinate> bufferList = areaUtils.buffer(convertCoordinates, areaModel.getBufferZone());
List<BasFlightPlanAreaCoordModel> bufferCoordList = areaUtils.convertModel(bufferList); List<BasFlightPlanAreaCoordModel> bufferCoordList = areaUtils.convertModel(bufferList);
@ -180,93 +180,93 @@ public class BasFlightService {
} }
return rs; return rs;
} }
public void planValid(BasFlightPlanModel rq) { public void planValid(BasFlightPlanModel rq) {
boolean isEqualsFltElev = false; boolean isEqualsFltElev = false;
List<BasFlightPlanAreaModel> rqAreaList = rq.getAreaList(); List<BasFlightPlanAreaModel> rqAreaList = rq.getAreaList();
String rqFltElev = rqAreaList.get(0).getFltElev(); String rqFltElev = rqAreaList.get(0).getFltElev();
List<BasFlightPlanModel> effectivePlanList = fltPlanQueryRepository.CoordCheck(rq); List<BasFlightPlanModel> effectivePlanList = fltPlanQueryRepository.CoordCheck(rq);
List<BasFlightPlanAreaModel> effectivePlanArea = new ArrayList<>(); List<BasFlightPlanAreaModel> effectivePlanArea = new ArrayList<>();
for(BasFlightPlanModel plan : effectivePlanList) { for (BasFlightPlanModel plan : effectivePlanList) {
effectivePlanArea.addAll(plan.getAreaList()); effectivePlanArea.addAll(plan.getAreaList());
} }
for(BasFlightPlanAreaModel area : effectivePlanArea) { for (BasFlightPlanAreaModel area : effectivePlanArea) {
if(rqFltElev.equals(area.getFltElev())) isEqualsFltElev = true; if (rqFltElev.equals(area.getFltElev())) isEqualsFltElev = true;
} }
List<BasFlightPlanAreaCoordRq> effectivePlanCount = fltPlanQueryRepository.CoordCount(rq); List<BasFlightPlanAreaCoordRq> effectivePlanCount = fltPlanQueryRepository.CoordCount(rq);
for(BasFlightPlanModel i : effectivePlanList) { for (BasFlightPlanModel i : effectivePlanList) {
if(rq.getPlanSno().equals(i.getPlanSno()))return; if (rq.getPlanSno().equals(i.getPlanSno())) return;
} }
if(effectivePlanList != null && !effectivePlanList.isEmpty()) { if (effectivePlanList != null && !effectivePlanList.isEmpty()) {
for(BasFlightPlanModel plan : effectivePlanList) { for (BasFlightPlanModel plan : effectivePlanList) {
// 1. 구역 조회 // 1. 구역 조회
List<FltPlanArea> areaList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(plan.getPlanSno()); List<FltPlanArea> areaList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(plan.getPlanSno());
// 2. 좌표 조회 -> 영역 포함 여부 확인 // 2. 좌표 조회 -> 영역 포함 여부 확인
for(FltPlanArea area : areaList) { for (FltPlanArea area : areaList) {
List<FltPlanAreaCoord> coordList = fltPlanAreaCoordRepository.findByPlanAreaSnoOrderByPlanAreaCoordSnoAsc(area.getPlanAreaSno()); List<FltPlanAreaCoord> coordList = fltPlanAreaCoordRepository.findByPlanAreaSnoOrderByPlanAreaCoordSnoAsc(area.getPlanAreaSno());
if(coordList != null && !coordList.isEmpty()) { if (coordList != null && !coordList.isEmpty()) {
List<BasFlightPlanAreaCoordModel> coordListMapping = BasFlightMapper.mapper.entityToModelCoordList(coordList); List<BasFlightPlanAreaCoordModel> coordListMapping = BasFlightMapper.mapper.entityToModelCoordList(coordList);
// 2-1 영역 좌표 -> jts model로 mapping // 2-1 영역 좌표 -> jts model로 mapping
List<Coordinate> effectiveCoordList = areaUtils.convertCoordinates(coordListMapping); List<Coordinate> effectiveCoordList = areaUtils.convertCoordinates(coordListMapping);
List<Coordinate> effectiveCoordBufferList = new ArrayList<>(); List<Coordinate> effectiveCoordBufferList = new ArrayList<>();
// Query에서 조회한 좌표로 버퍼좌표 생성 // Query에서 조회한 좌표로 버퍼좌표 생성
if("LINE".equals(area.getAreaType())){ if ("LINE".equals(area.getAreaType())) {
List<Coordinate> trans = areaUtils.transform(effectiveCoordList, "EPSG:4326", "EPSG:5181"); List<Coordinate> trans = areaUtils.transform(effectiveCoordList, "EPSG:4326", "EPSG:5181");
List<Coordinate> bufferList = areaUtils.buffer(trans, area.getBufferZone()); List<Coordinate> bufferList = areaUtils.buffer(trans, area.getBufferZone());
effectiveCoordBufferList = areaUtils.transform(bufferList, "EPSG:5181", "EPSG:4326"); effectiveCoordBufferList = areaUtils.transform(bufferList, "EPSG:5181", "EPSG:4326");
} }
if("POLYGON".equals(area.getAreaType())) { if ("POLYGON".equals(area.getAreaType())) {
effectiveCoordBufferList.addAll(effectiveCoordList); effectiveCoordBufferList.addAll(effectiveCoordList);
} }
if("CIRCLE".equals(area.getAreaType())) { if ("CIRCLE".equals(area.getAreaType())) {
effectiveCoordBufferList = areaUtils.createCircle(effectiveCoordList.get(0), area.getBufferZone()); effectiveCoordBufferList = areaUtils.createCircle(effectiveCoordList.get(0), area.getBufferZone());
} }
// 유효한 비행구역 검증하기. // 유효한 비행구역 검증하기.
for(BasFlightPlanAreaModel rqArea : rq.getAreaList()) { for (BasFlightPlanAreaModel rqArea : rq.getAreaList()) {
boolean overlapCheck = false; boolean overlapCheck = false;
boolean overlapCheck2 = false; boolean overlapCheck2 = false;
boolean containCheck = false; boolean containCheck = false;
boolean containCheck2 = false; boolean containCheck2 = false;
List<Coordinate> rqCoord = new ArrayList<>(); List<Coordinate> rqCoord = new ArrayList<>();
List<Coordinate> rqCoordBufferList = new ArrayList<>(); List<Coordinate> rqCoordBufferList = new ArrayList<>();
//rq로 들어온 좌표로 버퍼좌표 생성 //rq로 들어온 좌표로 버퍼좌표 생성
for(BasFlightPlanAreaCoordModel coord : rqArea.getCoordList()) { for (BasFlightPlanAreaCoordModel coord : rqArea.getCoordList()) {
Coordinate coords = new Coordinate(coord.getLon(), coord.getLat()); Coordinate coords = new Coordinate(coord.getLon(), coord.getLat());
rqCoord.add(coords); rqCoord.add(coords);
} }
if("LINE".equals(rqArea.getAreaType())){ if ("LINE".equals(rqArea.getAreaType())) {
List<Coordinate> trans = areaUtils.transform(rqCoord, "EPSG:4326", "EPSG:5181"); List<Coordinate> trans = areaUtils.transform(rqCoord, "EPSG:4326", "EPSG:5181");
List<Coordinate> bufferList = areaUtils.buffer(trans, rqArea.getBufferZone()); List<Coordinate> bufferList = areaUtils.buffer(trans, rqArea.getBufferZone());
rqCoordBufferList = areaUtils.transform(bufferList, "EPSG:5181", "EPSG:4326"); rqCoordBufferList = areaUtils.transform(bufferList, "EPSG:5181", "EPSG:4326");
}else if( "POLYGON".equals(rqArea.getAreaType())) { } else if ("POLYGON".equals(rqArea.getAreaType())) {
rqCoordBufferList.addAll(rqCoord); rqCoordBufferList.addAll(rqCoord);
}else if("CIRCLE".equals(rqArea.getAreaType())) { } else if ("CIRCLE".equals(rqArea.getAreaType())) {
rqCoordBufferList = areaUtils.createCircle(rqCoord.get(0), rqArea.getBufferZone()); rqCoordBufferList = areaUtils.createCircle(rqCoord.get(0), rqArea.getBufferZone());
} }
//검증 //검증
overlapCheck = areaUtils.overlaps(rqCoordBufferList, effectiveCoordBufferList); overlapCheck = areaUtils.overlaps(rqCoordBufferList, effectiveCoordBufferList);
overlapCheck2 = areaUtils.overlaps(effectiveCoordBufferList, rqCoordBufferList); overlapCheck2 = areaUtils.overlaps(effectiveCoordBufferList, rqCoordBufferList);
if((overlapCheck || overlapCheck2) && isEqualsFltElev) { if ((overlapCheck || overlapCheck2) && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
} }
for(Coordinate coord : effectiveCoordBufferList) { for (Coordinate coord : effectiveCoordBufferList) {
containCheck = areaUtils.contains(rqCoordBufferList, coord); containCheck = areaUtils.contains(rqCoordBufferList, coord);
if(containCheck && isEqualsFltElev) { if (containCheck && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
} }
} }
for(Coordinate coord : rqCoordBufferList) { for (Coordinate coord : rqCoordBufferList) {
containCheck2 = areaUtils.contains(effectiveCoordBufferList , coord); containCheck2 = areaUtils.contains(effectiveCoordBufferList, coord);
if(containCheck2 && isEqualsFltElev) { if (containCheck2 && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
} }
} }
@ -275,18 +275,18 @@ public class BasFlightService {
} }
// 3. 중복 기체 확인 // 3. 중복 기체 확인
for(BasFlightPlanAreaCoordRq idntfNum : effectivePlanCount) { for (BasFlightPlanAreaCoordRq idntfNum : effectivePlanCount) {
for(BasFlightPlanArcrftModel rqArcrft : rq.getArcrftList()) { for (BasFlightPlanArcrftModel rqArcrft : rq.getArcrftList()) {
if(rqArcrft.getIdntfNum().equals(idntfNum.getIdntfNum())) { if (rqArcrft.getIdntfNum().equals(idntfNum.getIdntfNum())) {
throw new CustomException(ErrorCode.ARCRFT_DATA_DUPLICATE); throw new CustomException(ErrorCode.ARCRFT_DATA_DUPLICATE);
} }
} }
} }
} }
} }
} }
// 비행계획서 등록 // 비행계획서 등록
@Transactional @Transactional
public boolean createPlan(BasFlightPlanModel rq) { public boolean createPlan(BasFlightPlanModel rq) {
@ -355,10 +355,10 @@ public class BasFlightService {
// 비행계획서 수정 // 비행계획서 수정
@Transactional @Transactional
public boolean updatePlan(BasFlightPlanModel rq) { public boolean updatePlan(BasFlightPlanModel rq) {
// 비행계획서 유효성 검사. // 비행계획서 유효성 검사.
this.planValid(rq); this.planValid(rq);
if (rq != null && rq.getPlanSno() != null) { if (rq != null && rq.getPlanSno() != null) {
String userId = jwtTokenUtil.getUserIdByToken(); String userId = jwtTokenUtil.getUserIdByToken();
Integer planSno = rq.getPlanSno(); Integer planSno = rq.getPlanSno();
@ -426,17 +426,17 @@ public class BasFlightService {
// 조종사 // 조종사
List<BasFlightPlanPilotModel> pilotModelList = rq.getPilotList(); List<BasFlightPlanPilotModel> pilotModelList = rq.getPilotList();
if(pilotModelList != null && !pilotModelList.isEmpty()){ if (pilotModelList != null && !pilotModelList.isEmpty()) {
List<FltPlanPilot> pilotEntityList = fltPlanPilotRepository.findByPlanSnoOrderByPlanPilotSnoAsc(planSno); List<FltPlanPilot> pilotEntityList = fltPlanPilotRepository.findByPlanSnoOrderByPlanPilotSnoAsc(planSno);
for(BasFlightPlanPilotModel pilotModel : pilotModelList){ for (BasFlightPlanPilotModel pilotModel : pilotModelList) {
FltPlanPilot pilotEntity = pilotEntityList.stream().filter(fltPlanPilot -> fltPlanPilot.getPlanPilotSno().equals(pilotModel.getPlanPilotSno())).findFirst().orElse(null); FltPlanPilot pilotEntity = pilotEntityList.stream().filter(fltPlanPilot -> fltPlanPilot.getPlanPilotSno().equals(pilotModel.getPlanPilotSno())).findFirst().orElse(null);
if(pilotEntity == null){ if (pilotEntity == null) {
pilotEntity = BasFlightMapper.mapper.modelToEntity(pilotModel); pilotEntity = BasFlightMapper.mapper.modelToEntity(pilotModel);
pilotEntity.setUpdateUserId(userId); pilotEntity.setUpdateUserId(userId);
pilotEntity.setCreateUserId(userId); pilotEntity.setCreateUserId(userId);
}else { } else {
BasFlightMapper.mapper.updateEntityByModel(pilotEntity, pilotModel); BasFlightMapper.mapper.updateEntityByModel(pilotEntity, pilotModel);
} }
fltPlanPilotRepository.save(pilotEntity); fltPlanPilotRepository.save(pilotEntity);
} }
@ -452,16 +452,16 @@ public class BasFlightService {
// 기체 // 기체
List<BasFlightPlanArcrftModel> arcrftModelList = rq.getArcrftList(); List<BasFlightPlanArcrftModel> arcrftModelList = rq.getArcrftList();
if(arcrftModelList != null && !arcrftModelList.isEmpty()){ if (arcrftModelList != null && !arcrftModelList.isEmpty()) {
List<FltPlanArcrft> arcrftEntityList = fltPlanArcrftRepository.findByPlanSnoOrderByPlanArcrftSnoAsc(planSno); List<FltPlanArcrft> arcrftEntityList = fltPlanArcrftRepository.findByPlanSnoOrderByPlanArcrftSnoAsc(planSno);
for(BasFlightPlanArcrftModel arcrftModel : arcrftModelList){ for (BasFlightPlanArcrftModel arcrftModel : arcrftModelList) {
FltPlanArcrft arcrftEntity = arcrftEntityList.stream().filter(fltPlanArcrft -> fltPlanArcrft.getPlanArcrftSno().equals(arcrftModel.getPlanArcrftSno())).findFirst().orElse(null); FltPlanArcrft arcrftEntity = arcrftEntityList.stream().filter(fltPlanArcrft -> fltPlanArcrft.getPlanArcrftSno().equals(arcrftModel.getPlanArcrftSno())).findFirst().orElse(null);
if(arcrftEntity == null){ if (arcrftEntity == null) {
arcrftEntity = BasFlightMapper.mapper.modelToEntity(arcrftModel); arcrftEntity = BasFlightMapper.mapper.modelToEntity(arcrftModel);
arcrftEntity.setUpdateUserId(userId); arcrftEntity.setUpdateUserId(userId);
arcrftEntity.setCreateUserId(userId); arcrftEntity.setCreateUserId(userId);
}else { } else {
BasFlightMapper.mapper.updateEntityByModel(arcrftEntity, arcrftModel); BasFlightMapper.mapper.updateEntityByModel(arcrftEntity, arcrftModel);
} }
fltPlanArcrftRepository.save(arcrftEntity); fltPlanArcrftRepository.save(arcrftEntity);
} }
@ -488,22 +488,21 @@ public class BasFlightService {
} }
// 그룹 조종사 조회 // 그룹 조종사 조회
public List<BasFlightPlanPilotModel> listPilotByGroup(String groupId) { public List<BasFlightPlanPilotModel> listPilotByGroup(String groupId) {
List<BasFlightPlanPilotModel> pilotList = fltPlanQueryRepository.listPilot(groupId); List<BasFlightPlanPilotModel> pilotList = fltPlanQueryRepository.listPilot(groupId);
/* 개인정보 복호화 처리 */ /* 개인정보 복호화 처리 */
for(BasFlightPlanPilotModel model : pilotList) { for (BasFlightPlanPilotModel model : pilotList) {
if(!StringUtils.isEmpty(model.getHpno())) { if (!StringUtils.isEmpty(model.getHpno())) {
model.setHpno(EncryptUtils.decrypt(model.getHpno())); model.setHpno(EncryptUtils.decrypt(model.getHpno()));
} }
if(!StringUtils.isEmpty(model.getMemberName())) { if (!StringUtils.isEmpty(model.getMemberName())) {
// model.setMemberName(EncryptUtils.decrypt(model.getMemberName())); // model.setMemberName(EncryptUtils.decrypt(model.getMemberName()));
} }
if(!StringUtils.isEmpty(model.getEmail())) { if (!StringUtils.isEmpty(model.getEmail())) {
model.setEmail(EncryptUtils.decrypt(model.getEmail())); model.setEmail(EncryptUtils.decrypt(model.getEmail()));
} }
} }
@ -523,9 +522,9 @@ public class BasFlightService {
// 비행 구역 buffer zone // 비행 구역 buffer zone
public List<BasFlightPlanAreaModel> getBuffer(List<BasFlightPlanAreaModel> rq) { public List<BasFlightPlanAreaModel> getBuffer(List<BasFlightPlanAreaModel> rq) {
for(BasFlightPlanAreaModel area : rq) { for (BasFlightPlanAreaModel area : rq) {
if("LINE".equals(area.getAreaType())) { if ("LINE".equals(area.getAreaType())) {
List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(area.getCoordList()); // 객체 타입 변환 List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(area.getCoordList()); // 객체 타입 변환
List<Coordinate> transCoordList = areaUtils.transform(convertCoordinates, "EPSG:4326", "EPSG:5181"); List<Coordinate> transCoordList = areaUtils.transform(convertCoordinates, "EPSG:4326", "EPSG:5181");
@ -545,17 +544,17 @@ public class BasFlightService {
public ComnPagingRs<BasFlightPlanModel> aprvList(BasFlightPlanListRq rq) { public ComnPagingRs<BasFlightPlanModel> aprvList(BasFlightPlanListRq rq) {
String appAuth = jwtTokenUtil.getUserAuthByToken(); String appAuth = jwtTokenUtil.getUserAuthByToken();
ComnPagingRs<BasFlightPlanModel> response = new ComnPagingRs<>(); ComnPagingRs<BasFlightPlanModel> response = new ComnPagingRs<>();
Pageable pageable = PageRequest.of(rq.getPage()-1, rq.getRecord()); Pageable pageable = PageRequest.of(rq.getPage() - 1, rq.getRecord());
List<JwtGroupModel> groupAuthList = jwtTokenUtil.getGroupAuthByToken(); List<JwtGroupModel> groupAuthList = jwtTokenUtil.getGroupAuthByToken();
List<String> groupIdList = new ArrayList<>(); List<String> groupIdList = new ArrayList<>();
String userAccount = null; String userAccount = null;
String masterAccount = null; String masterAccount = null;
if(groupAuthList.size() > 0) { if (groupAuthList.size() > 0) {
for (JwtGroupModel list : groupAuthList) { for (JwtGroupModel list : groupAuthList) {
if (list.getGroupId().equals(rq.getGroupId())) { if (list.getGroupId().equals(rq.getGroupId())) {
userAccount = list.getGroupAuthCd(); userAccount = list.getGroupAuthCd();
@ -570,18 +569,19 @@ public class BasFlightService {
masterAccount = "NORMAL"; masterAccount = "NORMAL";
} }
PageImpl<BasFlightPlanModel> result = fltPlanQueryRepository.aprvList(rq, masterAccount, pageable); PageImpl<BasFlightPlanModel> result = fltPlanQueryRepository.aprvList(rq, masterAccount, pageable);
long total = fltPlanQueryRepository.aprvCount(rq, masterAccount); long total = fltPlanQueryRepository.aprvCount(rq, masterAccount);
long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); long totalPage = total % rq.getRecord() > 0 ? (total / rq.getRecord()) + 1 : total / rq.getRecord();
response.setItems(result.getContent()); response.setItems(result.getContent());
response.setTotal(total); response.setTotal(total);
response.setPage(rq.getPage()); response.setPage(rq.getPage());
response.setTotalPage(totalPage); response.setTotalPage(totalPage);
return response; return response;
} }
// 비행계획서 승인/미승인 // 비행계획서 승인/미승인
@Transactional @Transactional
public int aprovePlan(BasFlightAprovRq rq) { public int aprovePlan(BasFlightAprovRq rq) {
@ -592,20 +592,20 @@ public class BasFlightService {
public boolean checkAirspaceContains(List<BasFlightPlanAreaModel> rq) { public boolean checkAirspaceContains(List<BasFlightPlanAreaModel> rq) {
boolean result = false; boolean result = false;
for(BasFlightPlanAreaModel area : rq) { for (BasFlightPlanAreaModel area : rq) {
List<Coordinate> coordinates = areaUtils.convertCoordinates(area.getCoordList()); List<Coordinate> coordinates = areaUtils.convertCoordinates(area.getCoordList());
if("LINE".equals(area.getAreaType())) { if ("LINE".equals(area.getAreaType())) {
List<Coordinate> transCoordList = areaUtils.transform(coordinates, "EPSG:4326", "EPSG:5181"); List<Coordinate> transCoordList = areaUtils.transform(coordinates, "EPSG:4326", "EPSG:5181");
List<Coordinate> buffer = areaUtils.buffer(transCoordList, area.getBufferZone()); List<Coordinate> buffer = areaUtils.buffer(transCoordList, area.getBufferZone());
List<Coordinate> transBufferList = areaUtils.transform(buffer, "EPSG:5181", "EPSG:4326"); List<Coordinate> transBufferList = areaUtils.transform(buffer, "EPSG:5181", "EPSG:4326");
result = areaUtils.overlaps(transBufferList); result = areaUtils.overlaps(transBufferList);
} }
if("POLYGON".equals(area.getAreaType())) { if ("POLYGON".equals(area.getAreaType())) {
result = areaUtils.overlaps(coordinates); result = areaUtils.overlaps(coordinates);
} }
if("CIRCLE".equals(area.getAreaType())) { if ("CIRCLE".equals(area.getAreaType())) {
List<Coordinate> circle = areaUtils.createCircle(coordinates.get(0), area.getBufferZone()); List<Coordinate> circle = areaUtils.createCircle(coordinates.get(0), area.getBufferZone());
result = areaUtils.overlaps(circle); result = areaUtils.overlaps(circle);
} }
@ -614,56 +614,56 @@ public class BasFlightService {
return result; return result;
} }
//지역 검색 //지역 검색
public String searchArea(String apiUrl, Map<String, String> requestHeaders) { public String searchArea(String apiUrl, Map<String, String> requestHeaders) {
HttpURLConnection con = connect(apiUrl); HttpURLConnection con = connect(apiUrl);
try { try {
con.setRequestMethod("GET"); con.setRequestMethod("GET");
for(Map.Entry<String, String> header :requestHeaders.entrySet()) { for (Map.Entry<String, String> header : requestHeaders.entrySet()) {
con.setRequestProperty(header.getKey(), header.getValue()); con.setRequestProperty(header.getKey(), header.getValue());
} }
int responseCode = con.getResponseCode(); int responseCode = con.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK) { if (responseCode == HttpURLConnection.HTTP_OK) {
return readBody(con.getInputStream()); return readBody(con.getInputStream());
} else { } else {
return readBody(con.getErrorStream()); return readBody(con.getErrorStream());
} }
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("API 요청과 응답 실패", e); throw new RuntimeException("API 요청과 응답 실패", e);
} finally { } finally {
con.disconnect(); con.disconnect();
} }
} }
public HttpURLConnection connect(String apiUrl) { public HttpURLConnection connect(String apiUrl) {
try { try {
URL url = new URL(apiUrl); URL url = new URL(apiUrl);
return (HttpURLConnection)url.openConnection(); return (HttpURLConnection) url.openConnection();
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e); throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e); throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
} }
} }
public String readBody(InputStream body) { public String readBody(InputStream body) {
InputStreamReader streamReader = new InputStreamReader(body); InputStreamReader streamReader = new InputStreamReader(body);
try(BufferedReader lineReader = new BufferedReader(streamReader)) { try (BufferedReader lineReader = new BufferedReader(streamReader)) {
StringBuilder responseBody = new StringBuilder(); StringBuilder responseBody = new StringBuilder();
String line; String line;
while ((line = lineReader.readLine()) != null) { while ((line = lineReader.readLine()) != null) {
responseBody.append(line); responseBody.append(line);
} }
return responseBody.toString(); return responseBody.toString();
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("API 응답을 읽는데 실패했습니다.", e); throw new RuntimeException("API 응답을 읽는데 실패했습니다.", e);
} }
} }
public List<BasFlightScheduleRs> findSchecdule(String searchDate) { public List<BasFlightScheduleRs> findSchecdule(String searchDate) {
@ -672,23 +672,24 @@ public class BasFlightService {
return schedule; return schedule;
} }
public JSONObject getWeather(BasFlightWeatherModel rq) throws IOException, ParseException {
StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst"); public JSONObject getWeather(BasFlightWeatherModel rq) throws IOException, ParseException {
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D"); StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst");
urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode(rq.getPageNo(),"UTF-8")); urlBuilder.append("?" + URLEncoder.encode("serviceKey", "UTF-8") + "=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D");
urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode(rq.getNumOfRows(), "UTF-8")); /*한 페이지 결과 수*/ urlBuilder.append("&" + URLEncoder.encode("pageNo", "UTF-8") + "=" + URLEncoder.encode(rq.getPageNo(), "UTF-8"));
urlBuilder.append("&" + URLEncoder.encode("dataType","UTF-8") + "=" + URLEncoder.encode("JSON", "UTF-8")); /*요청자료형식(XML/JSON) Default: XML*/ urlBuilder.append("&" + URLEncoder.encode("numOfRows", "UTF-8") + "=" + URLEncoder.encode(rq.getNumOfRows(), "UTF-8")); /*한 페이지 결과 수*/
urlBuilder.append("&" + URLEncoder.encode("base_date","UTF-8") + "=" + URLEncoder.encode(rq.getBase_date(), "UTF-8")); /*'21년 6월 28일 발표*/ urlBuilder.append("&" + URLEncoder.encode("dataType", "UTF-8") + "=" + URLEncoder.encode("JSON", "UTF-8")); /*요청자료형식(XML/JSON) Default: XML*/
urlBuilder.append("&" + URLEncoder.encode("base_time","UTF-8") + "=" + URLEncoder.encode(rq.getBase_time(), "UTF-8")); /*06시 발표(정시단위) */ urlBuilder.append("&" + URLEncoder.encode("base_date", "UTF-8") + "=" + URLEncoder.encode(rq.getBase_date(), "UTF-8")); /*'21년 6월 28일 발표*/
urlBuilder.append("&" + URLEncoder.encode("nx","UTF-8") + "=" + URLEncoder.encode(rq.getNx(), "UTF-8")); /*예보지점의 X 좌표값*/ urlBuilder.append("&" + URLEncoder.encode("base_time", "UTF-8") + "=" + URLEncoder.encode(rq.getBase_time(), "UTF-8")); /*06시 발표(정시단위) */
urlBuilder.append("&" + URLEncoder.encode("ny","UTF-8") + "=" + URLEncoder.encode(rq.getNy(), "UTF-8")); /*예보지점의 Y 좌표값*/ urlBuilder.append("&" + URLEncoder.encode("nx", "UTF-8") + "=" + URLEncoder.encode(rq.getNx(), "UTF-8")); /*예보지점의 X 좌표값*/
urlBuilder.append("&" + URLEncoder.encode("ny", "UTF-8") + "=" + URLEncoder.encode(rq.getNy(), "UTF-8")); /*예보지점의 Y 좌표값*/
URL url = new URL(urlBuilder.toString()); URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json"); conn.setRequestProperty("Content-type", "application/json");
log.info("Response code: " + conn.getResponseCode()); log.info("Response code: " + conn.getResponseCode());
BufferedReader rd; BufferedReader rd;
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) { if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else { } else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream())); rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
@ -700,26 +701,26 @@ public class BasFlightService {
sb.append(line); sb.append(line);
} }
CtrTrnsLctnModel weatherResult = ctrTrnsLctnService.convertLatlonToAddress(rq.getNx2(),rq.getNy2()); CtrTrnsLctnModel weatherResult = ctrTrnsLctnService.convertLatlonToAddress(rq.getNx2(), rq.getNy2());
log.info("weatherResult >>>> : {}", weatherResult); log.info("weatherResult >>>> : {}", weatherResult);
String str = sb.toString(); String str = sb.toString();
JSONParser parser = new JSONParser(); JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(str); JSONObject jsonObject = (JSONObject) parser.parse(str);
if(weatherResult != null) { if (weatherResult != null) {
jsonObject.put("area1",weatherResult.getArea1()); jsonObject.put("area1", weatherResult.getArea1());
jsonObject.put("area2",weatherResult.getArea2()); jsonObject.put("area2", weatherResult.getArea2());
jsonObject.put("area3",weatherResult.getArea3()); jsonObject.put("area3", weatherResult.getArea3());
jsonObject.put("landNm",weatherResult.getLandNm()); jsonObject.put("landNm", weatherResult.getLandNm());
jsonObject.put("landNum",weatherResult.getLandNum()); jsonObject.put("landNum", weatherResult.getLandNum());
} }
rd.close(); rd.close();
conn.disconnect(); conn.disconnect();
log.info(sb.toString()); log.info(sb.toString());
return jsonObject; return jsonObject;
} }
} }

2
pav-server/src/main/java/com/palnet/biz/jpa/entity/FltPlanArcrft.java

@ -97,7 +97,7 @@ public class FltPlanArcrft {
@Column(name="ACRFT_INSURANCE_YN") @Column(name="ACRFT_INSURANCE_YN")
private String acrftInsuranceYn; private String acrftInsuranceYn;
@Column(name="INSURANCE_EXPERIOD") @Column(name="INSURANCE_EXPERIOD", columnDefinition = "TIMESTAMP")
private Instant insuranceExperiod; private Instant insuranceExperiod;
@Column(name="CORPORATION_NM") @Column(name="CORPORATION_NM")

3
pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java

@ -1,14 +1,11 @@
package com.palnet.biz.jpa.repository.flt; package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.jpa.entity.FltPlanArea; import com.palnet.biz.jpa.entity.FltPlanArea;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface FltPlanAreaRepository extends JpaRepository<FltPlanArea, Integer> { public interface FltPlanAreaRepository extends JpaRepository<FltPlanArea, Integer> {
List<FltPlanArea> findByPlanSnoOrderByPlanAreaSnoAsc(Integer planSno); List<FltPlanArea> findByPlanSnoOrderByPlanAreaSnoAsc(Integer planSno);

2
pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java

@ -1,7 +1,6 @@
package com.palnet.biz.jpa.repository.flt; package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlSocketDataModel;
import com.palnet.biz.jpa.entity.FltPlanBas; import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
@ -10,7 +9,6 @@ import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.Instant; import java.time.Instant;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;

7
pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

@ -113,6 +113,9 @@ public class FltPlanQueryRepository {
bas.createDt, bas.createDt,
bas.updateUserId, bas.updateUserId,
bas.updateDt, bas.updateDt,
// kac 추가 필드
bas.corpRegYn,
bas.serviceType,
GroupBy.list(Projections.bean( GroupBy.list(Projections.bean(
BasFlightPlanAreaModel.class, BasFlightPlanAreaModel.class,
area.planAreaSno, area.planAreaSno,
@ -124,7 +127,9 @@ public class FltPlanQueryRepository {
area.createUserId, area.createUserId,
area.createDt, area.createDt,
area.updateUserId, area.updateUserId,
area.updateDt area.updateDt,
// kac 추가 필드
area.fltMothoeRm
).skipNulls()).as("areaList") ).skipNulls()).as("areaList")
)) ))
); );

23
pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCrtfyhpBasQueryRepository.java

@ -6,15 +6,15 @@ import com.palnet.biz.jpa.entity.QPtyCrtfyhpBas;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.jpa.impl.JPAQueryFactory; import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Calendar; import java.time.Instant;
import java.util.Date; import java.time.temporal.ChronoUnit;
import java.util.List; import java.util.List;
@Log4j2 @Slf4j
@Repository @Repository
@RequiredArgsConstructor @RequiredArgsConstructor
public class PtyCrtfyhpBasQueryRepository { public class PtyCrtfyhpBasQueryRepository {
@ -24,29 +24,22 @@ public class PtyCrtfyhpBasQueryRepository {
public List<PtyCrtfyhpBas> confirmSms(String hpno, String crtfyNo) { public List<PtyCrtfyhpBas> confirmSms(String hpno, String crtfyNo) {
QPtyCrtfyhpBas qEntity = QPtyCrtfyhpBas.ptyCrtfyhpBas; QPtyCrtfyhpBas qEntity = QPtyCrtfyhpBas.ptyCrtfyhpBas;
Date now = Calendar.getInstance().getTime(); Instant now = Instant.now();
Calendar calendar = Calendar.getInstance(); Instant prevTime = Instant.now().minus(5, ChronoUnit.MINUTES);
calendar.add(Calendar.MINUTE, -5);
Date prevTime = calendar.getTime();
BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder builder = new BooleanBuilder();
builder.and(qEntity.crtfyhpNo.eq(crtfyNo)); builder.and(qEntity.crtfyhpNo.eq(crtfyNo));
builder.and(qEntity.crtfyhpYn.eq("N")); builder.and(qEntity.crtfyhpYn.eq("N"));
// builder.and(qEntity.createDt.between(LocalDateTime.now().minusMinutes(5), LocalDateTime.now())); builder.and(qEntity.createDt.goe(prevTime));
builder.and(qEntity.createDt.goe(prevTime.toInstant())); builder.and(qEntity.createDt.loe(now));
builder.and(qEntity.createDt.loe(now.toInstant()));
List<PtyCrtfyhpBas> entity = List<PtyCrtfyhpBas> entity =
query.select(qEntity).from(qEntity) query.select(qEntity).from(qEntity)
.where(builder) .where(builder)
.orderBy(qEntity.createDt.desc()) .orderBy(qEntity.createDt.desc())
.fetch(); .fetch();
return entity; return entity;
} }

15
pav-server/src/main/java/com/palnet/pav/kac/api/flight/plan/controller/KacFlightPlanController.java

@ -0,0 +1,15 @@
package com.palnet.pav.kac.api.flight.plan.controller;
/**
* packageName : com.palnet.pav.kac.api.plan.controller
* fileName : KacPlanController
* author : dhji
* date : 2023-09-15(015)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-09-15(015) dhji 최초 생성
*/
public class KacFlightPlanController {
}

15
pav-server/src/main/java/com/palnet/pav/kac/api/flight/plan/model/KacFlightPlanModel.java

@ -0,0 +1,15 @@
package com.palnet.pav.kac.api.flight.plan.model;
/**
* packageName : com.palnet.pav.kac.api.flight.plan.model
* fileName : KacFlightPlanModel
* author : dhji
* date : 2023-09-15(015)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-09-15(015) dhji 최초 생성
*/
public class KacFlightPlanModel {
}

15
pav-server/src/main/java/com/palnet/pav/kac/api/flight/plan/service/KacFlightPlanService.java

@ -0,0 +1,15 @@
package com.palnet.pav.kac.api.flight.plan.service;
/**
* packageName : com.palnet.pav.kac.api.flight.plan.service
* fileName : KacFlightPlanService
* author : dhji
* date : 2023-09-15(015)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-09-15(015) dhji 최초 생성
*/
public class KacFlightPlanService {
}

49768
pav-server/src/main/resources/air/airgeo.json

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save