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 fa8936d..81c174d 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 @@ -10,6 +10,7 @@ import com.palnet.biz.jpa.entity.CtrCntrlBas; import org.springframework.transaction.annotation.Transactional; import java.util.Date; +import java.util.Optional; @Repository @@ -21,5 +22,7 @@ public interface CtrCntrlBasRepository extends JpaRepository findFirstByIdntfNumOrderByCreateDtDesc(String idntfNum); + } diff --git a/src/main/java/com/palnet/biz/message/service/impl/MessageServiceImpl.java b/src/main/java/com/palnet/biz/message/service/impl/MessageServiceImpl.java index da04676..cc09316 100644 --- a/src/main/java/com/palnet/biz/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/com/palnet/biz/message/service/impl/MessageServiceImpl.java @@ -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.CtrCntrlPlanContainsRs; 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.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.pty.PtyDronQueryRepository; 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.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -35,6 +39,8 @@ import java.util.UUID; public class MessageServiceImpl implements MessageService { private final CtrCntrlService ctrCntrlService; + private final CtrCntrlBasRepository ctrCntrlBasRepository; + private final CtrCntrlHstryRepository ctrCntrlHstryRepository; private final CtrCntrlJpaService ctrCntrlJpaService; private final PtyDronQueryRepository ptyDronQueryRepository; private final ControlGpsDataContext shareContext; @@ -46,6 +52,8 @@ public class MessageServiceImpl implements MessageService { public MessageServiceImpl(CtrCntrlJpaService ctrCntrlJpaService, + CtrCntrlBasRepository ctrCntrlBasRepository, + CtrCntrlHstryRepository ctrCntrlHstryRepository, PtyDronQueryRepository ptyDronQueryRepository, ControlGpsDataContext shareContext, RabbitTemplate rabbitTemplate, @@ -55,6 +63,8 @@ public class MessageServiceImpl implements MessageService { AreaUtils areaUtils ) { this.ctrCntrlJpaService = ctrCntrlJpaService; + this.ctrCntrlBasRepository = ctrCntrlBasRepository; + this.ctrCntrlHstryRepository = ctrCntrlHstryRepository; this.ptyDronQueryRepository = ptyDronQueryRepository; this.shareContext = shareContext; this.rabbitTemplate = rabbitTemplate; @@ -68,7 +78,29 @@ public class MessageServiceImpl implements MessageService { @Override @Transactional(readOnly = true) 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(); model.setControlId(controlID); @@ -78,12 +110,24 @@ public class MessageServiceImpl implements MessageService { // 기체 식별번호의 관제 ID 저장 (single ton) 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 List planList = ctrCntrlService.getFlightPlan(model.getObjectId());