| | |
| | | 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.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; |
| | |
| | | private TbSmsReminderService smsReminderService; |
| | | |
| | | private SmsLogService smsLogService; |
| | | private WarnTongJiService warnTongJiService; |
| | | |
| | | public MyThreadTask(WarningService warningService,TbSmsReminderService smsReminderService,SmsLogService smsLogService) { |
| | | 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 { |
| | |
| | | //循环短信提示(根据类型)查找需要发送短信的告警 |
| | | for (int i = 0 ; i< smsReminders.size();i++){ |
| | | String type = smsReminders.get(i).getSmstype(); |
| | | //拿着当前type 在数据库中查询在之前6秒和现在满足告警条件的数据 |
| | | List<TbWarning> a = warningService.findNowAll(type); |
| | | for (int j = 0 ; j <a.size();j++){ |
| | | if (type.equals("SOS")){ |
| | | String[] weizhi = a.get(j).getBaoliu1().split(";"); |
| | | if(a.get(j).getPdepartment().equals(smsReminders.get(i).getBumen())){ |
| | | String sms = smsReminders.get(i).getMsg()+",我的位置,经度:"+weizhi[0]+",纬度:"+weizhi[1]+"我的电话是:"+a.get(j).getPphone()+",我的名称是:"+a.get(j).getPname()+",我的设备编号:"+a.get(j).getPtagid(); |
| | | String phone = smsReminders.get(i).getPhone(); |
| | | smsRemin(phone,sms); |
| | | //发送成功,则添加日志 |
| | | TbSmsLog tbSmsLog = new TbSmsLog(); |
| | | tbSmsLog.setAddtime(gettime()); |
| | | tbSmsLog.setType(type); |
| | | tbSmsLog.setPhone(phone); |
| | | tbSmsLog.setMsg(sms); |
| | | tbSmsLog.setName(smsReminders.get(i).getName()); |
| | | tbSmsLog.setBumen(smsReminders.get(i).getBumen()); |
| | | smsLogService.addSMSLog(tbSmsLog); |
| | | //同时修改标识,只发一次短信 |
| | | ids.add(a.get(j).getId()); |
| | | } |
| | | if (type.equals("引擎异常")){ |
| | | //根据现在系统时间查询Warning_TongJi时间 |
| | | List<WarnTongji> 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(a.get(j).getPdepartment().equals(smsReminders.get(i).getBumen())){ |
| | | String sms = smsReminders.get(i).getMsg()+",我的电话是:"+a.get(j).getPphone()+",我的名称:"+a.get(j).getPname()+",我的设备编号:"+a.get(j).getPtagid(); |
| | | String phone = smsReminders.get(i).getPhone(); |
| | | smsRemin(phone,sms); |
| | | //发送成功,则添加日志 |
| | | TbSmsLog tbSmsLog = new TbSmsLog(); |
| | | tbSmsLog.setAddtime(gettime()); |
| | | tbSmsLog.setType(type); |
| | | tbSmsLog.setPhone(phone); |
| | | tbSmsLog.setMsg(sms); |
| | | tbSmsLog.setName(smsReminders.get(i).getName()); |
| | | tbSmsLog.setBumen(smsReminders.get(i).getBumen()); |
| | | smsLogService.addSMSLog(tbSmsLog); |
| | | //同时修改标识,只发一次短信 |
| | | ids.add(a.get(j).getId()); |
| | | 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<TbWarning> a = warningService.findNowAll(type); |
| | | for (int j = 0 ; j <a.size();j++){ |
| | | if (type.equals("SOS")){ |
| | | String[] weizhi = a.get(j).getBaoliu1().split(";"); |
| | | if(a.get(j).getPdepartment().equals(smsReminders.get(i).getBumen())){ |
| | | String sms = smsReminders.get(i).getMsg()+",我的位置,经度:"+weizhi[0]+",纬度:"+weizhi[1]+"我的电话是:"+a.get(j).getPphone()+",我的名称是:"+a.get(j).getPname()+",我的设备编号:"+a.get(j).getPtagid(); |
| | | String phone = smsReminders.get(i).getPhone(); |
| | | smsRemin(phone,sms); |
| | | //发送成功,则添加日志 |
| | | TbSmsLog tbSmsLog = new TbSmsLog(); |
| | | tbSmsLog.setAddtime(gettime()); |
| | | tbSmsLog.setType(type); |
| | | tbSmsLog.setPhone(phone); |
| | | tbSmsLog.setMsg(sms); |
| | | tbSmsLog.setName(smsReminders.get(i).getName()); |
| | | tbSmsLog.setBumen(smsReminders.get(i).getBumen()); |
| | | smsLogService.addSMSLog(tbSmsLog); |
| | | //同时修改标识,只发一次短信 |
| | | ids.add(a.get(j).getId()); |
| | | } |
| | | }else{ |
| | | if(a.get(j).getPdepartment().equals(smsReminders.get(i).getBumen())){ |
| | | String sms = smsReminders.get(i).getMsg()+",我的电话是:"+a.get(j).getPphone()+",我的名称:"+a.get(j).getPname()+",我的设备编号:"+a.get(j).getPtagid(); |
| | | String phone = smsReminders.get(i).getPhone(); |
| | | smsRemin(phone,sms); |
| | | //发送成功,则添加日志 |
| | | TbSmsLog tbSmsLog = new TbSmsLog(); |
| | | tbSmsLog.setAddtime(gettime()); |
| | | tbSmsLog.setType(type); |
| | | tbSmsLog.setPhone(phone); |
| | | tbSmsLog.setMsg(sms); |
| | | tbSmsLog.setName(smsReminders.get(i).getName()); |
| | | tbSmsLog.setBumen(smsReminders.get(i).getBumen()); |
| | | smsLogService.addSMSLog(tbSmsLog); |
| | | //同时修改标识,只发一次短信 |
| | | ids.add(a.get(j).getId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | for (int i = 0;i< ids.size();i++){ |
| | | warningService.updateIDWarning(ids.get(i)); |
| | | } |
| | | |
| | | Thread.sleep(5000); // 线程休眠5秒 |
| | | Thread.sleep(thr); // 线程休眠5秒 |
| | | } |
| | | } catch (InterruptedException e) { |
| | | // 处理线程中断异常 |
| | |
| | | String formattedDate = sdf.format(now); |
| | | return formattedDate; |
| | | } |
| | | public long GetTimeChaMiao(String time,String warTime){ |
| | | String startTimeStr = time; |
| | | String endTimeStr = warTime; |
| | | long differenceSeconds = 0; |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | try { |
| | | Date startTime = format.parse(startTimeStr); |
| | | Date endTime = format.parse(endTimeStr); |
| | | |
| | | long differenceMillis = endTime.getTime() - startTime.getTime(); |
| | | differenceSeconds = differenceMillis / 1000; |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return differenceSeconds; |
| | | } |
| | | |
| | | public void smsRemin(String phone,String neirong){ |
| | | try { |