Browse Source

flightPlanModel에 arcrftList set 추가

feature/remove-rabbit
qkr7828(박재우) 1 year ago
parent
commit
845a2f152d
  1. 53
      src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  2. 18
      src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java
  3. 10
      src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
  4. 66
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

53
src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java

@ -1,27 +1,23 @@
package com.palnet.biz.api.bas.flight.controller; package com.palnet.biz.api.bas.flight.controller;
import java.io.*; import java.io.BufferedReader;
import java.net.HttpURLConnection; import java.io.IOException;
import java.net.URL; import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
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.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.BasFlightScheduleRs;
import com.palnet.biz.api.bas.flight.model.BasFlightWeatherModel;
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlWeatherModel;
import com.palnet.biz.scheduler.ctr.model.CtrTrnsLctnModel;
import com.palnet.biz.scheduler.ctr.service.CtrTrnsLctnService;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser; import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException; import org.json.simple.parser.ParseException;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.proj4j.BasicCoordinateTransform;
import org.locationtech.proj4j.CRSFactory;
import org.locationtech.proj4j.CoordinateReferenceSystem;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
@ -39,12 +35,22 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
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.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.BasFlightScheduleRs;
import com.palnet.biz.api.bas.flight.model.BasFlightWeatherModel;
import com.palnet.biz.api.bas.flight.service.BasFlightService; import com.palnet.biz.api.bas.flight.service.BasFlightService;
import com.palnet.biz.api.comn.model.ComnPagingRs; import com.palnet.biz.api.comn.model.ComnPagingRs;
import com.palnet.biz.api.comn.response.BasicResponse; import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse; import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse; import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.scheduler.ctr.service.CtrTrnsLctnService;
import com.palnet.comn.exception.CustomException; import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.AreaUtils;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -60,12 +66,14 @@ public class BasFlightController {
private final BasFlightService basFlightService; private final BasFlightService basFlightService;
private final Environment env; private final Environment env;
private final CtrTrnsLctnService ctrTrnsLctnService; private final CtrTrnsLctnService ctrTrnsLctnService;
private final AreaUtils utils;
@Autowired @Autowired
public BasFlightController(BasFlightService basFlightService, Environment env, CtrTrnsLctnService ctrTrnsLctnService) { public BasFlightController(BasFlightService basFlightService, Environment env, CtrTrnsLctnService ctrTrnsLctnService, AreaUtils AreaUtils) {
this.basFlightService = basFlightService; this.basFlightService = basFlightService;
this.env = env; this.env = env;
this.ctrTrnsLctnService = ctrTrnsLctnService; this.ctrTrnsLctnService = ctrTrnsLctnService;
this.utils = AreaUtils;
} }
@GetMapping("/area") @GetMapping("/area")
@ -378,4 +386,19 @@ public class BasFlightController {
return ResponseEntity.ok().body(new SuccessResponse<List>(response)); return ResponseEntity.ok().body(new SuccessResponse<List>(response));
} }
//test
@GetMapping("/test")
public void createCircleTest(@RequestParam double getX, @RequestParam double getY, @RequestParam double buffer) {
Coordinate circleCoord = new Coordinate(getX, getY);
List<Coordinate> transCoord = new ArrayList<Coordinate>();
transCoord.add(circleCoord);
transCoord = utils.transform(transCoord, "EPSG:4326", "EPSG:5181");
List<Coordinate> coordList = utils.createCircle(transCoord.get(0), buffer);
coordList = utils.transform(coordList, "EPSG:5181", "EPSG:4326");
for(Coordinate a : coordList) {
System.out.println(a.getX() + ", " + a.getY());
}
}
} }

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

@ -4,7 +4,6 @@ import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
@ -183,8 +182,19 @@ public class BasFlightService {
} }
public void planValid(BasFlightPlanModel rq) { public void planValid(BasFlightPlanModel rq) {
boolean isEqualsFltElev = false;
List<BasFlightPlanAreaModel> rqAreaList = rq.getAreaList();
String rqFltElev = rqAreaList.get(0).getFltElev();
List<BasFlightPlanModel> effectivePlanList = fltPlanQueryRepository.CoordCheck(rq); List<BasFlightPlanModel> effectivePlanList = fltPlanQueryRepository.CoordCheck(rq);
List<BasFlightPlanAreaModel> effectivePlanArea = new ArrayList<>();
for(BasFlightPlanModel plan : effectivePlanList) {
effectivePlanArea.addAll(plan.getAreaList());
}
for(BasFlightPlanAreaModel area : effectivePlanArea) {
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;
@ -247,18 +257,18 @@ public class BasFlightService {
overlapCheck = areaUtils.overlaps(rqCoordBufferList, effectiveCoordBufferList); overlapCheck = areaUtils.overlaps(rqCoordBufferList, effectiveCoordBufferList);
overlapCheck2 = areaUtils.overlaps(effectiveCoordBufferList, rqCoordBufferList); overlapCheck2 = areaUtils.overlaps(effectiveCoordBufferList, rqCoordBufferList);
if(overlapCheck || overlapCheck2) { 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) { 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) { if(containCheck2 && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE); throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
} }
} }

10
src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java

@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
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.BasFlightPlanAreaCoordModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel;
@ -66,6 +67,7 @@ import com.palnet.biz.jpa.repository.flt.FltPlanAreaRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanBasRepository; import com.palnet.biz.jpa.repository.flt.FltPlanBasRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanCtrCntrlRelRepository; import com.palnet.biz.jpa.repository.flt.FltPlanCtrCntrlRelRepository;
import com.palnet.biz.scheduler.ctr.model.CtrTrnsLctnModel; import com.palnet.biz.scheduler.ctr.model.CtrTrnsLctnModel;
import com.palnet.biz.scheduler.ctr.service.CtrSchedulerService;
import com.palnet.biz.scheduler.ctr.service.CtrTrnsLctnService; import com.palnet.biz.scheduler.ctr.service.CtrTrnsLctnService;
import com.palnet.comn.model.GPHistoryModel; import com.palnet.comn.model.GPHistoryModel;
import com.palnet.comn.utils.AreaUtils; import com.palnet.comn.utils.AreaUtils;
@ -355,7 +357,9 @@ public class CtrCntrlService {
arcrftList.forEach(arcrft -> { arcrftList.forEach(arcrft -> {
FltPlanBas plan = planBasRepository. FltPlanBas plan = planBasRepository.
findByGroupFlightPlan(arcrft.getPlanSno(), "Y", fltNowDt).orElse(null); findByGroupFlightPlan(arcrft.getPlanSno(), "Y", fltNowDt).orElse(null);
List<BasFlightPlanArcrftModel>arcrftMappingList = new ArrayList<>();
BasFlightPlanArcrftModel arcrftMapping = BasFlightMapper.mapper.entityToModel(arcrftBas);
arcrftMappingList.add(arcrftMapping);
if (plan != null) { if (plan != null) {
BasFlightPlanModel planMapping = BasFlightMapper.mapper.entityToModel(plan); BasFlightPlanModel planMapping = BasFlightMapper.mapper.entityToModel(plan);
@ -398,8 +402,10 @@ public class CtrCntrlService {
// 비행 계획서에 구역 목록 저장 // 비행 계획서에 구역 목록 저장
planMapping.setAreaList(areaMappingList); planMapping.setAreaList(areaMappingList);
planMapping.setArcrftList(arcrftMappingList);
} }
rs.add(planMapping); rs.add(planMapping);
} }
}); });

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

@ -244,33 +244,11 @@ public class FltPlanQueryRepository {
// 비행계획구역 설정시 같은 시간대에 구역이 중복되는지 조회 // 비행계획구역 설정시 같은 시간대에 구역이 중복되는지 조회
public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq){ public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq){
QFltPlanArea area = QFltPlanArea.fltPlanArea; QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord;
QFltPlanBas bas = QFltPlanBas.fltPlanBas; QFltPlanBas bas = QFltPlanBas.fltPlanBas;
List<BasFlightPlanModel> list = query List<BasFlightPlanModel> list = query
.select(Projections.bean(
BasFlightPlanModel.class,
bas.planSno,
bas.groupId,
bas.cstmrSno,
bas.memberName,
bas.email,
bas.hpno,
bas.clncd,
bas.addr,
bas.addrDtlCn,
bas.zip,
bas.schFltStDt,
bas.schFltEndDt,
bas.fltPurpose,
bas.aprvlYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
bas.updateDt
))
.from(bas) .from(bas)
.leftJoin(area)
.on(bas.planSno.eq(area.planSno))
.where((((bas.schFltStDt.loe(rq.getSchFltStDt())) .where((((bas.schFltStDt.loe(rq.getSchFltStDt()))
.and(bas.schFltEndDt.goe(rq.getSchFltEndDt()))) .and(bas.schFltEndDt.goe(rq.getSchFltEndDt())))
.or((bas.schFltStDt.goe(rq.getSchFltStDt())) .or((bas.schFltStDt.goe(rq.getSchFltStDt()))
@ -283,7 +261,45 @@ public class FltPlanQueryRepository {
.and(bas.schFltEndDt.loe(rq.getSchFltEndDt())))) .and(bas.schFltEndDt.loe(rq.getSchFltEndDt()))))
.and(bas.delYn.eq("N")) .and(bas.delYn.eq("N"))
.and(bas.groupId.eq(rq.getGroupId()))) .and(bas.groupId.eq(rq.getGroupId())))
.fetch(); .transform(
GroupBy.groupBy(bas.planSno)
.list(Projections.bean(
BasFlightPlanModel.class,
bas.planSno,
bas.groupId,
bas.cstmrSno,
bas.memberName,
bas.email,
bas.hpno,
bas.clncd,
bas.addr,
bas.addrDtlCn,
bas.zip,
bas.schFltStDt,
bas.schFltEndDt,
bas.fltPurpose,
bas.aprvlYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
bas.updateDt,
GroupBy.list(Projections.bean(
BasFlightPlanAreaModel.class,
area.planAreaSno,
area.planSno,
area.areaType,
area.fltMethod,
area.bufferZone,
area.fltElev,
area.createUserId,
area.createDt,
area.updateUserId,
area.updateDt
).skipNulls()).as("areaList")
))
);
return list; return list;
} }
//CoordCheck에 들어갈 count //CoordCheck에 들어갈 count

Loading…
Cancel
Save