Browse Source

Merge branch 'master' of http://gitea.palntour.com/pav/pav-server

feature/auth
노승철 2 years ago
parent
commit
0e55f8bf47
  1. 16
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordQueryList.java
  2. 15
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordRq.java
  3. 12
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanResultMessageRq.java
  4. 188
      src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java
  5. 11
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanArcrftRepository.java
  6. 7
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaCoordRepository.java
  7. 22
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java
  8. 115
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java
  9. 4
      src/main/java/com/palnet/comn/utils/FlightUtils.java

16
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordQueryList.java

@ -0,0 +1,16 @@
package com.palnet.biz.api.bas.flight.model;
import java.util.List;
import org.locationtech.jts.geom.Coordinate;
import lombok.Data;
@Data
public class BasFlightPlanAreaCoordQueryList {
private Integer planAreaCoordSno;
private Integer planAreaSno;
private List<Coordinate> queryCoordList;
}

15
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordRq.java

@ -0,0 +1,15 @@
package com.palnet.biz.api.bas.flight.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasFlightPlanAreaCoordRq {
private Integer planAreaSno;
private Integer bufferZone;
private double lat;
private double lon;
private String areaType;
private Integer cnt;
}

12
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanResultMessageRq.java

@ -0,0 +1,12 @@
package com.palnet.biz.api.bas.flight.model;
import lombok.Data;
@Data
public class BasFlightPlanResultMessageRq {
private boolean dateCheck;
private boolean areaCheck;
private boolean finalCheck;
}

188
src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java

