|
|
|
@ -20,7 +20,7 @@ import com.palnet.comn.utils.AreaUtils;
|
|
|
|
|
import com.palnet.comn.utils.DateUtils; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.locationtech.jts.geom.Coordinate; |
|
|
|
|
import org.locationtech.jts.geom.GeometryFactory; |
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
@ -178,7 +178,7 @@ public class CtrCntrlService {
|
|
|
|
|
*/ |
|
|
|
|
public List<CtrCntrlWarnLogModel> getWarnLog(String controlId) { |
|
|
|
|
List<CtrCntrlWarnLog> logs = warnLogRepository.findAllByCntrlId(controlId); |
|
|
|
|
List<CtrCntrlWarnLogModel> warnLog = new ArrayList<CtrCntrlWarnLogModel>(); |
|
|
|
|
List<CtrCntrlWarnLogModel> warnLog = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
for (CtrCntrlWarnLog log : logs) { |
|
|
|
|
CtrCntrlWarnLogModel model = new CtrCntrlWarnLogModel(); |
|
|
|
@ -190,10 +190,17 @@ public class CtrCntrlService {
|
|
|
|
|
|
|
|
|
|
warnLog.add(model); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return warnLog; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* TODO 기체 별 최신 비정상 로그 및 비정상 로그 전체 개수 |
|
|
|
|
* @param id |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Transactional |
|
|
|
|
public List<CtrCntrlArcrftWarnModel> getArcrftWarnList(String id) { |
|
|
|
|
Map<String, CtrCntrlArcrftWarnModel> map = new HashMap<>(); |
|
|
|
|
List<CtrCntrlArcrftWarnModel> result = new ArrayList<>(); |
|
|
|
@ -206,10 +213,39 @@ public class CtrCntrlService {
|
|
|
|
|
CtrCntrlArcrftWarnModel model = new CtrCntrlArcrftWarnModel(); |
|
|
|
|
|
|
|
|
|
CtrCntrlBas control = cntrlBasRepository.findById(cntrlId).orElse(null); |
|
|
|
|
CtrCntrlHstry hisControl = cntrlHstryRepository.findFirstByCntrlIdOrderBySrvrRcvDtDesc(cntrlId).orElse(null); |
|
|
|
|
|
|
|
|
|
if (hisControl != null) { |
|
|
|
|
List<BasFlightPlanModel> flightPlan = this.getFlightPlan(control.getIdntfNum()); |
|
|
|
|
|
|
|
|
|
if (flightPlan != null && !flightPlan.isEmpty()) { |
|
|
|
|
CtrCntrlPlanContainsRq containsRq = new CtrCntrlPlanContainsRq(); |
|
|
|
|
containsRq.setIdntfNum(control.getIdntfNum()); |
|
|
|
|
containsRq.setLat(hisControl.getLat()); |
|
|
|
|
containsRq.setLon(hisControl.getLon()); |
|
|
|
|
containsRq.setPlanList(flightPlan); |
|
|
|
|
|
|
|
|
|
CtrCntrlPlanContainsRs ctrCntrlPlanContainsRs = this.checkPlanContains(containsRq); |
|
|
|
|
model.setControlWarnCd(ctrCntrlPlanContainsRs.isWarning()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (model.isControlWarnCd()) { |
|
|
|
|
CtrCntrlWarnLog log = new CtrCntrlWarnLog(); |
|
|
|
|
|
|
|
|
|
log.setCntrlId(control.getCntrlId()); |
|
|
|
|
log.setIdntfNum(control.getIdntfNum()); |
|
|
|
|
log.setOccurDt(hisControl.getSrvrRcvDt()); |
|
|
|
|
log.setLat(hisControl.getLat()); |
|
|
|
|
log.setLon(hisControl.getLon()); |
|
|
|
|
log.setElev(hisControl.getElev()); |
|
|
|
|
log.setCreateDt(DateUtils.nowDate()); |
|
|
|
|
log.setWarnType("PLAN"); |
|
|
|
|
warnLogRepository.save(log); |
|
|
|
|
} |
|
|
|
|
CtrCntrlWarnLog warnLog = warnLogRepository.findFirstByCntrlIdOrderByOccurDtDesc(cntrlId); |
|
|
|
|
Integer warnCount = warnLogRepository.countByCntrlId(cntrlId); |
|
|
|
|
|
|
|
|
|
if(control != null) { |
|
|
|
|
if (warnLog != null) { |
|
|
|
|
model.setWarnType(warnLog.getWarnType()); |
|
|
|
|
model.setOccurDt(warnLog.getOccurDt()); |
|
|
|
@ -220,10 +256,8 @@ public class CtrCntrlService {
|
|
|
|
|
model.setCntrlId(control.getCntrlId()); |
|
|
|
|
model.setIdntfNum(control.getIdntfNum()); |
|
|
|
|
model.setWarnCount(warnCount); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
result.add(model); |
|
|
|
|
// map.put(cntrlId, model);
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
@ -343,25 +377,20 @@ public class CtrCntrlService {
|
|
|
|
|
List<Coordinate> transPlanBuffer = areaUtils.transform(planBuffer, "EPSG:5181", "EPSG:4326"); |
|
|
|
|
|
|
|
|
|
areaContains = areaUtils.contains(transPlanBuffer, targetCoord); |
|
|
|
|
log.info("LINE CONTAINS : {}", areaContains); |
|
|
|
|
// airspaceContains = areaUtils.contains(targetCoord);
|
|
|
|
|
// log.info("LINE CONTAINS : {}", areaContains);
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ("POLYGON".equals(area.getAreaType())) { |
|
|
|
|
planArea.add(planArea.get(0)); |
|
|
|
|
areaContains = areaUtils.contains(planArea, targetCoord); |
|
|
|
|
// airspaceContains = areaUtils.contains(targetCoord);
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ("CIRCLE".equals(area.getAreaType())) { |
|
|
|
|
List<Coordinate> circle = areaUtils.createCircle(planArea.get(0), area.getBufferZone()); |
|
|
|
|
// List<Coordinate> transCircle = areaUtils.transform(circle, "EPSG:5181", "EPSG:4326");
|
|
|
|
|
|
|
|
|
|
areaContains = areaUtils.contains(circle, targetCoord); |
|
|
|
|
// airspaceContains = areaUtils.contains(targetCoord);
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// if(areaContains || !airspaceContains) countSuccess++;
|
|
|
|
|
if (areaContains) countSuccess++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -380,6 +409,12 @@ public class CtrCntrlService {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* TODO |
|
|
|
|
* |
|
|
|
|
* @param id |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public Map<String, String> getId(String id) { |
|
|
|
|
Map<String, String> result = new HashMap<>(); |
|
|
|
|
|
|
|
|
@ -394,7 +429,7 @@ public class CtrCntrlService {
|
|
|
|
|
|
|
|
|
|
if (latestHistory != null) { |
|
|
|
|
long diffMinute = DateUtils.diffMinute(latestHistory.getSrvrRcvDt(), new Date()); |
|
|
|
|
log.info("DIFF MINUTE : {}", diffMinute); |
|
|
|
|
// log.info("DIFF MINUTE : {}", diffMinute);
|
|
|
|
|
|
|
|
|
|
if ("01".equals(latestControl.getEndTypeCd()) || diffMinute > 5) { |
|
|
|
|
isControl = false; |
|
|
|
|