From 8d2e1a2e0838394e62dba71c1b6cd489fe849583 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Sat, 25 Oct 2025 16:41:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E5=88=99=E6=8A=A5=E8=AD=A6=E5=92=8C?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E7=BA=BF=E7=A8=8B=E6=B1=A0=E4=BC=98=E5=8C=96?= =?UTF-8?q?2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/async/AsyncAiAnalyse.java | 14 +- .../impl/EnvironmentAlarmServiceImpl.java | 14 +- .../EnableMessageDevController.java | 1 + .../EnableMessageDevRuleController.java | 10 ++ .../service/IEnableMessageDevRuleService.java | 15 +- .../impl/EnableMessageDevRuleServiceImpl.java | 84 ++++++++--- .../zhgd/xmgl/task/MessageDevRuleTask.java | 142 ++++++++++-------- 7 files changed, 184 insertions(+), 96 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java b/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java index 3f27825a7..dbe3d8b8f 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java @@ -120,7 +120,7 @@ public class AsyncAiAnalyse { } /** - * 发送消息 + * 发送通知规则消息 * * @param typeName * @param location @@ -141,18 +141,20 @@ public class AsyncAiAnalyse { ); if (rule != null) { String monitoringLevelName = xzAiDeductRuleService.getLevelName(rule.getLevel()); - EnableMessageDevRule messageDevRule = enableMessageDevRuleService.getRule(ParamEnum.MessageModuleNameEnum.AIJC, hardwareId, dictionaryItem.getName(), monitoringLevelName); + EnableMessageDevRule messageDevRule = enableMessageDevRuleService.getEnableRule(ParamEnum.MessageModuleNameEnum.AIJC, hardwareId, dictionaryItem.getName(), monitoringLevelName, projectSn); if (messageDevRule != null) { - if (Objects.equals(messageDevRule.getEnableSmsNotification(), 1)) { + if (Objects.equals(messageDevRule.getEnableSmsNotification(), 1) && Objects.equals(messageDevRule.getSmsPushFrequency(),0)) { List templateParams = new ArrayList<>(); //报警类型,报警名称,设备名称,报警值,阈值,超标时间,超标量 templateParams.add(typeName); templateParams.add(location); String text = StrUtil.format("AI警报!{},位置{}", typeName, location); - enableMessageDevRuleService.sendSms(messageDevRule, templateParams, text, null); + enableMessageDevRuleService.sendSmsIfEnable(messageDevRule, templateParams, text, null); } - enableMessageDevRuleService.sendSystemMessage(messageDevRule, "8"); - enableMessageDevRuleService.sendBroadcast(messageDevRule); + if (Objects.equals(messageDevRule.getMessagePushFrequency(),0)) { + enableMessageDevRuleService.sendSystemMessageIfEnable(messageDevRule, "8"); + } + enableMessageDevRuleService.sendBroadcastIfEnable(messageDevRule); } } }); diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/EnvironmentAlarmServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/EnvironmentAlarmServiceImpl.java index 65ac77f88..b4a21c088 100644 --- a/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/EnvironmentAlarmServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/EnvironmentAlarmServiceImpl.java @@ -810,7 +810,7 @@ public class EnvironmentAlarmServiceImpl extends ServiceImpl templateParams = new ArrayList<>(); //报警类型,报警名称,设备名称,报警值,阈值,超标时间,超标量 templateParams.add(monitoringLevelName); @@ -835,10 +835,12 @@ public class EnvironmentAlarmServiceImpl extends ServiceImpl devMap = enableMessageDevService.list(new LambdaQueryWrapper() .in(EnableMessageDev::getDevSn, devSnList) .eq(EnableMessageDev::getMonitoringModule, monitoringModule) + .eq(EnableMessageDev::getProjectSn, projectSn) ).stream().collect(Collectors.toMap(EnableMessageDev::getDevSn, Function.identity(), (o1, o2) -> o1)); for (String devSn : devSnList) { EnableMessageDev dev = devMap.get(devSn); diff --git a/src/main/java/com/zhgd/xmgl/modules/project/controller/EnableMessageDevRuleController.java b/src/main/java/com/zhgd/xmgl/modules/project/controller/EnableMessageDevRuleController.java index a76a05bee..18638938d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/controller/EnableMessageDevRuleController.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/controller/EnableMessageDevRuleController.java @@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.project.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; @@ -23,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -231,6 +233,7 @@ public class EnableMessageDevRuleController { @OperLog(operModul = "通知设备规则管理", operType = "", operDesc = "根据devSn、模块、参数、等级去编辑通知设备规则信息") @ApiOperation(value = "根据devSn、模块、参数、等级去编辑通知设备规则信息", notes = "根据devSn、模块、参数、等级去编辑通知设备规则信息", httpMethod = "POST") @PostMapping(value = "/editByCondition") + @Transactional(rollbackFor = Exception.class) public Result editByCondition(@RequestBody EnableMessageDevRuleDto enableMessageDevRuleDto) { String devSn = enableMessageDevRuleDto.getDevSn(); String monitoringModuleName = enableMessageDevRuleDto.getMonitoringModuleName(); @@ -247,6 +250,13 @@ public class EnableMessageDevRuleController { } else { enableMessageDevRuleDto.setId(db.getId()); enableMessageDevRuleService.updateById(enableMessageDevRuleDto); + enableMessageDevRuleService.update(null, new LambdaUpdateWrapper() + .set(EnableMessageDevRule::getMessagePushTimeBegin, enableMessageDevRuleDto.getMessagePushTimeBegin()) + .set(EnableMessageDevRule::getMessagePushTimeEnd, enableMessageDevRuleDto.getMessagePushTimeEnd()) + .set(EnableMessageDevRule::getSmsPushTimeBegin, enableMessageDevRuleDto.getSmsPushTimeBegin()) + .set(EnableMessageDevRule::getSmsPushTimeEnd, enableMessageDevRuleDto.getSmsPushTimeEnd()) + .eq(EnableMessageDevRule::getId, db.getId()) + ); } return Result.ok(); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java b/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java index 8c301d2f4..2785f6dc5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java @@ -69,15 +69,16 @@ public interface IEnableMessageDevRuleService extends IService templateParams, String text, @Nullable Map userMap); + void sendSmsIfEnable(EnableMessageDevRule rule, List templateParams, String text, @Nullable Map userMap); /** - * 发送系统站内消息 + * 开启就发送系统站内消息 * * @param rule * @param type */ - void sendSystemMessage(EnableMessageDevRule rule, String type); + void sendSystemMessageIfEnable(EnableMessageDevRule rule, String type); /** - * 发送广播 + * 开启就发送广播 * * @param rule */ - void sendBroadcast(EnableMessageDevRule rule); + void sendBroadcastIfEnable(EnableMessageDevRule rule); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/EnableMessageDevRuleServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/EnableMessageDevRuleServiceImpl.java index 7a6bda0ae..21876d625 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/EnableMessageDevRuleServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/EnableMessageDevRuleServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalTime; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -68,6 +69,52 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl queryPageList(HashMap param) { QueryWrapper queryWrapper = this.getQueryWrapper(param); @@ -127,10 +174,11 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl() .eq(EnableMessageDev::getMonitoringModule, moduleEnum.getValue()) .eq(EnableMessageDev::getDevSn, devSn) + .eq(EnableMessageDev::getProjectSn, projectSn) ); if (messageDev == null || Objects.equals(messageDev.getIsEnable(), 0)) { return null; @@ -141,6 +189,7 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl templateParams, String text, Map userMap) { - DevSmsManufacturer messageManufacturer = devSmsManufacturerFactory.getMessageManufacturer(rule.getProjectSn()); - if (messageManufacturer != null) { - if (userMap == null) { - userMap = systemUserService.list(new LambdaQueryWrapper().eq(SystemUser::getSn, rule.getProjectSn())).stream().collect(Collectors.toMap(SystemUser::getUserId, Function.identity(), (o1, o2) -> o1)); - } - List phoneNums = this.getPhoneNums(rule.getSmsAlarmRecipientIds(), userMap); - if (CollUtil.isNotEmpty(phoneNums)) { - messageManufacturer.sendMsg(phoneNums, rule.getNotificationSmsTemplateId(), templateParams, text); + public void sendSmsIfEnable(EnableMessageDevRule rule, List templateParams, String text, Map userMap) { + if (rule != null && Objects.equals(rule.getEnableSmsNotification(), 1) && EnableMessageDevRuleServiceImpl.isInSmsTime(rule)) { + DevSmsManufacturer messageManufacturer = devSmsManufacturerFactory.getMessageManufacturer(rule.getProjectSn()); + if (messageManufacturer != null) { + if (userMap == null) { + userMap = systemUserService.list(new LambdaQueryWrapper().eq(SystemUser::getSn, rule.getProjectSn())).stream().collect(Collectors.toMap(SystemUser::getUserId, Function.identity(), (o1, o2) -> o1)); + } + List phoneNums = this.getPhoneNums(rule.getSmsAlarmRecipientIds(), userMap); + if (CollUtil.isNotEmpty(phoneNums)) { + messageManufacturer.sendMsg(phoneNums, rule.getNotificationSmsTemplateId(), templateParams, text); + } } } } @Override - public void sendSystemMessage(EnableMessageDevRule rule, String type) { - if (rule == null) { - return; - } - if (Objects.equals(rule.getEnableSystemMessagePush(), 1) && StrUtil.isNotBlank(rule.getAlarmRecipientIds())) { + public void sendSystemMessageIfEnable(EnableMessageDevRule rule, String type) { + if (rule != null && Objects.equals(rule.getEnableSystemMessagePush(), 1) && StrUtil.isNotBlank(rule.getAlarmRecipientIds()) && EnableMessageDevRuleServiceImpl.isInSystemTime(rule)) { List ids = StrUtil.split(rule.getAlarmRecipientIds(), ",").stream().map(Convert::toLong).collect(Collectors.toList()); NoticeMessagePromptTone tone = null; //系统站内声音提示 @@ -191,12 +239,14 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl() .put("projectSn", rule.getProjectSn()) .build()); - manufacturer.playVoiceFile(StrUtil.split(rule.getBroadcastDevices(), ","), FileUtils.urlToFileName(rule.getVoiceFileConfiguration()), FileUtils.urlToFilePath(rule.getVoiceFileConfiguration())); + if (manufacturer != null) { + manufacturer.playVoiceFile(StrUtil.split(rule.getBroadcastDevices(), ","), FileUtils.urlToFileName(rule.getVoiceFileConfiguration()), FileUtils.urlToFilePath(rule.getVoiceFileConfiguration())); + } } } diff --git a/src/main/java/com/zhgd/xmgl/task/MessageDevRuleTask.java b/src/main/java/com/zhgd/xmgl/task/MessageDevRuleTask.java index b470a7639..7206656f6 100644 --- a/src/main/java/com/zhgd/xmgl/task/MessageDevRuleTask.java +++ b/src/main/java/com/zhgd/xmgl/task/MessageDevRuleTask.java @@ -28,6 +28,7 @@ import com.zhgd.xmgl.modules.xz.entity.XzAiDeductRule; import com.zhgd.xmgl.modules.xz.service.IXzAiDeductRuleService; import lombok.extern.slf4j.Slf4j; import net.javacrumbs.shedlock.core.SchedulerLock; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; @@ -89,25 +90,27 @@ public class MessageDevRuleTask { try { Map environmentTypeMap = environmentAlarmTypeService.list().stream().collect(Collectors.toMap(EnvironmentAlarmType::getId, Function.identity(), (o1, o2) -> o1)); List projects = projectService.list(new LambdaQueryWrapper()); - Map>>>> devSn2ProjectSn2Parameter2LevelEnvironmentAlarmMap = environmentAlarmService.list(new LambdaQueryWrapper() + Map>>>> devSn2ProjectSn2Parameter2LevelEnvironmentAlarmMap = environmentAlarmService.list(new LambdaQueryWrapper() .ge(EnvironmentAlarm::getAlarmTime, DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -1))) .le(EnvironmentAlarm::getAlarmTime, new Date()) ).stream().collect(Collectors.groupingBy(EnvironmentAlarm::getDeviceId, Collectors.groupingBy(EnvironmentAlarm::getProjectSn, - Collectors.groupingBy(ea -> environmentTypeMap.get(ea.getAlarmTypeId()).getAlarmType(), - Collectors.groupingBy(ea -> Objects.equals(ea.getType(), 0) ? "报警" : "预警"))))); + Collectors.groupingBy(ea -> environmentTypeMap.get(ea.getAlarmTypeId()).getAlarmType(), + Collectors.groupingBy(ea -> Objects.equals(ea.getType(), 0) ? "报警" : "预警"))))); List ruleList = enableMessageDevRuleService.list(new LambdaQueryWrapper().eq(EnableMessageDevRule::getIsEnabled, 1)); Map userMap = systemUserService.list(new LambdaQueryWrapper()).stream().collect(Collectors.toMap(SystemUser::getUserId, Function.identity(), (o1, o2) -> o1)); - Map> moduleMap = ruleList.stream().collect(Collectors.groupingBy(EnableMessageDevRule::getMonitoringModuleName)); + Map>> projectSn2ModuleMap = ruleList.stream().collect(Collectors.groupingBy(EnableMessageDevRule::getProjectSn, Collectors.groupingBy(EnableMessageDevRule::getMonitoringModuleName))); + List alarmRecords = aiAnalyseHardWareAlarmRecordService.list(new LambdaQueryWrapper() + .ge(AiAnalyseHardWareAlarmRecord::getCreateTime, DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -1))) + .le(AiAnalyseHardWareAlarmRecord::getCreateTime, DateUtil.formatDateTime(new Date()) + )); for (Project project : projects) { - List dictList = dictionaryItemService.getDictList(DictionaryConstant.AI_ANALYSE_HARD_WARE_ALARM_RECORD_TYPE, project.getProjectSn()); + String projectSn = project.getProjectSn(); + List dictList = dictionaryItemService.getDictList(DictionaryConstant.AI_ANALYSE_HARD_WARE_ALARM_RECORD_TYPE, projectSn); Map dictDataMap = dictList.stream().collect(Collectors.toMap(DictionaryItem::getData, Function.identity(), (o1, o2) -> o1)); Map dicIdMap = xzAiDeductRuleService.list(new LambdaQueryWrapper() - .eq(XzAiDeductRule::getProjectSn, project.getProjectSn())).stream().collect(Collectors.toMap(XzAiDeductRule::getDictionaryItemId, Function.identity(), (o1, o2) -> o1)); - Map>>>> devSn2ProjectSn2Parameter2LevelAiMap = aiAnalyseHardWareAlarmRecordService.list(new LambdaQueryWrapper() - .ge(AiAnalyseHardWareAlarmRecord::getCreateTime, DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -1))) - .le(AiAnalyseHardWareAlarmRecord::getCreateTime, new Date()) - ).stream().filter(r -> { + .eq(XzAiDeductRule::getProjectSn, projectSn)).stream().collect(Collectors.toMap(XzAiDeductRule::getDictionaryItemId, Function.identity(), (o1, o2) -> o1)); + Map>>>> devSn2ProjectSn2Parameter2LevelAiMap = alarmRecords.stream().filter(r -> { return Objects.nonNull(Optional.ofNullable(dictDataMap.get(Convert.toStr(r.getAlarmType()))).map(m -> dicIdMap.get(m.getId())).map(XzAiDeductRule::getLevel).orElse(null)); }).collect(Collectors.groupingBy(AiAnalyseHardWareAlarmRecord::getHardwareId, Collectors.groupingBy(AiAnalyseHardWareAlarmRecord::getProjectSn, @@ -115,6 +118,10 @@ public class MessageDevRuleTask { Collectors.groupingBy(r -> Optional.of(dictDataMap.get(Convert.toStr(r.getAlarmType()))).map(m -> dicIdMap.get(m.getId())).map(r1 -> { return xzAiDeductRuleService.getLevelName(r1.getLevel()); }).orElse(null)))))); + Map> moduleMap = projectSn2ModuleMap.get(projectSn); + if (CollUtil.isEmpty(moduleMap)) { + continue; + } for (Map.Entry> moduleEntry : moduleMap.entrySet()) { List entryRules = moduleEntry.getValue(); for (EnableMessageDevRule rule : entryRules) { @@ -123,26 +130,41 @@ public class MessageDevRuleTask { List filterAlarms = Optional.ofNullable(devSn2ProjectSn2Parameter2LevelEnvironmentAlarmMap.get(rule.getDevSn())) .map(m -> m.get(rule.getProjectSn())) .map(m -> m.get(rule.getMonitoringParameterName())).map(m -> m.get(rule.getMonitoringLevelName())).orElse(new ArrayList<>()); - filterAlarms = filterAlarms.stream().filter(alarm -> - DateUtil.compare(alarm.getAlarmTime(), DateUtil.offsetHour(new Date(), rule.getSmsPushFrequency() * -1)) >= 0 - && DateUtil.compare(alarm.getAlarmTime(), new Date()) <= 0).collect(Collectors.toList()); - //sms + List filterAlarms1 = getFilterEnvironmentAlarmRecords(filterAlarms, rule.getSmsPushFrequency()); + if (CollUtil.isNotEmpty(filterAlarms1)) { + sendSmsNotice(rule, filterAlarms1.size(), userMap); + } + List filterAlarms2 = getFilterEnvironmentAlarmRecords(filterAlarms, rule.getMessagePushFrequency()); + if (CollUtil.isNotEmpty(filterAlarms2)) { + //系统站内 + if (!Objects.equals(rule.getMessagePushFrequency(), 0)) { + enableMessageDevRuleService.sendSystemMessageIfEnable(rule, "8"); + } + } if (CollUtil.isNotEmpty(filterAlarms)) { - sendNotice(rule, filterAlarms.size(), userMap, "7"); + //广播 + enableMessageDevRuleService.sendBroadcastIfEnable(rule); } } - //AI - if (Objects.equals(ParamEnum.MessageModuleNameEnum.AIJC.getDesc(), moduleEntry.getKey())) { + else if (Objects.equals(ParamEnum.MessageModuleNameEnum.AIJC.getDesc(), moduleEntry.getKey())) { List filterAlarms = Optional.ofNullable(devSn2ProjectSn2Parameter2LevelAiMap.get(rule.getDevSn())) .map(m -> m.get(rule.getProjectSn())) .map(m -> m.get(rule.getMonitoringParameterName())).map(m -> m.get(rule.getMonitoringLevelName())).orElse(new ArrayList<>()); - filterAlarms = filterAlarms.stream().filter(alarm -> - DateUtil.compare(DateUtil.parse(alarm.getCreateTime()), DateUtil.offsetHour(new Date(), rule.getSmsPushFrequency() * -1)) >= 0 - && DateUtil.compare(DateUtil.parse(alarm.getCreateTime()), new Date()) <= 0).collect(Collectors.toList()); - //sms + List filterAlarms1 = getFilterAiAlarmRecords(filterAlarms, rule.getSmsPushFrequency()); + if (CollUtil.isNotEmpty(filterAlarms1)) { + sendSmsNotice(rule, filterAlarms1.size(), userMap); + } + List filterAlarms2 = getFilterAiAlarmRecords(filterAlarms, rule.getMessagePushFrequency()); + if (CollUtil.isNotEmpty(filterAlarms2)) { + //系统站内 + if (!Objects.equals(rule.getMessagePushFrequency(), 0)) { + enableMessageDevRuleService.sendSystemMessageIfEnable(rule, "8"); + } + } if (CollUtil.isNotEmpty(filterAlarms)) { - sendNotice(rule, filterAlarms.size(), userMap, "8"); + //广播 + enableMessageDevRuleService.sendBroadcastIfEnable(rule); } } } @@ -154,53 +176,53 @@ public class MessageDevRuleTask { } /** - * 发送通知 + * 根据时间和频率获取过滤后扬尘报警记录 + * + * @param filterAlarms + * @param frequency + * @return + */ + @NotNull + private List getFilterEnvironmentAlarmRecords(List filterAlarms, Integer frequency) { + if (Objects.isNull(frequency) || Objects.equals(frequency, 0)) { + return new ArrayList<>(); + } + return filterAlarms.stream().filter(alarm -> + DateUtil.compare(alarm.getAlarmTime(), DateUtil.offsetHour(new Date(), frequency * -1)) >= 0 + && DateUtil.compare(alarm.getAlarmTime(), new Date()) <= 0).collect(Collectors.toList()); + } + + /** + * 根据时间和频率获取过滤后AI报警记录 + * + * @param filterAlarms + * @param frequency + * @return + */ + @NotNull + private List getFilterAiAlarmRecords(List filterAlarms, Integer frequency) { + if (Objects.isNull(frequency) || Objects.equals(frequency, 0)) { + return new ArrayList<>(); + } + return filterAlarms.stream().filter(alarm -> + DateUtil.compare(DateUtil.parse(alarm.getCreateTime()), DateUtil.offsetHour(new Date(), frequency * -1)) >= 0 + && DateUtil.compare(DateUtil.parse(alarm.getCreateTime()), new Date()) <= 0).collect(Collectors.toList()); + } + + /** + * 发送sms通知 * * @param rule * @param filterAlarms * @param userMap - * @param type */ - private void sendNotice(EnableMessageDevRule rule, int filterAlarms, Map userMap, String type) { - if (Objects.equals(rule.getEnableSmsNotification(), 1) && isSmsSendTime(rule)) { + private void sendSmsNotice(EnableMessageDevRule rule, int filterAlarms, Map userMap) { + if (Objects.equals(rule.getEnableSmsNotification(), 1) && !Objects.equals(rule.getSmsPushFrequency(), 0)) { String text = StrUtil.format("{}{}{}异常,近{}小时累计报警{}次!", rule.getMonitoringModuleName(), rule.getMonitoringParameterName(), rule.getMonitoringLevelName(), rule.getSmsPushFrequency(), filterAlarms); List templateParams = Arrays.asList(rule.getMonitoringModuleName(), rule.getMonitoringParameterName(), rule.getMonitoringLevelName(), Convert.toStr(rule.getSmsPushFrequency()), Convert.toStr(filterAlarms)); - enableMessageDevRuleService.sendSms(rule, templateParams, text, userMap); + enableMessageDevRuleService.sendSmsIfEnable(rule, templateParams, text, userMap); } - //系统站内 - if (Objects.equals(rule.getEnableSystemMessagePush(), 1) && isSystemSendTime(rule)) { - enableMessageDevRuleService.sendSystemMessage(rule, type); - } - //广播 - enableMessageDevRuleService.sendBroadcast(rule); } - /** - * 是系统消息需要发送的时间了 - * - * @param rule - * @return - */ - private boolean isSystemSendTime(EnableMessageDevRule rule) { - int hour = DateUtil.hour(new Date(), true); - return Objects.nonNull(rule.getMessagePushFrequency()) && Objects.nonNull(rule.getMessagePushTimeBegin()) && Objects.nonNull(rule.getMessagePushTimeEnd()) - && !Objects.equals(rule.getMessagePushFrequency(), 0) && hour % rule.getMessagePushFrequency() == 0 - && rule.getMessagePushTimeBegin().getHour() <= hour && rule.getMessagePushTimeEnd().getHour() >= hour; - } - - /** - * 是短信需要发送的时间了 - * - * @param rule - * @return - */ - private boolean isSmsSendTime(EnableMessageDevRule rule) { - int hour = DateUtil.hour(new Date(), true); - return Objects.nonNull(rule.getSmsPushFrequency()) && Objects.nonNull(rule.getSmsPushTimeBegin()) && Objects.nonNull(rule.getSmsPushTimeEnd()) - && !Objects.equals(rule.getSmsPushFrequency(), 0) && hour % rule.getSmsPushFrequency() == 0 - && rule.getSmsPushTimeBegin().getHour() <= hour && rule.getSmsPushTimeEnd().getHour() >= hour; - } - - }