@ -1,22 +1,45 @@
package com.palnet.biz.api.bas.flight.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Polygon;
import org.springframework.stereotype.Service;
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.*;
import com.palnet.biz.jpa.entity.*;
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.BasFlightPlanResultMessageRq;
import com.palnet.biz.jpa.entity.FltPlanArcrft;
import com.palnet.biz.jpa.entity.FltPlanArea;
import com.palnet.biz.jpa.entity.FltPlanAreaCoord;
import com.palnet.biz.jpa.entity.FltPlanBas;
import com.palnet.biz.jpa.entity.FltPlanPilot;
import com.palnet.biz.jpa.repository.com.ComArcrftBasRepository;
import com.palnet.biz.jpa.repository.flt.*;
import com.palnet.biz.jpa.repository.flt.FltPlanArcrftRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanAreaCoordRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanAreaRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanBasRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanPilotRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
import com.palnet.comn.utils.AreaUtils;
import com.palnet.comn.utils.EncryptUtils;
import com.palnet.comn.utils.FlightUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.locationtech.jts.geom.Coordinate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Log4j2
@ -44,11 +67,11 @@ public class BasFlightService {
// 비행계획서 상세 조회
public BasFlightPlanModel detailPlan(Integer planSno) {
BasFlightPlanModel rs = new BasFlightPlanModel();
BasFlightPlanModel rs = new BasFlightPlanModel();
// 비행계획서
FltPlanBas planEntity = fltPlanBasRepository.findByPlanSnoAndDelYnNot(planSno, "Y").orElse(null);
if(planEntity != null){
rs = BasFlightMapper.mapper.entityToModel(planEntity);
rs = BasFlightMapper.mapper.entityToModel(planEntity);
// 버퍼영역
List<FltPlanArea> areaEntityList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(planSno);
if (areaEntityList != null && !areaEntityList.isEmpty()) {
@ -88,7 +111,141 @@ public class BasFlightService {
// 비행계획서 등록
public boolean createPlan(BasFlightPlanModel rq) {
// 비행계획서
// 비행계획서 등록 시 계획일자 중복 , 비행구역 중복 체크
GeometryFactory geometryFactory = new GeometryFactory();
List<BasFlightPlanArcrftModel> arcrftModelList = rq.getArcrftList();
List<BasFlightPlanAreaModel> areaModelList = rq.getAreaList();
for(int i = 0; i < arcrftModelList.size(); i++) {
String idntfNum = arcrftModelList.get(i).getIdntfNum();
int size = fltPlanQueryRepository.arcrftCheck(rq, idntfNum).size();
if( size != 0) {
BasFlightPlanResultMessageRq dateCheck = new BasFlightPlanResultMessageRq();
dateCheck.setDateCheck(false);
return false;
}else {
}
}
List<Coordinate> coordList = new ArrayList<>();
List<Coordinate> bufferCoord = new ArrayList<>();
List<BasFlightPlanAreaCoordRq> queryList = fltPlanQueryRepository.CoordCheck(rq);
List<BasFlightPlanAreaCoordRq> queryCount = fltPlanQueryRepository.CoordCount(rq);
String type = null;
String queryType = null;
Integer bufferZone = null;
Integer queryBufferZone = null;
Coordinate queryCoord = null;
Coordinate coord = null;
for(int i = 0; i<arcrftModelList.size(); i++) {
List<BasFlightPlanAreaCoordModel> coordModelList = areaModelList.get(i).getCoordList();
type = rq.getAreaList().get(i).getAreaType();
bufferZone = rq.getAreaList().get(i).getBufferZone();
Double lat;
Double lon;
for(int j = 0; j<coordModelList.size(); j++) {
lat = rq.getAreaList().get(i).getCoordList().get(j).getLat();
lon = rq.getAreaList().get(i).getCoordList().get(j).getLon();
coord = new Coordinate(lon , lat);
coordList.add(coord);
}
if("POLYGON".equals(type)) {
coord = new Coordinate(rq.getAreaList().get(i).getCoordList().get(0).getLon(),rq.getAreaList().get(i).getCoordList().get(0).getLat());
coordList.add(coord);
}
}
List<Coordinate> transCoordList = areaUtils.transform(coordList, "EPSG:4326", "EPSG:5181");
if("LINE".equals(type)){
bufferCoord = areaUtils.buffer(transCoordList, bufferZone);
}
if("CIRCLE".equals(type)) {
bufferCoord = areaUtils.createCircle(coord, bufferZone);
}
if("POLYGON".equals(type)) {
Polygon polygon = geometryFactory.createPolygon(coordList.toArray(new Coordinate[] {}));
Coordinate[] coords = polygon.getCoordinates();
bufferCoord.addAll(Arrays.asList(coords));
}
List<Coordinate> reverseBufferList = areaUtils.transform(bufferCoord, "EPSG:5181","EPSG:4326");
int k=0;
for(int i = 0; i<queryCount.size(); i++) {
List<Coordinate> queryBufferCoord = new ArrayList<>();
List<Coordinate> queryCoordList = new ArrayList<>();
queryType = queryCount.get(i).getAreaType();
queryBufferZone = queryCount.get(i).getBufferZone();
for(int j=0; j< queryCount.get(i).getCnt(); j++) {
Double lat = queryList.get(k).getLat();
Double lon = queryList.get(k).getLon();
System.out.println(lon + "," + lat);
k++;
queryCoord = new Coordinate(lon , lat);
queryCoordList.add(queryCoord);
}
List<Coordinate> transQueryCoordList = areaUtils.transform(queryCoordList, "EPSG:4326", "EPSG:5181");
if("LINE".equals(queryType)){
queryBufferCoord = areaUtils.buffer(transQueryCoordList, queryBufferZone);
}
if("CIRCLE".equals(queryType)) {
queryBufferCoord = areaUtils.createCircle(queryCoord, queryBufferZone);
}
if("POLYGON".equals(queryType)) {
queryCoord = new Coordinate(queryCoordList.get(0).getX(),queryCoordList.get(0).getY());
queryCoordList.add(queryCoord);
Polygon polygon = geometryFactory.createPolygon(queryCoordList.toArray(new Coordinate[] {}));
Coordinate[] coords = polygon.getCoordinates();
queryBufferCoord.addAll(Arrays.asList(coords));
}
List<Coordinate> reverseQueryBufferList = areaUtils.transform(queryBufferCoord, "EPSG:5181","EPSG:4326");
queryCoord = new Coordinate(reverseQueryBufferList.get(0).getX(),reverseQueryBufferList.get(0).getY());
reverseQueryBufferList.add(queryCoord);
Coordinate[] rqPoly= null;
Coordinate[] queryPoly= null;
boolean rqContains = false;
boolean queryContains = false;
List<Coordinate> rqCooCheck = new ArrayList<>();
List<Coordinate> queryCooCheck = new ArrayList<>();
if("LINE".equals(type)) {
rqPoly = reverseBufferList.toArray(new Coordinate[] {});
} else {
rqPoly = bufferCoord.toArray(new Coordinate[] {});
}
if("LINE".equals(queryType)) {
queryPoly = reverseQueryBufferList.toArray(new Coordinate[] {});
} else {
queryPoly = queryBufferCoord.toArray(new Coordinate[] {});
}
for(Coordinate co : rqPoly) {
Coordinate coo = new Coordinate(co.x , co.y);
rqCooCheck.add(coo);
}
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
for(Coordinate co : queryPoly) {
Coordinate coo = new Coordinate(co.x , co.y);
queryCooCheck.add(coo);
}
for(Coordinate co : queryPoly) {
Coordinate coo = new Coordinate(co.x , co.y);
boolean Q = areaUtils.contains(rqCooCheck, coo);
if(Q == true) {
rqContains = true;
break;
}
}
for(Coordinate co : rqPoly) {
Coordinate coo = new Coordinate(co.x , co.y);
boolean Q = areaUtils.contains(queryCooCheck, coo);
if(Q == true) {
queryContains = true;
break;
}
}
boolean check = FlightUtils.overlaps(rqPoly, queryPoly);
boolean checks = FlightUtils.overlaps(queryPoly, rqPoly);
if(check == true || checks == true || rqContains == true || queryContains == true) {
return false;
}
}
//비행계획서
String userId = jwtTokenUtil.getCstmrSnoByToken().toString();
FltPlanBas basEntity = BasFlightMapper.mapper.modelToEntity(rq);
basEntity.setDelYn("N");
@ -98,7 +255,6 @@ public class BasFlightService {
FltPlanBas rBasEntity = fltPlanBasRepository.save(basEntity);
Integer planSno = rBasEntity.getPlanSno();
// 비행구역
List<BasFlightPlanAreaModel> areaModelList = rq.getAreaList();
if (areaModelList != null && !areaModelList.isEmpty()) {
for (BasFlightPlanAreaModel areaModel : areaModelList) {
FltPlanArea areaEntity = BasFlightMapper.mapper.modelToEntity(areaModel);
@ -133,7 +289,6 @@ public class BasFlightService {
// 기체
List<BasFlightPlanArcrftModel> arcrftModelList = rq.getArcrftList();
if (arcrftModelList != null && !arcrftModelList.isEmpty()) {
for (BasFlightPlanArcrftModel arcrftModel : arcrftModelList) {
FltPlanArcrft arcrftEntity = BasFlightMapper.mapper.modelToEntity(arcrftModel);
@ -222,7 +377,7 @@ public class BasFlightService {
if(pilotEntity == null){
pilotEntity = BasFlightMapper.mapper.modelToEntity(pilotModel);
pilotEntity.setUpdateUserId(userId);
// pilotEntity.setCreateUserId(userId);
pilotEntity.setCreateUserId(userId);
}else {
BasFlightMapper.mapper.updateEntityByModel(pilotEntity, pilotModel);
@ -248,6 +403,7 @@ public class BasFlightService {
if(arcrftEntity == null){
arcrftEntity = BasFlightMapper.mapper.modelToEntity(arcrftModel);
arcrftEntity.setUpdateUserId(userId);
arcrftEntity.setCreateUserId(userId);
}else {
BasFlightMapper.mapper.updateEntityByModel(arcrftEntity, arcrftModel);
}

11
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanArcrftRepository.java

@ -1,13 +1,22 @@
package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.jpa.entity.FltPlanArcrft;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
public interface FltPlanArcrftRepository extends JpaRepository<FltPlanArcrft, Integer> {
List<FltPlanArcrft> findByPlanSnoOrderByPlanArcrftSnoAsc(Integer planSno);
@Query("select f from FltPlanArcrft f " +
"where f.arcrftModelNm = :arcrftModelNm ")
List<FltPlanArcrft> findByarcrftModelNm(String arcrftModelNm);
List<FltPlanArcrft> findByIdntfNumAndArcrftSnoOrderByPlanArcrftSnoAsc(String idntfNum, Integer acrftSno);
}

7
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaCoordRepository.java

@ -2,11 +2,18 @@ package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.jpa.entity.FltPlanAreaCoord;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.locationtech.jts.geom.Coordinate;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
public interface FltPlanAreaCoordRepository extends JpaRepository<FltPlanAreaCoord, Integer> {
List<FltPlanAreaCoord> findByPlanAreaSnoOrderByPlanAreaCoordSnoAsc(Integer planAreaSno);
@Query("Select lat, lon from FltPlanAreaCoord ")
Coordinate[] findCoord();
}

22
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java

@ -1,5 +1,6 @@
package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
@ -13,7 +14,22 @@ import java.util.List;
import java.util.Optional;
public interface FltPlanBasRepository extends JpaRepository<FltPlanBas, Integer> {
@Query("select f from FltPlanBas f " +
"where ((SCH_FLT_ST_DT <= :schFltStDt and SCH_FLT_END_DT >= :schFltEndDt)"
+ "or (SCH_FLT_ST_DT >= :schFltStDt and (SCH_FLT_ST_DT <= :schFltEndDt and SCH_FLT_END_DT >= :schFltEndDt ))"
+ "or ((SCH_FLT_ST_DT <= :schFltStDt and SCH_FLT_END_DT >= :schFltStDt) and SCH_FLT_END_DT <= :schFltEndDt)"
+ "or (SCH_FLT_ST_DT >= :schFltStDt and SCH_FLT_END_DT <= :schFltEndDt)) and DEL_YN='N'")
List<FltPlanBas> findByStartEndDate(@Param("schFltStDt") Date schFltStDt,@Param("schFltEndDt") Date schFltEndDt);
// @Query("select f from FltPlanBas f " +
// "where f.schFltStDt >= :schFltStDt " +
// "and f.schFltEndDt <= :schFltEndDt "+
// "and f.delYn = 'N'")
// List<FltPlanBas> findByDate(@Param("schFltStDt") Date schFltStDt, @Param("schFltEndDt") Date schFltEndDt);
//
Optional<FltPlanBas> findByPlanSnoAndDelYnNot(Integer planSno, String delYn);
@Query("select f from FltPlanBas f " +
@ -24,10 +40,12 @@ public interface FltPlanBasRepository extends JpaRepository<FltPlanBas, Integer>
Optional<FltPlanBas> findByGroupFlightPlan(@Param("planSno") Integer planSno,
@Param("aprvlYn") String aprvlYn,
@Param("fltNowDt") Date fltNowDt);
@Transactional
@Modifying
@Query("update FltPlanBas f set f.aprvlYn = :aprvlYn where f.planSno in :planSno")
int updateAprvlYnByPlanSnoIn(@Param("planSno") List<Integer> planSnos, @Param("aprvlYn") String aprvlYn);
}

115
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

@ -4,10 +4,12 @@ import com.palnet.biz.api.bas.flight.model.*;
import com.palnet.biz.jpa.entity.*;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.group.GroupBy;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -26,7 +28,7 @@ public class FltPlanQueryRepository {
public List<BasFlightPlanModel> listPlan(BasFlightPlanListRq rq) {
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
QFltPlanArea area = QFltPlanArea.fltPlanArea;
BooleanBuilder builder = new BooleanBuilder();
if (rq.getGroupId() != null) {
@ -50,7 +52,7 @@ public class FltPlanQueryRepository {
builder.and(bas.aprvlYn.eq(rq.getAprvlYn()));
}
builder.and(bas.delYn.ne("Y"));
List<BasFlightPlanModel> r = query
.from(bas)
.leftJoin(area)
@ -98,7 +100,110 @@ public class FltPlanQueryRepository {
return r;
}
//동일 기체 등록시 비행시간 중복여부 조회
public List<BasFlightPlanModel> arcrftCheck(BasFlightPlanModel rq, String idntfNum){
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
List<BasFlightPlanModel> list = query
.select(Projections.bean(
BasFlightPlanModel.class,
bas.schFltStDt,
bas.schFltEndDt,
bas.delYn
))
.from(bas)
.leftJoin(arcrft)
.on(bas.planSno.eq(arcrft.planSno))
.where(arcrft.idntfNum.eq(idntfNum)
.and(((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt()))
.and((bas.schFltStDt.loe(rq.getSchFltEndDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt()))))
.or(((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltStDt())))
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt()))))
.and(bas.delYn.eq("N")))
.fetch();
return list;
}
// 비행계획구역 설정시 같은 시간대에 구역이 중복되는지 조회
public List<BasFlightPlanAreaCoordRq> CoordCheck(BasFlightPlanModel rq){
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
List<BasFlightPlanAreaCoordRq> list = query
.select(Projections.bean(
BasFlightPlanAreaCoordRq.class,
coord.lon,
coord.lat,
area.bufferZone,
area.areaType,
area.planAreaSno
))
.from(bas)
.leftJoin(area)
.on(bas.planSno.eq(area.planSno))
.leftJoin(coord)
.on(area.planAreaSno.eq(coord.planAreaSno))
.where((((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt()))
.and((bas.schFltStDt.loe(rq.getSchFltEndDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt()))))
.or(((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltStDt())))
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt()))))
.and(bas.delYn.eq("N"))
.and(((coord.lon.goe(0.1))
.and(coord.lat.goe(0.1)))))
.fetch();
return list;
}
//CoordCheck에 들어갈 count
public List<BasFlightPlanAreaCoordRq> CoordCount(BasFlightPlanModel rq){
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
List<BasFlightPlanAreaCoordRq> list = query
.select(Projections.bean(
BasFlightPlanAreaCoordRq.class,
coord.lon,
coord.lat,
area.bufferZone,
area.areaType,
area.planAreaSno.count().intValue().as("cnt")
))
.from(bas)
.leftJoin(area)
.on(bas.planSno.eq(area.planSno))
.leftJoin(coord)
.on(area.planAreaSno.eq(coord.planAreaSno))
.where((((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt()))
.and((bas.schFltStDt.loe(rq.getSchFltEndDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt()))))
.or(((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltStDt())))
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt()))))
.and(bas.delYn.eq("N"))
.and(((coord.lon.goe(0.1))
.and(coord.lat.goe(0.1)))))
.groupBy(area.planAreaSno)
.fetch();
return list;
}
// 조종사 조회
public List<BasFlightPlanPilotModel> listPilot(String groupId) {
// QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas;
@ -131,7 +236,7 @@ public class FltPlanQueryRepository {
.fetch();
return r;
}
// 기체 조회
public List<BasFlightPlanArcrftModel> listArcrft(String groupId) {
QComArcrftBas arcrft = QComArcrftBas.comArcrftBas;
@ -139,7 +244,7 @@ public class FltPlanQueryRepository {
QComIdntfBas idntf = QComIdntfBas.comIdntfBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(group.groupId.eq(groupId));
builder.and(group.groupId.eq(groupId)).and(idntf.idntfNum.isNotNull());
List<BasFlightPlanArcrftModel> models = query.select(Projections.bean(
BasFlightPlanArcrftModel.class,

4
src/main/java/com/palnet/comn/utils/FlightUtils.java

@ -1,5 +1,7 @@
package com.palnet.comn.utils;
import java.util.List;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.CoordinateSequence;
import org.locationtech.jts.geom.Geometry;
@ -69,7 +71,7 @@ public class FlightUtils {
return contains;
}
//생성된 버퍼좌표와 공역의 좌표가 충돌하는지를 판단하는 유틸
public static boolean overlaps(Coordinate[] bufferCoords, Coordinate[] overlapCoords) {
public static boolean overlaps(Coordinate[] bufferCoords,Coordinate[] overlapCoords) {
GeometryFactory geometryFactory = new GeometryFactory();

Loading…
Cancel
Save