package com.hxzk.util; import com.hxzk.deo.TbWarning; import com.hxzk.pojo.TbSmsLog; import com.hxzk.pojo.TbSmsReminder; import com.hxzk.pojo.WarnTongji; import com.hxzk.service.SmsLogService; import com.hxzk.service.TbSmsReminderService; import com.hxzk.service.WarnTongJiService; import com.hxzk.service.WarningService; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.HttpProfile; import com.tencentcloudapi.sms.v20210111.SmsClient; import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest; import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse; import org.springframework.stereotype.Component; import java.lang.ref.PhantomReference; import java.sql.SQLOutput; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; @Component public class MyThreadTask implements Runnable { private String SecretId = "AKIDrjZOI4e6KLZu9FAsSRN8eOwSt52lbMBz"; private String SecretKey = "xnRtHUL3YqdMyOLVSBjKkz1pQoxujS4d"; private WarningService warningService; private TbSmsReminderService smsReminderService; private SmsLogService smsLogService; private WarnTongJiService warnTongJiService; private Integer thr = 5000; private Integer csSMS = 0; private Integer csOnline = 0; private Integer CSOnlineSMS=0;//引擎上线告知 public MyThreadTask(WarningService warningService,TbSmsReminderService smsReminderService,SmsLogService smsLogService,WarnTongJiService warnTongJiService) { this.warningService = warningService; this.smsReminderService = smsReminderService; this.smsLogService = smsLogService; this.warnTongJiService = warnTongJiService; } @Override public void run() { try { while (true) { //获取当前定义的短信提示类型 List smsReminders = smsReminderService.findAllSMSReminder(); List ids = new ArrayList<>(); //循环短信提示(根据类型)查找需要发送短信的告警 for (int i = 0 ; i< smsReminders.size();i++){ String type = smsReminders.get(i).getSmstype(); if (type.equals("引擎异常")){ //根据现在系统时间查询Warning_TongJi时间 List warnTongjis = warnTongJiService.findWarnTongJi(); long time = GetTimeChaMiao(gettime(),warnTongjis.get(0).getAddtime()); //此方法计算时间差 if (time <= -90L){ csOnline = 1; //cs离线 CSOnlineSMS = 0; if (csSMS == 0 && csOnline ==1){ smsRemin(smsReminders.get(i).getPhone(),smsReminders.get(i).getMsg()); TbSmsLog tbSmsLog = new TbSmsLog(); tbSmsLog.setAddtime(gettime()); tbSmsLog.setType(type); tbSmsLog.setPhone(smsReminders.get(i).getPhone()); tbSmsLog.setMsg(smsReminders.get(i).getMsg()); tbSmsLog.setName(smsReminders.get(i).getName()); tbSmsLog.setBumen(smsReminders.get(i).getBumen()); smsLogService.addSMSLog(tbSmsLog); csSMS = 1; //发送之后修改短信状态为已发送 System.out.println("引擎报告异常成功"); } thr = 60000; }else{ if (CSOnlineSMS == 0){ //发送短信 smsRemin(smsReminders.get(i).getPhone(),"通知:引擎已经上线"); TbSmsLog tbSmsLog = new TbSmsLog(); tbSmsLog.setAddtime(gettime()); tbSmsLog.setType(type); tbSmsLog.setPhone(smsReminders.get(i).getPhone()); tbSmsLog.setMsg("通知:引擎已经上线"); tbSmsLog.setName(smsReminders.get(i).getName()); tbSmsLog.setBumen(smsReminders.get(i).getBumen()); smsLogService.addSMSLog(tbSmsLog); CSOnlineSMS = 1; } csOnline = 0;//cs在线 csSMS = 0; thr = 5000; } }else{ List a = warningService.findNowAll(type); for (int j = 0 ; j