瀏覽代碼

告警权限校验

yf_zn 8 月之前
父節點
當前提交
639a0b5114
共有 1 個文件被更改,包括 17 次插入1 次删除
  1. 17 1
      src/main/java/com/yunfeiyun/agmp/iots/warn/service/MsgService.java

+ 17 - 1
src/main/java/com/yunfeiyun/agmp/iots/warn/service/MsgService.java

@@ -16,6 +16,7 @@ import com.yunfeiyun.agmp.iot.common.domain.IotWarnlog;
 import com.yunfeiyun.agmp.iot.common.domain.IotWarnpolicy;
 import com.yunfeiyun.agmp.iot.common.domain.IotWarnreceiver;
 import com.yunfeiyun.agmp.iots.mq.provider.AgmpIotMqProviderService;
+import com.yunfeiyun.agmp.iots.mq.provider.AgmpMqProviderService;
 import com.yunfeiyun.agmp.iots.warn.model.WarnResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -75,7 +76,22 @@ public class MsgService {
             if (wpType.equals("0")) {
                 // 即时推送
                 log.info("【告警通知】消息标识{}:当前设备ID:{},即时推送", messageId, warnResult.getDevId());
-                saveWarnMsg(warnResult);
+                //如果设置有推送频率,结合最后一次发送时间,如果上次距离当下超过发送频率,那就可以发送
+                // 发送频率,每N时,数字类型
+                String wpFrequency = StringUtils.isEmpty(iotWarnpolicy.getWpFrequency())?"0":iotWarnpolicy.getWpFrequency();
+                // 判断是否到了发送时间
+                IotWarnlog lastedUnSendWarnLog = getLastedUnSendWarnLog(warnResult.getConfigId());
+                if (lastedUnSendWarnLog != null) {
+                    // 根据最后一次发送时间,结合发送频率,如果上次距离当下超过发送频率,那就可以发送
+                    if (!DateUtils.isBetween(new Date(), DateUtils.parseDate(lastedUnSendWarnLog.getWlCreateddate()), DateUtils.addHours(DateUtils.parseDate(lastedUnSendWarnLog.getWlCreateddate()), Integer.parseInt(wpFrequency)))) {
+                        saveWarnMsg(warnResult);
+                    } else {
+                        reSend = true;
+                        log.info("还没到发送时间,下次发送时间:{}", DateUtils.addHours(DateUtils.parseDate(lastedUnSendWarnLog.getWlCreateddate()), Integer.parseInt(wpFrequency)).toString());
+                    }
+                } else {
+                    saveWarnMsg(warnResult);
+                }
             } else if (wpType.equals("1")) {
                 // 选定时间
                 String deliveryTimePeriod = iotWarnpolicy.getDeliveryTimePeriod();