|
|
@@ -9,6 +9,7 @@ import com.zd.algorithm.api.alarm.entity.AlarmEntrty;
|
|
|
import com.zd.algorithm.api.alarm.entity.AlarmLog;
|
|
|
import com.zd.algorithm.api.alarm.entity.Routes;
|
|
|
import com.zd.algorithm.api.alarm.entity.SendTypes;
|
|
|
+import com.zd.common.core.redis.RedisService;
|
|
|
import com.zd.common.core.utils.DateUtils;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
@@ -22,6 +23,7 @@ import org.springframework.stereotype.Component;
|
|
|
import javax.annotation.PostConstruct;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* 报警工具类
|
|
|
@@ -41,6 +43,9 @@ public class AlarmUtil {
|
|
|
@Autowired
|
|
|
private IAlarmLogService alarmLogService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RedisService redisService;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 链接超时 项目启动会失败
|
|
|
@@ -78,9 +83,9 @@ public class AlarmUtil {
|
|
|
/**
|
|
|
* 定时检测 重试
|
|
|
*/
|
|
|
- @Scheduled(fixedRate=60 * 1000)
|
|
|
+ @Scheduled(fixedDelay = 150 * 1000)
|
|
|
public void timerCount(){
|
|
|
-
|
|
|
+ logger.info("电话短信重试机制!!");
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("retryCount", retryCount);
|
|
|
params.put("date", DateUtils.getNowDate());
|
|
|
@@ -107,12 +112,13 @@ public class AlarmUtil {
|
|
|
alarmLog.setMethod(map.get("method")+"");
|
|
|
alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
alarmLogService.updateAlarmLog(alarmLog);
|
|
|
-
|
|
|
+ logger.info("数据data: "+ alarmLog.toString());
|
|
|
if("失败".equals(map.get("status"))){
|
|
|
- System.out.println("重发数据: "+ alarmLog.toString());
|
|
|
+ logger.info("重发数据: "+ alarmLog.toString());
|
|
|
// TODO 运行异常 需记录 重拨ID或手机号 避免一次运行多次拨号
|
|
|
- if(!failPhones.contains(alarmLog.getPhone())){
|
|
|
+ if(!failPhones.contains(alarmLog.getPhone()) && redisService.getCacheObject("retry" + alarmLog.getPhone()) == null){
|
|
|
failPhones.add(alarmLog.getPhone());
|
|
|
+ redisService.setCacheObject("retry" + alarmLog.getPhone(), alarmLog.getPhone(),150L, TimeUnit.SECONDS);
|
|
|
sendPost(new AlarmEntrty(Routes.NoticePush, new String[]{alarmLog.getPhone()}, SendTypes.Call+"", alarmLog.getNotice()));
|
|
|
}
|
|
|
}
|