diff --git a/pom.xml b/pom.xml
index 02234c3..d8cf678 100644
--- a/pom.xml
+++ b/pom.xml
@@ -188,7 +188,10 @@
json-simple
1.1.1
-
+
+ org.springframework.boot
+ spring-boot-starter-cache
+
diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
index 3d547ad..04f0255 100644
--- a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
+++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
@@ -9,6 +9,7 @@ import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
@@ -23,6 +24,7 @@ import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.locationtech.jts.geom.Coordinate;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -207,6 +209,7 @@ public class CtrCntrlService {
* @param cstmrSno
* @return
*/
+
public List getGroupAuthInfo() {
List list = query.findByGroupInfo();
@@ -254,7 +257,7 @@ public class CtrCntrlService {
*/
@Transactional
public List getArcrftWarnList(String id) {
- Map map = new HashMap<>();
+
List result = new ArrayList<>();
if ("".equals(id) || id == null) return null;
@@ -264,20 +267,19 @@ public class CtrCntrlService {
for (String cntrlId : ids) {
CtrCntrlArcrftWarnModel model = new CtrCntrlArcrftWarnModel();
- CtrCntrlBas control = cntrlBasRepository.findById(cntrlId).orElse(null);
- CtrCntrlHstry hisControl = cntrlHstryRepository.findFirstByCntrlIdOrderBySrvrRcvDtDesc(cntrlId).orElse(null);
-// List flightPlan = new ArrayList<>();
-// if (control != null) {
-// flightPlan = this.getFlightPlan(control.getIdntfNum());
-// }
- int planSno = relRepository.getPlanSno(control.getIdntfNum());
- FltPlanArea planAreaData = planAreaRepository.getPlanData(planSno);
+ String idntfNum = cntrlBasRepository.getIdntfNum(cntrlId);
+ CtrCntrlHstry hisControl = query.getWarnHstryList(cntrlId);
+
+ int planSno = relRepository.getPlanSno(idntfNum);
+ FltPlanArea planAreaData = query.getPlanData(planSno);
List coordList = planCoordRepository.getCoordinate(planAreaData.getPlanAreaSno());
-
+
CtrCntrlSocketContainsRq containsRq = new CtrCntrlSocketContainsRq();
- if (control != null) {
- containsRq.setIdntfNum(control.getIdntfNum());
+ if (idntfNum != null) {
+ containsRq.setIdntfNum(idntfNum);
+ model.setIdntfNum(idntfNum);
+ model.setCntrlId(cntrlId);
}
if (planAreaData != null) {
@@ -299,8 +301,8 @@ public class CtrCntrlService {
if (model.isControlWarnCd()) {
CtrCntrlWarnLog log = new CtrCntrlWarnLog();
- log.setCntrlId(control.getCntrlId());
- log.setIdntfNum(control.getIdntfNum());
+ log.setCntrlId(cntrlId);
+ log.setIdntfNum(idntfNum);
log.setOccurDt(hisControl.getSrvrRcvDt());
log.setLat(hisControl.getLat());
log.setLon(hisControl.getLon());
@@ -318,8 +320,6 @@ public class CtrCntrlService {
model.setCreateDt(warnLog.getCreateDt());
model.setCreateUserId(warnLog.getCreateUserId());
}
- model.setCntrlId(control.getCntrlId());
- model.setIdntfNum(control.getIdntfNum());
model.setWarnCount(warnCount);
result.add(model);
@@ -484,7 +484,6 @@ public class CtrCntrlService {
if (rq.getIdntfNum() != null) {
List planArea = new ArrayList<>();
-
for(FltPlanAreaCoord coord : rq.getCoordList()) {
Coordinate coordinate = new Coordinate(coord.getLon(), coord.getLat());
@@ -498,7 +497,6 @@ public class CtrCntrlService {
* 2. 비정상 상황 TYPE(비행구역, 공역)에 따라 구분 (미적용)
*/
boolean areaContains = true;
-// boolean airspaceContains = false;
switch(rq.getAreaType()) {
case "LINE" :
List transPlanArea = areaUtils.transform(planArea, "EPSG:4326", "EPSG:5181");
@@ -506,7 +504,6 @@ public class CtrCntrlService {
List transPlanBuffer = areaUtils.transform(planBuffer, "EPSG:5181", "EPSG:4326");
areaContains = areaUtils.contains(transPlanBuffer, targetCoord);
-// log.info("LINE CONTAINS : {}", areaContains);
break;
case "POLYGON" :
diff --git a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java
index 4765281..f9db9bd 100644
--- a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java
+++ b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java
@@ -41,4 +41,8 @@ public interface CtrCntrlBasRepository extends JpaRepository findCntrlId(@Param("cntrlStDt") Date cntrlStDt, @Param("cntrlEndDt") Date cntrlEndDt, @Param("idntfNum") String idntfNum);
+
+ @Query(value = " select IDNTF_NUM from CTR_CNTRL_BAS " +
+ "where CNTRL_ID = :cntrlId ", nativeQuery = true )
+ String getIdntfNum(@Param("cntrlId") String cntrlId);
}
diff --git a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java
index 24950a1..f7dfa4a 100644
--- a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java
+++ b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java
@@ -1,15 +1,22 @@
package com.palnet.biz.jpa.repository.ctr;
+import java.util.List;
+import java.util.Optional;
+
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.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.palnet.biz.jpa.entity.CtrCntrlHstry;
-import java.util.List;
-import java.util.Optional;
-
@Repository
public interface CtrCntrlHstryRepository extends JpaRepository{
+
Optional findFirstByCntrlIdOrderBySrvrRcvDtDesc(String cntrlId);
+
List findByCntrlIdOrderByHstrySno(String cntrlId);
+
+
}
diff --git a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
index 2db52f7..b1b9665 100644
--- a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
+++ b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
@@ -32,7 +32,9 @@ import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlEndModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.jpa.entity.ComArcrftBas;
import com.palnet.biz.jpa.entity.ComIdntfBas;
+import com.palnet.biz.jpa.entity.CtrCntrlHstry;
import com.palnet.biz.jpa.entity.CtrCntrlHstryArea;
+import com.palnet.biz.jpa.entity.FltPlanArea;
import com.palnet.biz.jpa.entity.FltPlanBas;
import com.palnet.biz.jpa.entity.FltPlanPilot;
import com.palnet.biz.jpa.entity.QComArcrftBas;
@@ -40,6 +42,7 @@ import com.palnet.biz.jpa.entity.QComIdntfBas;
import com.palnet.biz.jpa.entity.QCtrCntrlBas;
import com.palnet.biz.jpa.entity.QCtrCntrlHstry;
import com.palnet.biz.jpa.entity.QCtrCntrlHstryArea;
+import com.palnet.biz.jpa.entity.QFltPlanArea;
import com.palnet.biz.jpa.entity.QFltPlanBas;
import com.palnet.biz.jpa.entity.QFltPlanCtrCntrlRel;
import com.palnet.biz.jpa.entity.QPtyCstmrBas;
@@ -1179,6 +1182,49 @@ public List listCntrlHstry(String id){
}
+ public CtrCntrlHstry getWarnHstryList(String cntrlId) {
+ QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry;
+
+ BooleanBuilder builder = new BooleanBuilder();
+ builder.and(qCtrCntrHstry.cntrlId.eq(cntrlId));
+
+ CtrCntrlHstry result =
+ query.select(Projections.bean(CtrCntrlHstry.class,
+ qCtrCntrHstry.lat,
+ qCtrCntrHstry.lon,
+ qCtrCntrHstry.srvrRcvDt,
+ qCtrCntrHstry.elev
+ ))
+ .from(qCtrCntrHstry)
+ .where(builder)
+ .orderBy(qCtrCntrHstry.srvrRcvDt.desc())
+ .fetchFirst();
+
+ return result;
+
+ }
+
+ public FltPlanArea getPlanData(int planSno) {
+ QFltPlanArea qFltPlanArea = QFltPlanArea.fltPlanArea;
+
+ BooleanBuilder builder = new BooleanBuilder();
+ builder.and(qFltPlanArea.planSno.eq(planSno));
+
+ FltPlanArea result =
+ query.select(Projections.bean(FltPlanArea.class,
+ qFltPlanArea.planAreaSno,
+ qFltPlanArea.areaType,
+ qFltPlanArea.bufferZone
+ ))
+ .from(qFltPlanArea)
+ .where(builder)
+ .limit(1)
+ .fetchFirst();
+
+ return result;
+
+ }
+
/**
* 상세보기 조회
* 관제마스터 , 드론 , 드론운영자 정보 조회
@@ -1477,7 +1523,8 @@ public List listCntrlHstry(String id){
return list;
}
-
+
+ @Cacheable(value = "group-auth")
public List findByGroupInfo() {
QPtyCstmrGroup pcg = QPtyCstmrGroup.ptyCstmrGroup;
QPtyGroupBas pgb = QPtyGroupBas.ptyGroupBas;
@@ -1548,6 +1595,7 @@ public List listCntrlHstry(String id){
// public List findByGroupArcrft(String groupId) {
// public List findByGroupArcrft(String groupId, String groupAuthCd) {
+ @Cacheable(value = "group-arcrft")
public List findByGroupArcrft(String groupId) {
QComArcrftBas arcrftBas = QComArcrftBas.comArcrftBas;
QComIdntfBas idntfBas = QComIdntfBas.comIdntfBas;
@@ -1569,16 +1617,16 @@ public List listCntrlHstry(String id){
}
List arcrftList = query.select(Projections.bean(CtrCntrlGroupArcrftModel.class,
- arcrftBas.arcrftSno,
- arcrftBas.groupId,
- idntfBas.idntfNum,
- idntfBas.idntfTypeCd,
- idntfBas.ownerNm,
- arcrftBas.arcrftTypeCd,
- arcrftBas.arcrftModelNm,
- arcrftBas.prdctCmpnNm,
- idntfBas.createDt,
- idntfBas.updateDt
+// arcrftBas.arcrftSno,
+// arcrftBas.groupId,
+ idntfBas.idntfNum
+// idntfBas.idntfTypeCd,
+// idntfBas.ownerNm,
+// arcrftBas.arcrftTypeCd,
+// arcrftBas.arcrftModelNm,
+// arcrftBas.prdctCmpnNm,
+// idntfBas.createDt,
+// idntfBas.updateDt
))
.from(arcrftBas)
.leftJoin(idntfBas)
diff --git a/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java b/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java
index ad8f5c6..98098fd 100644
--- a/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java
+++ b/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java
@@ -20,5 +20,5 @@ public interface FltPlanAreaRepository extends JpaRepository transform(List coordList, String from, String to) {
CRSFactory factory = new CRSFactory();