|
|
@ -6,8 +6,11 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlPlanContainsRq; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlPlanContainsRq; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlPlanContainsRs; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlPlanContainsRs; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlBas; |
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlHstry; |
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlHstry; |
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlWarnLog; |
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlWarnLog; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryRepository; |
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogRepository; |
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogRepository; |
|
|
|
import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository; |
|
|
|
import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository; |
|
|
|
import com.palnet.biz.jpa.service.ctr.CtrCntrlJpaService; |
|
|
|
import com.palnet.biz.jpa.service.ctr.CtrCntrlJpaService; |
|
|
@ -26,6 +29,7 @@ import org.springframework.scheduling.annotation.Async; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.UUID; |
|
|
@ -35,6 +39,8 @@ import java.util.UUID; |
|
|
|
public class MessageServiceImpl implements MessageService { |
|
|
|
public class MessageServiceImpl implements MessageService { |
|
|
|
|
|
|
|
|
|
|
|
private final CtrCntrlService ctrCntrlService; |
|
|
|
private final CtrCntrlService ctrCntrlService; |
|
|
|
|
|
|
|
private final CtrCntrlBasRepository ctrCntrlBasRepository; |
|
|
|
|
|
|
|
private final CtrCntrlHstryRepository ctrCntrlHstryRepository; |
|
|
|
private final CtrCntrlJpaService ctrCntrlJpaService; |
|
|
|
private final CtrCntrlJpaService ctrCntrlJpaService; |
|
|
|
private final PtyDronQueryRepository ptyDronQueryRepository; |
|
|
|
private final PtyDronQueryRepository ptyDronQueryRepository; |
|
|
|
private final ControlGpsDataContext shareContext; |
|
|
|
private final ControlGpsDataContext shareContext; |
|
|
@ -46,6 +52,8 @@ public class MessageServiceImpl implements MessageService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MessageServiceImpl(CtrCntrlJpaService ctrCntrlJpaService, |
|
|
|
public MessageServiceImpl(CtrCntrlJpaService ctrCntrlJpaService, |
|
|
|
|
|
|
|
CtrCntrlBasRepository ctrCntrlBasRepository, |
|
|
|
|
|
|
|
CtrCntrlHstryRepository ctrCntrlHstryRepository, |
|
|
|
PtyDronQueryRepository ptyDronQueryRepository, |
|
|
|
PtyDronQueryRepository ptyDronQueryRepository, |
|
|
|
ControlGpsDataContext shareContext, |
|
|
|
ControlGpsDataContext shareContext, |
|
|
|
RabbitTemplate rabbitTemplate, |
|
|
|
RabbitTemplate rabbitTemplate, |
|
|
@ -55,6 +63,8 @@ public class MessageServiceImpl implements MessageService { |
|
|
|
AreaUtils areaUtils |
|
|
|
AreaUtils areaUtils |
|
|
|
) { |
|
|
|
) { |
|
|
|
this.ctrCntrlJpaService = ctrCntrlJpaService; |
|
|
|
this.ctrCntrlJpaService = ctrCntrlJpaService; |
|
|
|
|
|
|
|
this.ctrCntrlBasRepository = ctrCntrlBasRepository; |
|
|
|
|
|
|
|
this.ctrCntrlHstryRepository = ctrCntrlHstryRepository; |
|
|
|
this.ptyDronQueryRepository = ptyDronQueryRepository; |
|
|
|
this.ptyDronQueryRepository = ptyDronQueryRepository; |
|
|
|
this.shareContext = shareContext; |
|
|
|
this.shareContext = shareContext; |
|
|
|
this.rabbitTemplate = rabbitTemplate; |
|
|
|
this.rabbitTemplate = rabbitTemplate; |
|
|
@ -68,7 +78,29 @@ public class MessageServiceImpl implements MessageService { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
@Transactional(readOnly = true) |
|
|
|
@Transactional(readOnly = true) |
|
|
|
public GPModel mapper(GPModel model) { |
|
|
|
public GPModel mapper(GPModel model) { |
|
|
|
if(shareContext.getIndtfKey(model.getObjectId()) == null) { |
|
|
|
/* 식별번호의 가장 최근 이력 불러오기 */ |
|
|
|
|
|
|
|
CtrCntrlBas latestControl = ctrCntrlBasRepository.findFirstByIdntfNumOrderByCreateDtDesc(model.getObjectId()).orElse(null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boolean isControl = false; |
|
|
|
|
|
|
|
if(latestControl != null) { |
|
|
|
|
|
|
|
CtrCntrlHstry latestHistory = ctrCntrlHstryRepository.findFirstByCntrlIdOrderBySrvrRcvDtDesc(latestControl.getCntrlId()); |
|
|
|
|
|
|
|
long diffMinute = DateUtils.diffMinute(latestHistory.getSrvrRcvDt(), new Date()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if("01".equals(latestControl.getEndTypeCd()) || !"01".equals(latestControl.getEndTypeCd()) && diffMinute > 300) { |
|
|
|
|
|
|
|
isControl = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(!"01".equals(latestControl.getEndTypeCd()) && diffMinute < 300) { |
|
|
|
|
|
|
|
isControl = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
isControl = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(isControl) { |
|
|
|
|
|
|
|
model.setControlId(latestControl.getCntrlId()); |
|
|
|
|
|
|
|
model.setTypeCd("02"); |
|
|
|
|
|
|
|
model.setAreaTrnsYn("E"); |
|
|
|
|
|
|
|
} else { |
|
|
|
String controlID = UUID.randomUUID().toString(); |
|
|
|
String controlID = UUID.randomUUID().toString(); |
|
|
|
|
|
|
|
|
|
|
|
model.setControlId(controlID); |
|
|
|
model.setControlId(controlID); |
|
|
@ -78,12 +110,24 @@ public class MessageServiceImpl implements MessageService { |
|
|
|
|
|
|
|
|
|
|
|
// 기체 식별번호의 관제 ID 저장 (single ton)
|
|
|
|
// 기체 식별번호의 관제 ID 저장 (single ton)
|
|
|
|
shareContext.putIdntfKey(model.getObjectId(), controlID); |
|
|
|
shareContext.putIdntfKey(model.getObjectId(), controlID); |
|
|
|
} else { |
|
|
|
|
|
|
|
model.setControlId(shareContext.getIndtfKey(model.getObjectId())); |
|
|
|
|
|
|
|
model.setTypeCd("02"); |
|
|
|
|
|
|
|
model.setAreaTrnsYn("E"); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if(shareContext.getIndtfKey(model.getObjectId()) == null) {
|
|
|
|
|
|
|
|
// String controlID = UUID.randomUUID().toString();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// model.setControlId(controlID);
|
|
|
|
|
|
|
|
// model.setTypeCd("01");
|
|
|
|
|
|
|
|
// model.setAreaTrnsYn("N");
|
|
|
|
|
|
|
|
// model.setControlStartDt(DateUtils.getCurrentTime());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// // 기체 식별번호의 관제 ID 저장 (single ton)
|
|
|
|
|
|
|
|
// shareContext.putIdntfKey(model.getObjectId(), controlID);
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// model.setControlId(shareContext.getIndtfKey(model.getObjectId()));
|
|
|
|
|
|
|
|
// model.setTypeCd("02");
|
|
|
|
|
|
|
|
// model.setAreaTrnsYn("E");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// 비행구역 Contains Check
|
|
|
|
// 비행구역 Contains Check
|
|
|
|
List<BasFlightPlanModel> planList = ctrCntrlService.getFlightPlan(model.getObjectId()); |
|
|
|
List<BasFlightPlanModel> planList = ctrCntrlService.getFlightPlan(model.getObjectId()); |
|
|
|
|
|
|
|
|
|
|
|