Browse Source

drone 비행 종료 처리

feature/auth
노승철 2 years ago
parent
commit
fc81bc6cee
  1. 10
      src/main/java/com/palnet/biz/config/MessageConfig.java
  2. 7
      src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java
  3. 2
      src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java
  4. 10
      src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java
  5. 4
      src/main/java/com/palnet/biz/message/model/MessageDataShareContext.java
  6. 10
      src/main/java/com/palnet/biz/message/service/impl/MessageServiceImpl.java
  7. 10
      src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java
  8. 32
      src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java

10
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);

7
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<CtrCntrlBas, String>{
@Query("update CtrCntrlBas c " +
"SET c.endTypeCd = :endTypeCd, c.cntrlEndDt = :cntrlEndDt " +
"WHERE c.cntrlId = :cntrlId")
CtrCntrlBas updateCntrlEndType(String endTypeCd, String cntrlEndDt, String cntrlId);
}

2
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, Integer>{
CtrCntrlHstry findFirstByCntrlIdOrderBySrvrRcvDtDesc(String cntrlId);
}

10
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);
}

4
src/main/java/com/palnet/biz/message/model/MessageDataShareContext.java

@ -27,4 +27,8 @@ public class MessageDataShareContext {
return idntfKey.get(key);
}
public Map<String, String> getAllKeys() {
return idntfKey;
}
}

10
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
);
}
}

10
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초에 한번

32
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;
@ -44,6 +47,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<String, String> 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<String , GPModel> cicData = cic.getData();
GPModel model;
@ -93,7 +121,7 @@ public class CtrSchedulerService {
}
logger.debug("{removeInfo } collection size :: " + cicData.size() + "");
}
}*/
public void trnsLctnPrcss() {

Loading…
Cancel
Save