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. 8
      src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
  4. 52
      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;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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.parser.JSONParser;
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.core.env.Environment;
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.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.comn.model.ComnPagingRs;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
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.utils.AreaUtils;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@ -60,12 +66,14 @@ public class BasFlightController {
private final BasFlightService basFlightService;
private final Environment env;
private final CtrTrnsLctnService ctrTrnsLctnService;
private final AreaUtils utils;
@Autowired
public BasFlightController(BasFlightService basFlightService, Environment env, CtrTrnsLctnService ctrTrnsLctnService) {
public BasFlightController(BasFlightService basFlightService, Environment env, CtrTrnsLctnService ctrTrnsLctnService, AreaUtils AreaUtils) {
this.basFlightService = basFlightService;
this.env = env;
this.ctrTrnsLctnService = ctrTrnsLctnService;
this.utils = AreaUtils;
}
@GetMapping("/area")
@ -378,4 +386,19 @@ public class BasFlightController {
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.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
@ -183,8 +182,19 @@ public class BasFlightService {
}
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<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);
for(BasFlightPlanModel i : effectivePlanList) {
if(rq.getPlanSno().equals(i.getPlanSno()))return;
@ -247,18 +257,18 @@ public class BasFlightService {
overlapCheck = areaUtils.overlaps(rqCoordBufferList, effectiveCoordBufferList);
overlapCheck2 = areaUtils.overlaps(effectiveCoordBufferList, rqCoordBufferList);
if(overlapCheck || overlapCheck2) {
if((overlapCheck || overlapCheck2) && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
}
for(Coordinate coord : effectiveCoordBufferList) {
containCheck = areaUtils.contains(rqCoordBufferList, coord);
if(containCheck) {
if(containCheck && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
}
}
for(Coordinate coord : rqCoordBufferList) {
containCheck2 = areaUtils.contains(effectiveCoordBufferList , coord);
if(containCheck2) {
if(containCheck2 && isEqualsFltElev) {
throw new CustomException(ErrorCode.PLAN_DATA_DUPLICATE);
}
}

8
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 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.BasFlightPlanAreaModel;
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.FltPlanCtrCntrlRelRepository;
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.comn.model.GPHistoryModel;
import com.palnet.comn.utils.AreaUtils;
@ -355,7 +357,9 @@ public class CtrCntrlService {
arcrftList.forEach(arcrft -> {
FltPlanBas plan = planBasRepository.
findByGroupFlightPlan(arcrft.getPlanSno(), "Y", fltNowDt).orElse(null);
List<BasFlightPlanArcrftModel>arcrftMappingList = new ArrayList<>();
BasFlightPlanArcrftModel arcrftMapping = BasFlightMapper.mapper.entityToModel(arcrftBas);
arcrftMappingList.add(arcrftMapping);
if (plan != null) {
BasFlightPlanModel planMapping = BasFlightMapper.mapper.entityToModel(plan);
@ -398,6 +402,8 @@ public class CtrCntrlService {
// 비행 계획서에 구역 목록 저장
planMapping.setAreaList(areaMappingList);
planMapping.setArcrftList(arcrftMappingList);
}
rs.add(planMapping);

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

@ -244,10 +244,26 @@ public class FltPlanQueryRepository {
// 비행계획구역 설정시 같은 시간대에 구역이 중복되는지 조회
public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq){
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
List<BasFlightPlanModel> list = query
.select(Projections.bean(
.from(bas)
.leftJoin(area)
.on(bas.planSno.eq(area.planSno))
.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(bas.groupId.eq(rq.getGroupId())))
.transform(
GroupBy.groupBy(bas.planSno)
.list(Projections.bean(
BasFlightPlanModel.class,
bas.planSno,
bas.groupId,
@ -267,23 +283,23 @@ public class FltPlanQueryRepository {
bas.createUserId,
bas.createDt,
bas.updateUserId,
bas.updateDt
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")
))
.from(bas)
.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(bas.groupId.eq(rq.getGroupId())))
.fetch();
);
return list;
}
//CoordCheck에 들어갈 count

Loading…
Cancel
Save