From b64474d801f0a4a973c1c384b707b70a08875b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9E=AC=EC=9A=B0?= <박재우@DESKTOP-EF7ECBO> Date: Thu, 25 Aug 2022 18:59:01 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC=20,=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC=20=EB=AA=A8=EB=8D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/BasFlightPlanResultMessageRq.java | 12 + .../bas/flight/service/BasFlightService.java | 272 +++++++++--------- 2 files changed, 144 insertions(+), 140 deletions(-) create mode 100644 src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanResultMessageRq.java diff --git a/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanResultMessageRq.java b/src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanResultMessageRq.java new file mode 100644 index 0000000..9da2d4c --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java b/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java index d1913bc..86475fe 100644 --- a/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java +++ b/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java @@ -111,151 +111,143 @@ public class BasFlightService { // 비행계획서 등록 public boolean createPlan(BasFlightPlanModel rq) { // 비행계획서 등록 시 계획일자 중복 , 비행구역 중복 체크 - GeometryFactory geometryFactory = new GeometryFactory(); + GeometryFactory geometryFactory = new GeometryFactory(); List arcrftModelList = rq.getArcrftList(); - List areaModelList = rq.getAreaList(); - for(int i = 0; i < arcrftModelList.size(); i++) { + List 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; +// boolean dCheck = false; +// BasFlightPlanResultMessageRq dateCheck = dCheck; +// return dheck; + }else { - String idntfNum = arcrftModelList.get(i).getIdntfNum(); - int size = fltPlanQueryRepository.arcrftCheck(rq, idntfNum).size(); - if( size != 0) { - return false; - }else { - } - } - List coordList = new ArrayList<>(); - List bufferCoord = new ArrayList<>(); - - List queryList = fltPlanQueryRepository.CoordCheck(rq); - List 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 coordModelList = areaModelList.get(i).getCoordList(); - type = rq.getAreaList().get(i).getAreaType(); - bufferZone = rq.getAreaList().get(i).getBufferZone(); - Double lat; - Double lon; + } + } + List coordList = new ArrayList<>(); + List bufferCoord = new ArrayList<>(); + List queryList = fltPlanQueryRepository.CoordCheck(rq); + List 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 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 transCoordList = areaUtils.transform(coordList, "EPSG:4326", "EPSG:5181"); - if("LINE".equals(type)){ + for(int j = 0; j transCoordList = areaUtils.transform(coordList, "EPSG:4326", "EPSG:5181"); + if("LINE".equals(type)){ bufferCoord = areaUtils.buffer(transCoordList, bufferZone); - } - if("CIRCLE".equals(type)) { + } + 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 reverseBufferList = areaUtils.transform(bufferCoord, "EPSG:5181","EPSG:4326"); - int k=0; - for(int i = 0; i queryBufferCoord = new ArrayList<>(); - List 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 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 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 rqCooCheck = new ArrayList<>(); - List 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; - } - } - - - //비행계획서 + } + if("POLYGON".equals(type)) { + Polygon polygon = geometryFactory.createPolygon(coordList.toArray(new Coordinate[] {})); + Coordinate[] coords = polygon.getCoordinates(); + bufferCoord.addAll(Arrays.asList(coords)); + } + List reverseBufferList = areaUtils.transform(bufferCoord, "EPSG:5181","EPSG:4326"); + int k=0; + for(int i = 0; i queryBufferCoord = new ArrayList<>(); + List 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 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 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 rqCooCheck = new ArrayList<>(); + List 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");