OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-27 567e3003494f2a1ea56591299fc46575b7cb3965
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package kr.wisestone.owl.scheduler;
 
import kr.wisestone.owl.domain.Workspace;
import kr.wisestone.owl.service.*;
import kr.wisestone.owl.config.websocket.WebSocketService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
 
 
@Component
public class Scheduler {
 
    private static final Logger log = LoggerFactory.getLogger(Scheduler.class);
 
    @Autowired
    private PaymentService paymentService;
 
    @Autowired
    private WorkspaceService workspaceService;
 
    @Autowired
    private SystemEmailService systemEmailService;
 
    @Autowired
    private AttachedFileService attachedFileService;
 
    @Autowired
    private UserService userService;
 
    @Autowired
    private IssueService issueService;
 
    @Autowired
    private WebSocketService webSocketService;
 
    @Value("${use.scheduler}")
    private boolean bUseScheduler;
 
    //  OWL ITS 관련자들에게 회원 가입 정보를 전달한다.
    @Scheduled(cron = "0 0 17 * * *")
    public void sendOwlManager() {
        if (!bUseScheduler) {
            return;
        }
        //  OWL ITS 관련자들에게 회원 가입 정보를 전달한다.
        this.userService.sendUserJoinStatisticsEmail();
 
        //  OWL ITS 관련자들에게 시스템 현황 정보를 전달한다.
        this.userService.sendTotalStatisticsEmail();
    }
 
    /*@Scheduled(cron = "0 50 23 * * *")    //  매 시간 (초, 분, 시, 일, 월, 년)
    public void updateExchangeRatePayment() {
        //  변경된 환율 정보를 결제 금액에 업데이트한다.
        this.paymentService.updateExchangeRatePayment();
    }*/
 
    //   자동 결재 - 어제가 만료일인 업무 공간을 찾아서 결제한다. 새벽 1시에 실행
    /*@Scheduled(cron = "0 0 01 * * *")    //  매 시간 (초, 분, 시, 일, 월, 년)
    public void subscribePayment() {
        List<Workspace> workspaces = this.workspaceService.findSubscribeImmediateExpireDate();
 
        for (Workspace workspace : workspaces) {
            this.paymentService.subscribeImmediate(workspace);
        }
    }*/
 
    //  이슈와 연결되지 않은 첨부파일 삭제 - 이슈 생성, 수정에서 에디트 창에 첨부했다가 저장하지 않은 파일들... 새벽 1시 30분에 실행
    @Scheduled(cron = "0 30 01 * * *")
    public void deleteAttachedFileNotIdAndReservationIssue() {
        if (!bUseScheduler) {
            return;
        }
        //  이슈와 연결되지 않은 첨부파일 삭제
        this.attachedFileService.deleteAttachedFileNotId();
        //  이슈 예약 발생한 항목을 찾아 이슈를 다시 생성 상태로 변경한다.
        this.issueService.reservationIssue();
    }
 
    //  업무 공간 자동 초기화 - 어제가 만료일인 업무 공간을 찾아서 업무 공간 사용자, 사용 용량을 초기화한다. 새벽 2시에 실행
    /*@Scheduled(cron = "0 0 02 * * *")
    public void expireWorkspace() {
        //  사용 기간이 만료된 업무 공간을 찾아 용량, 최대 사용자, 서비스 유형을 변경한다.
        this.workspaceService.expireWorkspace();
        //  업무 공간 만료 예정 안내
        this.workspaceService.expireAlarmWorkspace();
    }*/
 
    //  이메일 예약 발송 - 사용자가 설정한 알림 시간에 시스템에서 일어난 이벤트를 이메일로 발송한다. - 매시간 30분에 실행
    @Scheduled(cron = "0 0/30 * * * *")
    public void smartEmailSystem() {
        if (!bUseScheduler) {
            return;
        }
        //  예약된 이메일 발송
        this.systemEmailService.reservationSendEmail();
    }
 
    //  이메일 실시간 발송 - 1분마다 실행
    @Scheduled(cron = "0 * * * * *")
    public void realTimeEmailSystem() {
        if (!bUseScheduler) {
            return;
        }
        //  실시간 이메일 발송
        this.systemEmailService.realTimeSendEmail();
    }
 
    //  15초 마다 접속자 확인
    /*@Scheduled(fixedDelay = 15000)
    public void pingUsers() {
        //  접속 사용자를 확인한다.
        this.webSocketService.checkActiveUser();
    }*/
}