From fc81bc6cee89f8a42a138fc37655ca5798bbb817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?scnoh=28=EB=85=B8=EC=8A=B9=EC=B2=A0=29?= Date: Tue, 12 Jul 2022 14:02:06 +0900 Subject: [PATCH] =?UTF-8?q?drone=20=EB=B9=84=ED=96=89=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/palnet/biz/config/MessageConfig.java | 10 +++--- .../repository/ctr/CtrCntrlBasRepository.java | 7 ++++ .../ctr/CtrCntrlHstryRepository.java | 2 +- .../biz/message/consumer/MessageConsumer.java | 10 +++++- .../model/MessageDataShareContext.java | 4 +++ .../service/impl/MessageServiceImpl.java | 10 +++++- .../biz/scheduler/ctr/CtrScheduler.java | 10 +++--- .../ctr/service/CtrSchedulerService.java | 32 +++++++++++++++++-- 8 files changed, 70 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/palnet/biz/config/MessageConfig.java b/src/main/java/com/palnet/biz/config/MessageConfig.java index e7533dd..a29ecd4 100644 --- a/src/main/java/com/palnet/biz/config/MessageConfig.java +++ b/src/main/java/com/palnet/biz/config/MessageConfig.java @@ -17,10 +17,10 @@ public class MessageConfig { this.env = env; } -// @Bean -// public CachingConnectionFactory cachingConnectionFactory() { -// return new CachingConnectionFactory(); -// } + @Bean + public CachingConnectionFactory cachingConnectionFactory() { + return new CachingConnectionFactory(); + } @Bean public Jackson2JsonMessageConverter converter() { @@ -62,7 +62,7 @@ public class MessageConfig { } @Bean - public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, Jackson2JsonMessageConverter converter) { + public RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory, Jackson2JsonMessageConverter converter) { RabbitTemplate rabbitTemplate = new RabbitTemplate(); rabbitTemplate.setConnectionFactory(connectionFactory); 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 c267aad..30227c6 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 @@ -1,11 +1,18 @@ package com.palnet.biz.jpa.repository.ctr; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import com.palnet.biz.jpa.entity.CtrCntrlBas; + @Repository public interface CtrCntrlBasRepository extends JpaRepository{ + + @Query("update CtrCntrlBas c " + + "SET c.endTypeCd = :endTypeCd, c.cntrlEndDt = :cntrlEndDt " + + "WHERE c.cntrlId = :cntrlId") + CtrCntrlBas updateCntrlEndType(String endTypeCd, String cntrlEndDt, 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 01c5a9c..cd7b108 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 @@ -7,5 +7,5 @@ import com.palnet.biz.jpa.entity.CtrCntrlHstry; @Repository public interface CtrCntrlHstryRepository extends JpaRepository{ - + CtrCntrlHstry findFirstByCntrlIdOrderBySrvrRcvDtDesc(String cntrlId); } diff --git a/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java b/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java index 03b806d..0722410 100644 --- a/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java +++ b/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java @@ -27,7 +27,15 @@ public class MessageConsumer { @RabbitHandler @RabbitListener(queues = {"app.drone.queue"}) - public void receivedDroneMessage(final GPDatabaseModel model) { + public void receivedDroneMessage(final String message) { + GPDatabaseModel model = new GPDatabaseModel(); + + try { + model = objectMapper.readValue(message, GPDatabaseModel.class); + } catch (IOException e) { + e.printStackTrace(); + } + messageService.insert(model); } diff --git a/src/main/java/com/palnet/biz/message/model/MessageDataShareContext.java b/src/main/java/com/palnet/biz/message/model/MessageDataShareContext.java index 581ce0c..5249cf7 100644 --- a/src/main/java/com/palnet/biz/message/model/MessageDataShareContext.java +++ b/src/main/java/com/palnet/biz/message/model/MessageDataShareContext.java @@ -27,4 +27,8 @@ public class MessageDataShareContext { return idntfKey.get(key); } + public Map getAllKeys() { + return idntfKey; + } + } 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 4115482..7530942 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 @@ -78,10 +78,18 @@ public class MessageServiceImpl implements MessageService { } public void sendToWebsocket(GPDatabaseModel model) { + String s =""; + + try { + s = objectMapper.writeValueAsString(model); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + /* Websocket 서버로 전달 할 드론 데이터 */ rabbitTemplate.convertAndSend( Objects.requireNonNull(env.getProperty("message.websocket.queue-name")), - model + s ); } } diff --git a/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java b/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java index 3308547..f96d657 100644 --- a/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java +++ b/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java @@ -28,11 +28,11 @@ public class CtrScheduler { * 실행 시점 : 10초에 한번 * 실행 내용 : 특정시간 들어오지 않는 데이터 삭제 처리 */ -// @Scheduled(fixedDelay = 1000 * 10) -// public void removeCollection() { -// logger.debug("=================== {removeCollection} ===================== "); -// service.removeInfo(); -// } + @Scheduled(fixedDelay = 1000 * 60) + public void removeCollection() { + logger.debug("=================== {removeCollection} ===================== "); + service.remove(); + } /** * 실행 시점 : 10초에 한번 diff --git a/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java b/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java index 8ba4a62..b4b0b31 100644 --- a/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java +++ b/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java @@ -6,6 +6,9 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentLinkedQueue; +import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; +import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryRepository; +import com.palnet.biz.message.model.MessageDataShareContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +46,15 @@ public class CtrSchedulerService { @Autowired private PtyDronQueryRepository dronQuery; + + @Autowired + private MessageDataShareContext dataShareContext; + + @Autowired + private CtrCntrlHstryRepository ctrCntrlHstryRepository; + + @Autowired + private CtrCntrlBasRepository ctrCntrlBasRepository; private Logger logger = LoggerFactory.getLogger(getClass()); @@ -65,7 +77,23 @@ public class CtrSchedulerService { * 2) 마지막 데이터 속도가 0 , 고도가 0 (현재 적용 X) * @param minute */ - public void removeInfo() { + public void remove() { + Map keys = dataShareContext.getAllKeys(); + + keys.forEach((key, value) -> { + CtrCntrlHstry history = ctrCntrlHstryRepository.findFirstByCntrlIdOrderBySrvrRcvDtDesc(value); + + long diffMinute = DateUtils.diffMinute(history.getSrvrRcvDt(), new Date()); + if(diffMinute > GP_REMOVE_TIME) { + ctrCntrlBasRepository.updateCntrlEndType("99", DateUtils.getCurrentTime(), history.getCntrlId()); + + dataShareContext.removeIdntfKey(key); + } + }); + } + + + /*public void removeInfo() { Map cicData = cic.getData(); GPModel model; @@ -93,7 +121,7 @@ public class CtrSchedulerService { } logger.debug("{removeInfo } collection size :: " + cicData.size() + ""); - } + }*/ public void trnsLctnPrcss() {