Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.corporation.module.schedullers;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.List;
- import java.util.concurrent.TimeUnit;
- /**
- * Цикличная проверка отклика системы управления вентиляцией
- *
- * Если поле даты не обновлялось на текущее время более чем 15 минут,
- * отправляется сообщение на почту с запросом о проверке именно этой системы управления
- * @author kozlov_sv
- * @since 24.06.2018
- */
- @Component
- public class VentCheckScheduller {
- /**
- * Логгер
- */
- private static Logger logger = LoggerFactory.getLogger(VentCheckScheduller.class);
- /**
- * Mongo template
- */
- @Autowired
- MongoTemplate mongoTemplate;
- /**
- * Библиотека для работы с почтой
- */
- @Autowired
- public JavaMailSender javaMailSender;
- /**
- * Репозиторий с данными по системе управления вентиляцией
- */
- @Autowired
- private final VentConfigRepository ventConfigRepository;
- /**
- * Проверка работоспособности системы управления вентиляцией
- */
- @Scheduled(fixedRate = 600000, initialDelay = 5000) //Проверка осуществляется раз в 10 минут с задержкой в 5 секунд
- public void sendMail() {
- try {
- logger.debug("*** Iteration start ***");
- //Получаем все записи репозитория с конфигурацией вентиляции
- List<VentConfig> ventConfigs = ventConfigRepository.findAll();
- for (VentConfig ventConfig : ventConfigs) {
- logger.info("Current config: " + ventConfig.toString());
- //Получаем текущее время свервера
- Calendar thisServerInstance = Calendar.getInstance();
- Date currentServerDate = thisServerInstance.getTime();
- logger.info("Server time: " + currentServerDate);
- if(ventConfig.getDateIncome != null && ventConfig.getId != null){
- //Получаем время последней активности системы управления вентиляцией
- Date ventLastDate = ventConfig.getDateIncome();
- logger.info("Ventilation system last activeness time :" + ventLastDate);
- // Получаем разницу между текущим временем и временем последней активности
- Long diffInMinutes = getDateDiff(ventLastDate, currentServerDate, TimeUnit.MINUTES);
- logger.info("Difference in minutes : " + diffInMinutes);
- // В случае, если разница составляет 15 и более минут, отправляем письмо системным администраторам,
- // осуществляющим поддержку системы управления вентиляцией.
- if (differenceInMinutes >= 15) {
- MailInfoModel mailInfoModel = new MailInfoModel();
- mailInfoModel.setText("Vent control system error. Please, check control system №" + ventConfig.getId);
- mailInfoModel.setTo("techsupport@corporate.com");
- mailInfoModel.setFrom("mailrobot@corporate.com");
- mailInfoModel.setSubject();
- sendMail(mailInfoModel);
- }
- }
- }
- } catch (Exception e) {
- final String err = "Error while checking vent system";
- logger.error(err, e);
- }
- logger.debug("***Iteration end***");
- }
- /**
- * Получение разницы между серверным временем и временем последнего объявления системы управления вентиляцией
- *
- * @param ventLastDate время последнего объявления системы управления вентиляцией
- * @param currentServerDate текущее время сервера
- * @param timeUnit размерность времени
- * @return разница в той размерности времени, которая будет передана в аргументы
- */
- public long getDateDiff(Date ventLastDate, Date currentServerDate, TimeUnit timeUnit) {
- long diffInMillies = currentServerDate.getTime() - ventLastDate.getTime();
- long milliseconds = timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS);
- return milliseconds;
- }
- /***
- * Отправка уведомления по почте
- * @param информация для генерирования письма
- * @return результат
- *
- */
- public String sendMail(mailInfoModel) {
- MimeMessage mimeMessage = javaMailSender.createMimeMessage();
- MimeMessageHelper mimeMessageHelper = null;
- try {
- mimeMessageHelper = new MimeMessageHelper(mimeMessage, false, "utf-8");
- logger.info("***Setting mail body***");
- mimeMessageHelper.setContent(mailInfoModel.getHtmlMsg(), "text/plain; charset=UTF-8");
- mimeMessageHelper.setText(mailInfoModel.getHtmlMsg(), true);
- mimeMessageHelper.setTo(mailInfoModel.getTo());
- mimeMessageHelper.setSubject(mailInfoModel.getSubject());
- mimeMessageHelper.setFrom(mailInfoModel.getFrom());
- logger.info("***Sending mail...***");
- mailSender.send(mimeMessage);
- logger.info("Mail sent to : " + mailInfoModel.getTo());
- } catch (MessagingException e) {
- e.printStackTrace();
- return "Mail sending error :" + e.getMessage()
- }
- return "Success";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement