package com.hxzk.util;
|
|
import com.hxzk.deo.TbWarning;
|
import com.hxzk.pojo.TbSmsLog;
|
import com.hxzk.pojo.TbSmsReminder;
|
import com.hxzk.service.SmsLogService;
|
import com.hxzk.service.TbSmsReminderService;
|
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.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;
|
|
public MyThreadTask(WarningService warningService,TbSmsReminderService smsReminderService,SmsLogService smsLogService) {
|
this.warningService = warningService;
|
this.smsReminderService = smsReminderService;
|
this.smsLogService = smsLogService;
|
|
}
|
|
@Override
|
public void run() {
|
try {
|
while (true) {
|
//获取当前定义的短信提示类型
|
List<TbSmsReminder> smsReminders = smsReminderService.findAllSMSReminder();
|
List<Integer> ids = new ArrayList<>();
|
//循环短信提示(根据类型)查找需要发送短信的告警
|
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());
|
}
|
}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秒
|
}
|
} catch (InterruptedException e) {
|
// 处理线程中断异常
|
e.printStackTrace();
|
}
|
}
|
|
public String gettime(){
|
Date now = new Date();
|
// 创建日期格式化对象,设置格式为 "yyyy-MM-dd HH:mm"
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// 格式化日期对象,输出字符串结果
|
String formattedDate = sdf.format(now);
|
return formattedDate;
|
}
|
|
public void smsRemin(String phone,String neirong){
|
try {
|
Credential cred = new Credential(this.SecretId, this.SecretKey);
|
HttpProfile httpProfile = new HttpProfile();
|
httpProfile.setEndpoint("sms.tencentcloudapi.com");
|
ClientProfile clientProfile = new ClientProfile();
|
clientProfile.setHttpProfile(httpProfile);
|
SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile);
|
SendSmsRequest req = new SendSmsRequest();
|
String[] phoneNumberSet1 = new String[]{phone};
|
req.setPhoneNumberSet(phoneNumberSet1);
|
req.setSmsSdkAppId("1400838975");
|
req.setSignName("北京华星北斗智控");
|
req.setTemplateId("2082020");
|
String[] templateParamSet1 = new String[]{String.valueOf(neirong)};
|
req.setTemplateParamSet(templateParamSet1);
|
SendSmsResponse resp = client.SendSms(req);
|
} catch (TencentCloudSDKException var12) {
|
System.out.println(var12.toString());
|
}
|
}
|
}
|