@ -252,7 +252,7 @@ public class CtrCntrlService {
/ * *
/ * *
* TODO 기체 별 최신 비정상 로그 및 비정상 로그 전체 개수
* TODO 비행계획서에 등록 된 기체 별 최신 비정상 로그 및 비정상 로그 전체 개수
*
*
* @param id
* @param id
* @return
* @return
@ -264,20 +264,20 @@ public class CtrCntrlService {
if ( "" . equals ( id ) | | id = = null ) return null ;
if ( "" . equals ( id ) | | id = = null ) return null ;
String [ ] ids = id . indexOf ( "," ) > - 1 ? id . split ( "," ) : new String [ ] { id } ;
String [ ] ids = id . indexOf ( "," ) > - 1 ? id . split ( "," ) : new String [ ] { id } ; // 식별번호(cntrlId)가 여러개일 경우 콤마 구분자로 나눠 배열에 저장
for ( String cntrlId : ids ) {
for ( String cntrlId : ids ) {
CtrCntrlArcrftWarnModel model = new CtrCntrlArcrftWarnModel ( ) ;
CtrCntrlArcrftWarnModel model = new CtrCntrlArcrftWarnModel ( ) ;
String idntfNum = cntrlBasRepository . getIdntfNum ( cntrlId ) ;
String idntfNum = cntrlBasRepository . getIdntfNum ( cntrlId ) ; //이미 Socket에서 payload의 trim에 따라 cntrlBas에 식별번호가 PA로 시작하는 데이터가 insert 되어 있음. 이 데이터 중 매개변수로 들어온 id와 일치하는 cntrlBas의 식별번호를 가져옴
CtrCntrlHstry hisControl = query . getWarnHstryList ( cntrlId ) ;
CtrCntrlHstry hisControl = query . getWarnHstryList ( cntrlId ) ; // repo method 이름을 왜 이렇게 지었는지는 모르겠으나.. cntrlBas에 insert될 때 같이 insert되는 cntrlHstry 데이터 중 가장 마지막에 찍힌 hstry 로그를 가져옴
int planSno = relRepository . getPlanSno ( idntfNum ) . orElse ( 0 ) ;
int planSno = relRepository . getPlanSno ( idntfNum ) . orElse ( 0 ) ; // cntrlBas insert될때 같이 insert된 mapping 테이블에서 식별번호로 planSno 가져옴
if ( query . checkPlanSno ( planSno ) < 1 ) continue ;
if ( query . checkPlanSno ( planSno ) < 1 ) continue ;
FltPlanArea planAreaData = query . getPlanData ( planSno ) ;
FltPlanArea planAreaData = query . getPlanData ( planSno ) ; // planSno에 맞는 비헹계획서의 비행계획경로정보 가져옴
List < FltPlanAreaCoord > coordList = planCoordRepository . getCoordinate ( planAreaData . getPlanAreaSno ( ) ) ;
List < FltPlanAreaCoord > coordList = planCoordRepository . getCoordinate ( planAreaData . getPlanAreaSno ( ) ) ; // 비행계획서에 등록한 경로의 좌표 전부를 가져옴
CtrCntrlSocketContainsRq containsRq = new CtrCntrlSocketContainsRq ( ) ;
CtrCntrlSocketContainsRq containsRq = new CtrCntrlSocketContainsRq ( ) ;
if ( idntfNum ! = null ) {
if ( idntfNum ! = null ) {
@ -300,10 +300,10 @@ public class CtrCntrlService {
containsRq . setCoordList ( coordList ) ;
containsRq . setCoordList ( coordList ) ;
}
}
CtrCntrlPlanContainsRs ctrCntrlPlanContainsRs = this . checkSocketContains ( containsRq ) ;
CtrCntrlPlanContainsRs ctrCntrlPlanContainsRs = this . checkSocketContains ( containsRq ) ; // 위의 정보를 기반으로 만들어진 비행계획서 경로와 rq의 좌표를 비교해서 정상 비행 여부 확인
model . setControlWarnCd ( ctrCntrlPlanContainsRs . isWarning ( ) ) ;
model . setControlWarnCd ( ctrCntrlPlanContainsRs . isWarning ( ) ) ;
if ( model . isControlWarnCd ( ) ) {
if ( model . isControlWarnCd ( ) ) { // 정상 비행이 아니라면 warning log 생성
CtrCntrlWarnLog log = new CtrCntrlWarnLog ( ) ;
CtrCntrlWarnLog log = new CtrCntrlWarnLog ( ) ;
log . setCntrlId ( cntrlId ) ;
log . setCntrlId ( cntrlId ) ;
log . setIdntfNum ( idntfNum ) ;
log . setIdntfNum ( idntfNum ) ;
@ -315,10 +315,10 @@ public class CtrCntrlService {
log . setWarnType ( "PLAN" ) ;
log . setWarnType ( "PLAN" ) ;
warnLogRepository . save ( log ) ;
warnLogRepository . save ( log ) ;
}
}
CtrCntrlWarnLog warnLog = warnLogRepository . findFirstByCntrlIdOrderByOccurDtDesc ( cntrlId ) ;
CtrCntrlWarnLog warnLog = warnLogRepository . findFirstByCntrlIdOrderByOccurDtDesc ( cntrlId ) ; // 가장 마지막에 쌓인 warnLog 가져옴
Integer warnCount = warnLogRepository . countByCntrlId ( cntrlId ) ;
Integer warnCount = warnLogRepository . countByCntrlId ( cntrlId ) ; // warnLog 누적 카운트 가져옴
if ( warnLog ! = null ) {
if ( warnLog ! = null ) { // front에 표출할 warnLog 정보 set
model . setWarnType ( warnLog . getWarnType ( ) ) ;
model . setWarnType ( warnLog . getWarnType ( ) ) ;
model . setOccurDt ( warnLog . getOccurDt ( ) ) ;
model . setOccurDt ( warnLog . getOccurDt ( ) ) ;
model . setCreateDt ( warnLog . getCreateDt ( ) ) ;
model . setCreateDt ( warnLog . getCreateDt ( ) ) ;