ItsApiAfterTaskCompleted.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.its.op.scheduler;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.its.op.dto.its.oper.TbUserMsgDto;
  5. import com.its.op.websocket.ItsWebSocketMessage;
  6. import com.its.op.websocket.ItsWebSocketSessionManager;
  7. import lombok.RequiredArgsConstructor;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springframework.scheduling.annotation.Async;
  10. import org.springframework.stereotype.Component;
  11. import org.springframework.web.socket.TextMessage;
  12. import javax.annotation.PostConstruct;
  13. @Slf4j
  14. @RequiredArgsConstructor
  15. @Component
  16. public class ItsApiAfterTaskCompleted {
  17. private final ItsWebSocketSessionManager itsWebSocketSessionManager;
  18. private ObjectMapper mapper;
  19. @PostConstruct
  20. public void init() {
  21. this.mapper = new ObjectMapper();
  22. }
  23. @Async
  24. public void executeFcltUserMsgNotify(Long msgNmbr) {
  25. // 시설물 사용자 유지보수 메시지 작성 완료 후 웹소켓으로 접속한 사용자에게 통보
  26. try {
  27. int broadcastCount = 0;
  28. TbUserMsgDto.TbUserMsgNotify msg = TbUserMsgDto.TbUserMsgNotify.builder()
  29. .msgNmbr(msgNmbr)
  30. .build();
  31. ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("fcltUserMsg", msg);
  32. String itsSttsJsonData = this.mapper.writeValueAsString(itsMessage);
  33. broadcastCount = this.itsWebSocketSessionManager.sendBroadcastUserMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
  34. if (broadcastCount > 0) {
  35. log.info("executeFcltUserMsgNotify: {} EA.", broadcastCount);
  36. }
  37. }
  38. catch(JsonProcessingException e){
  39. log.error("ItsApiAfterTaskCompleted: executeFcltUserMsgNotify Json parsing Exception");
  40. }
  41. catch (Exception ea) {
  42. log.error("ItsApiAfterTaskCompleted: Exception");
  43. }
  44. }
  45. }