diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java b/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java index 53e9f7802..0bfaefc04 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncAiAnalyse.java @@ -1,11 +1,14 @@ package com.zhgd.xmgl.async; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhgd.mqtt.bean.PushPayload; import com.zhgd.mqtt.server.IMqttSender; -import com.zhgd.xmgl.call.api.MessageManufacturer; +import com.zhgd.xmgl.call.factory.DevSmsManufacturerFactory; import com.zhgd.xmgl.call.factory.MessageManufacturerFactory; import com.zhgd.xmgl.constant.Cts; +import com.zhgd.xmgl.enums.ParamEnum; import com.zhgd.xmgl.modules.basicdata.constant.DictionaryConstant; import com.zhgd.xmgl.modules.basicdata.entity.CompanyConfig; import com.zhgd.xmgl.modules.basicdata.entity.DictionaryItem; @@ -16,8 +19,12 @@ import com.zhgd.xmgl.modules.basicdata.service.ICompanyConfigService; import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; import com.zhgd.xmgl.modules.basicdata.service.impl.DictionaryItemServiceImpl; import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; +import com.zhgd.xmgl.modules.project.entity.EnableMessageDevRule; +import com.zhgd.xmgl.modules.project.service.IEnableMessageDevRuleService; import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord; import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; +import com.zhgd.xmgl.modules.xz.entity.XzAiDeductRule; +import com.zhgd.xmgl.modules.xz.service.IXzAiDeductRuleService; import com.zhgd.xmgl.push.service.UniPushService; import com.zhgd.xmgl.util.MapBuilder; import lombok.extern.slf4j.Slf4j; @@ -32,9 +39,9 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; /** * @program: wisdomSite @@ -72,6 +79,15 @@ public class AsyncAiAnalyse { @Lazy @Autowired private MessageManufacturerFactory messageManufacturerFactory; + @Lazy + @Autowired + private DevSmsManufacturerFactory devSmsManufacturerFactory; + @Lazy + @Autowired + private IEnableMessageDevRuleService enableMessageDevRuleService; + @Lazy + @Autowired + private IXzAiDeductRuleService xzAiDeductRuleService; /** * @param record @@ -97,33 +113,43 @@ public class AsyncAiAnalyse { } // sendAppNotice(record.getProjectSn(), title, msg, systemUserList, "/pages/potentialRisk/potentialRisk?id=" + record.getId()); } - sendMsg(systemUserList, typeName, record.getLocation(), record.getProjectSn()); + sendMessage(typeName, record.getLocation(), record.getProjectSn(), record.getHardwareId(), record.getAlarmType()); } catch (Exception e) { log.error("error:", e); } } /** - * 发送短信 + * 发送消息 * - * @param systemUserList * @param typeName * @param location * @param projectSn + * @param hardwareId + * @param alarmType */ - private void sendMsg(List systemUserList, String typeName, String location, String projectSn) { + private void sendMessage(String typeName, String location, String projectSn, String hardwareId, Integer alarmType) { CompletableFuture.runAsync(() -> { - MessageManufacturer messageManufacturer = messageManufacturerFactory.getMessageManufacturer(projectSn); - if (messageManufacturer != null) { - List phoneNums = systemUserList.stream().map(SystemUser::getUserTel).collect(Collectors.toList()); + Map dictDataMap = dictionaryItemService.getDictDataMapByProjectSn(DictionaryConstant.AI_ANALYSE_HARD_WARE_ALARM_RECORD_TYPE, projectSn); + DictionaryItem dictionaryItem = dictDataMap.get(Convert.toStr(alarmType)); + if (dictionaryItem == null) { + return; + } + XzAiDeductRule rule = xzAiDeductRuleService.getOne(new LambdaQueryWrapper() + .eq(XzAiDeductRule::getDictionaryItemId, dictionaryItem.getId()) + .eq(XzAiDeductRule::getProjectSn, dictionaryItem.getProjectSn()) + ); + String monitoringLevelName = xzAiDeductRuleService.getLevelName(rule.getLevel()); + EnableMessageDevRule messageDevRule = enableMessageDevRuleService.getRule(ParamEnum.MessageModuleNameEnum.AIJC, hardwareId, dictionaryItem.getName(), monitoringLevelName); + if (Objects.equals(messageDevRule.getEnableSmsNotification(), 1)) { List templateParams = new ArrayList<>(); //报警类型,报警名称,设备名称,报警值,阈值,超标时间,超标量 templateParams.add(typeName); templateParams.add(location); - String text = StrUtil.format("【{}】AI警报!{},位置{}", - messageManufacturer.getConfig().getSignature(), typeName, location); - messageManufacturer.sendMsgByConfig(phoneNums, "", templateParams, text); + String text = StrUtil.format("AI警报!{},位置{}", typeName, location); + enableMessageDevRuleService.sendSms(messageDevRule, templateParams, text, null); } + enableMessageDevRuleService.sendSystemMessage(messageDevRule, "8"); }, threadPoolTaskExecutor); } diff --git a/src/main/java/com/zhgd/xmgl/call/TencentCloudMessageCall.java b/src/main/java/com/zhgd/xmgl/call/TencentCloudMessageCall.java index 911ce62d0..4e741ff0c 100644 --- a/src/main/java/com/zhgd/xmgl/call/TencentCloudMessageCall.java +++ b/src/main/java/com/zhgd/xmgl/call/TencentCloudMessageCall.java @@ -37,7 +37,7 @@ public class TencentCloudMessageCall implements MessageManufacturer { @Override - public void sendMsgByConfig(List phoneNums, String templateId, List templateParams, String text) { + public void sendMsg(List phoneNums, String templateId, List templateParams, String text) { try { doSendMsg(phoneNums, templateId, templateParams.toArray(new String[]{})); } catch (Exception e) { diff --git a/src/main/java/com/zhgd/xmgl/call/YunPianMessageCall.java b/src/main/java/com/zhgd/xmgl/call/YunPianMessageCall.java index 736af33a6..7493c43d2 100644 --- a/src/main/java/com/zhgd/xmgl/call/YunPianMessageCall.java +++ b/src/main/java/com/zhgd/xmgl/call/YunPianMessageCall.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.call; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.gexin.fastjson.JSON; import com.zhgd.xmgl.call.api.MessageManufacturer; @@ -32,13 +33,13 @@ public class YunPianMessageCall implements MessageManufacturer { } @Override - public void sendMsgByConfig(List phoneNums, String templateId, List templateParams, String text) { + public void sendMsg(List phoneNums, String templateId, List templateParams, String text) { try { for (String phoneNum : phoneNums) { HashMap formMap = new HashMap<>(); formMap.put("apikey", config.getApiKey()); formMap.put("mobile", phoneNum); - formMap.put("text", text); + formMap.put("text", StrUtil.format("【{}】{}", config.getSignature(), text)); String url = "https://sms.yunpian.com/v2/sms/single_send.json"; log.info("云片短信按短信配置发送短信,url:{},body:{}", url, JSON.toJSONString(formMap)); String body = HttpRequest.post(url).form(formMap).execute().body(); diff --git a/src/main/java/com/zhgd/xmgl/call/api/MessageManufacturer.java b/src/main/java/com/zhgd/xmgl/call/api/MessageManufacturer.java index 6e33e68cd..40f9e0e0b 100644 --- a/src/main/java/com/zhgd/xmgl/call/api/MessageManufacturer.java +++ b/src/main/java/com/zhgd/xmgl/call/api/MessageManufacturer.java @@ -21,5 +21,5 @@ public interface MessageManufacturer { * @param templateParams 模板参数(腾讯云) * @param text 消息(云片) */ - void sendMsgByConfig(List phoneNums, String templateId, List templateParams, String text); + void sendMsg(List phoneNums, String templateId, List templateParams, String text); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java index cb988964f..ec0b8b0ef 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/LoginController.java @@ -255,11 +255,10 @@ public class LoginController { hashValue.put("t", DateUtil.now()); redisRepository.set(key, hashValue, 60L); templateParams.add(randomNum); - String text = StrUtil.format("【{}】您的登录验证码是:{},有效期5分钟。请勿泄露给他人。", - messageManufacturer.getConfig().getSignature(), randomNum); + String text = StrUtil.format("您的登录验证码是:{},有效期5分钟。请勿泄露给他人。", randomNum); List phoneNums = new ArrayList<>(); phoneNums.add(user.getUserTel()); - messageManufacturer.sendMsgByConfig(phoneNums, messageManufacturer.getConfig().getSecretId(), templateParams, text); + messageManufacturer.sendMsg(phoneNums, messageManufacturer.getConfig().getSecretId(), templateParams, text); return Result.ok(); } else { throw new OpenAlertException("短信没配置或没启动短信登录"); diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/entity/EnvironmentAlarm.java b/src/main/java/com/zhgd/xmgl/modules/environment/entity/EnvironmentAlarm.java index 16b031d96..dc23de048 100644 --- a/src/main/java/com/zhgd/xmgl/modules/environment/entity/EnvironmentAlarm.java +++ b/src/main/java/com/zhgd/xmgl/modules/environment/entity/EnvironmentAlarm.java @@ -22,7 +22,7 @@ import io.swagger.annotations.ApiModelProperty; @ApiModel(value="EnvironmentAlarm实体类",description="EnvironmentAlarm") public class EnvironmentAlarm implements Serializable { private static final long serialVersionUID = 1L; - + /**绿色设备报警预警表*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value="绿色设备报警预警表") @@ -30,7 +30,6 @@ public class EnvironmentAlarm implements Serializable { /**报警类型外键*/ @Excel(name = "报警类型外键", width = 15) @ApiModelProperty(value="报警类型外键") - private java.lang.Long alarmTypeId ; /**平均值数据*/ @Excel(name = "平均值数据", width = 15) 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 c9573670b..48f5584d4 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 @@ -11,8 +11,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.async.AsyncEnvironment; -import com.zhgd.xmgl.call.api.MessageManufacturer; import com.zhgd.xmgl.call.factory.MessageManufacturerFactory; +import com.zhgd.xmgl.enums.ParamEnum; import com.zhgd.xmgl.modules.basicdata.entity.Notice; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper; @@ -28,7 +28,10 @@ import com.zhgd.xmgl.modules.environment.entity.vo.NewEnvironmentAlarmVo; import com.zhgd.xmgl.modules.environment.mapper.EnvironmentAlarmMapper; import com.zhgd.xmgl.modules.environment.mapper.EnvironmentWarningMapper; import com.zhgd.xmgl.modules.environment.service.IEnvironmentAlarmService; +import com.zhgd.xmgl.modules.environment.service.IEnvironmentAlarmTypeService; +import com.zhgd.xmgl.modules.project.entity.EnableMessageDevRule; import com.zhgd.xmgl.modules.project.entity.qo.QueryProjectTodayAlarmInfoQO; +import com.zhgd.xmgl.modules.project.service.IEnableMessageDevRuleService; import com.zhgd.xmgl.modules.project.service.IMessageConfigV2Service; import com.zhgd.xmgl.modules.sprayrt.service.ISprayRtDevService; import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; @@ -96,6 +99,12 @@ public class EnvironmentAlarmServiceImpl extends ServiceImpl queryEnvironmentAlarmPageList(Map map) { @@ -813,26 +822,26 @@ public class EnvironmentAlarmServiceImpl extends ServiceImpl { - MessageManufacturer messageManufacturer = messageManufacturerFactory.getMessageManufacturer(environmentAlarm.getProjectSn()); - if (messageManufacturer != null) { - String alarmType = environmentAlarm.getType() == 1 ? "预警" : "报警"; - String threshold = NumberUtil.sub(environmentAlarm.getAlarmValue(), environmentAlarm.getExceed()) + ""; - String time = DateUtil.formatDateTime(environmentAlarm.getAlarmTime()); - List phoneNums = systemUserService.list(new LambdaQueryWrapper() - .in(SystemUser::getId, StrUtil.split(pushPerson, ","))).stream().map(SystemUser::getUserTel).collect(Collectors.toList()); + String monitoringLevelName = environmentAlarm.getType() == 1 ? "预警" : "报警"; + String threshold = NumberUtil.sub(environmentAlarm.getAlarmValue(), environmentAlarm.getExceed()) + ""; + String time = DateUtil.formatDateTime(environmentAlarm.getAlarmTime()); + String monitoringParameterName = environmentAlarmTypeService.getById(environmentAlarm.getAlarmTypeId()).getAlarmType(); + EnableMessageDevRule messageDevRule = enableMessageDevRuleService.getRule(ParamEnum.MessageModuleNameEnum.YCJC, environmentAlarm.getDeviceId(), monitoringParameterName, monitoringLevelName); + if (Objects.equals(messageDevRule.getEnableSmsNotification(), 1)) { List templateParams = new ArrayList<>(); //报警类型,报警名称,设备名称,报警值,阈值,超标时间,超标量 - templateParams.add(alarmType); + templateParams.add(monitoringLevelName); templateParams.add(alarmName); templateParams.add(devname); templateParams.add(environmentAlarm.getAlarmValue() + ""); templateParams.add(threshold); templateParams.add(time); templateParams.add(environmentAlarm.getExceed() + ""); - String text = StrUtil.format("【{}】扬尘超标警报!报警类型:{},报警名称:{},设备名称:{},报警值:{},阈值:{},超标时间:{},超标量:{}", - messageManufacturer.getConfig().getSignature(), alarmType, alarmName, devname, environmentAlarm.getAlarmValue() + "", threshold, time, environmentAlarm.getExceed() + ""); - messageManufacturer.sendMsgByConfig(phoneNums, "", templateParams, text); + String text = StrUtil.format("扬尘超标警报!报警类型:{},报警名称:{},设备名称:{},报警值:{},阈值:{},超标时间:{},超标量:{}", + monitoringLevelName, alarmName, devname, environmentAlarm.getAlarmValue() + "", threshold, time, environmentAlarm.getExceed() + ""); + enableMessageDevRuleService.sendSms(messageDevRule, templateParams, text, null); } + enableMessageDevRuleService.sendSystemMessage(messageDevRule, "7"); }, threadPoolTaskExecutor); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/EnableMessageDevRule.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/EnableMessageDevRule.java index 4dacbf814..093a4ac1a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/EnableMessageDevRule.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/EnableMessageDevRule.java @@ -146,9 +146,9 @@ public class EnableMessageDevRule implements Serializable { @ApiModelProperty(value = "语音文件配置") private java.lang.String voiceFileConfiguration; /** - * 广播设备sn(多个,分割) + * 广播设备编号(多个,分割) */ - @ApiModelProperty(value = "广播设备sn(多个,分割)") + @ApiModelProperty(value = "广播设备编号(多个,分割)") private java.lang.String broadcastDevices; /** * 创建时间 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 8fb6d2a9d..976edce37 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 @@ -1,13 +1,17 @@ package com.zhgd.xmgl.modules.project.service; -import com.zhgd.xmgl.modules.project.entity.EnableMessageDevRule; -import com.zhgd.xmgl.modules.project.entity.vo.EnableMessageDevRuleVo; -import com.zhgd.xmgl.modules.project.entity.dto.EnableMessageDevRuleDto; -import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.sun.istack.internal.Nullable; +import com.zhgd.xmgl.enums.ParamEnum; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.project.entity.EnableMessageDevRule; +import com.zhgd.xmgl.modules.project.entity.dto.EnableMessageDevRuleDto; +import com.zhgd.xmgl.modules.project.entity.vo.EnableMessageDevRuleVo; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @Description: 通知设备规则 @@ -64,4 +68,34 @@ public interface IEnableMessageDevRuleService extends IService templateParams, String text, @Nullable Map userMap); + + /** + * 发送系统站内消息 + * + * @param rule + * @param type + */ + void sendSystemMessage(EnableMessageDevRule rule, String type); } 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 c22753f5e..53d568e58 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 @@ -1,25 +1,41 @@ package com.zhgd.xmgl.modules.project.service.impl; -import com.zhgd.jeecg.common.execption.OpenAlertException; -import com.zhgd.xmgl.modules.project.entity.EnableMessageDevRule; -import com.zhgd.xmgl.modules.project.entity.vo.EnableMessageDevRuleVo; -import com.zhgd.xmgl.modules.project.entity.dto.EnableMessageDevRuleDto; -import com.zhgd.xmgl.modules.project.mapper.EnableMessageDevRuleMapper; -import com.zhgd.xmgl.modules.project.service.IEnableMessageDevRuleService; -import org.springframework.stereotype.Service; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zhgd.jeecg.common.system.query.QueryGenerator; -import com.zhgd.xmgl.util.PageUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.call.api.DevSmsManufacturer; +import com.zhgd.xmgl.call.factory.DevSmsManufacturerFactory; +import com.zhgd.xmgl.enums.ParamEnum; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.entity.bo.NoticeMessagePromptTone; +import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; +import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; +import com.zhgd.xmgl.modules.project.entity.EnableMessageDev; +import com.zhgd.xmgl.modules.project.entity.EnableMessageDevRule; +import com.zhgd.xmgl.modules.project.entity.dto.EnableMessageDevRuleDto; +import com.zhgd.xmgl.modules.project.entity.vo.EnableMessageDevRuleVo; +import com.zhgd.xmgl.modules.project.mapper.EnableMessageDevRuleMapper; +import com.zhgd.xmgl.modules.project.service.IEnableMessageDevRuleService; +import com.zhgd.xmgl.modules.project.service.IEnableMessageDevService; +import com.zhgd.xmgl.util.PageUtil; +import com.zhgd.xmgl.util.RefUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; - -import com.zhgd.xmgl.util.RefUtil; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.beans.factory.annotation.Autowired; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Description: 通知设备规则 @@ -29,8 +45,20 @@ import org.springframework.beans.factory.annotation.Autowired; */ @Service public class EnableMessageDevRuleServiceImpl extends ServiceImpl implements IEnableMessageDevRuleService { + @Lazy + @Autowired + ISystemUserService systemUserService; @Autowired private EnableMessageDevRuleMapper enableMessageDevRuleMapper; + @Lazy + @Autowired + private IEnableMessageDevService enableMessageDevService; + @Lazy + @Autowired + private DevSmsManufacturerFactory devSmsManufacturerFactory; + @Lazy + @Autowired + private NoticeServiceImpl noticeService; @Override public IPage queryPageList(HashMap param) { @@ -90,4 +118,68 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl() + .eq(EnableMessageDev::getMonitoringModule, moduleEnum.getValue()) + .eq(EnableMessageDev::getDevSn, devSn) + ); + if (messageDev == null || Objects.equals(messageDev.getIsEnable(), 0)) { + return null; + } + return this.getOne(new LambdaQueryWrapper() + .eq(EnableMessageDevRule::getMonitoringModuleName, moduleEnum.getDesc()) + .eq(EnableMessageDevRule::getDevSn, devSn) + .eq(EnableMessageDevRule::getMonitoringParameterName, monitoringParameterName) + .eq(EnableMessageDevRule::getMonitoringLevelName, monitoringLevelName) + ); + } + + /** + * 获取发送短信的号码 + * + * @param smsAlarmRecipientIds + * @return + */ + private List getPhoneNums(String smsAlarmRecipientIds, Map userMap) { + if (StrUtil.isBlank(smsAlarmRecipientIds)) { + return null; + } + return StrUtil.split(smsAlarmRecipientIds, ",").stream().filter(id -> userMap.containsKey(Convert.toLong(id))).map(id -> userMap.get(Convert.toLong(id)).getUserTel()) + .filter(StrUtil::isNotBlank).collect(Collectors.toList()); + } + + @Override + public void sendSms(EnableMessageDevRule rule, List 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); + } + } + } + + @Override + public void sendSystemMessage(EnableMessageDevRule rule, String type) { + if (rule == null) { + return; + } + if (Objects.equals(rule.getEnableSystemMessagePush(), 1) && StrUtil.isNotBlank(rule.getAlarmRecipientIds())) { + List ids = StrUtil.split(rule.getAlarmRecipientIds(), ",").stream().map(Convert::toLong).collect(Collectors.toList()); + NoticeMessagePromptTone tone = null; + //系统站内声音提示 + if (Objects.equals(rule.getEnableSystemMessagePromptTone(), 1)) { + tone = new NoticeMessagePromptTone(rule.getMessagePromptToneConfig(), rule.getPlaybackFrequency()); + } + for (Long id : ids) { + noticeService.addUserNoticeAndApp(id, "设备报警通知", rule.getMessageTemplateContent(), type, tone); + } + } + } + + } diff --git a/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceController.java b/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceController.java index 96d93761d..0e2ee9ac5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceController.java +++ b/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceController.java @@ -119,7 +119,8 @@ public class RiskListSourceController { }) @GetMapping(value = "/page") public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { - return Result.success(riskListSourceService.queryPageList(param)); + return Result.success(riskListSourceService. + queryPageList(param)); } /** diff --git a/src/main/java/com/zhgd/xmgl/modules/risk/service/impl/RiskListSourceServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/risk/service/impl/RiskListSourceServiceImpl.java index 2b3a6d22e..ad2f8dbf9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/risk/service/impl/RiskListSourceServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/risk/service/impl/RiskListSourceServiceImpl.java @@ -236,7 +236,7 @@ public class RiskListSourceServiceImpl extends ServiceImpl securityList1 = securityList.stream().filter(r -> StrUtil.isNotBlank(r.getInspectTime()) && Objects.equals(r.getEngineeringId(), sourceVo.getId())).collect(Collectors.toList()); List unbuilts1 = unbuilts.stream().filter(r -> r.getInspectionTime() != null && Objects.equals(r.getSourceId(), sourceVo.getId())).collect(Collectors.toList()); return StrUtil.split(sourceVo.getSpecificResponsibilityAreaIds(), ",").stream().map(Convert::toLong).filter(regionId -> { - int totalCalNum = getTotalCalNum(sourceVo, String.valueOf(regionId), securityList1, unbuilts1); + int totalCalNum = getCalNum(sourceVo, String.valueOf(regionId), securityList1, unbuilts1); int remainingNum = sourceVo.getCheckNum() - totalCalNum; return remainingNum > 0; }).collect(Collectors.toList()); @@ -260,7 +260,7 @@ public class RiskListSourceServiceImpl extends ServiceImpl securityList, List unbuilts) { + private int getCalNum(RiskListSourceVo sourceVo, String regionId, List securityList, List unbuilts) { String today = DateUtil.today(); Date date = new Date(); String year = DateUtil.format(date, "yyyy"); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzAiDeductRuleService.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzAiDeductRuleService.java index 6b5252f73..16fae3439 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzAiDeductRuleService.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzAiDeductRuleService.java @@ -59,4 +59,12 @@ public interface IXzAiDeductRuleService extends IService { * @return */ List getListByDicId(List dicIdList, String projectSn); + + /** + * 获取等级中文名称 + * + * @param level + * @return + */ + public String getLevelName(Integer level); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzAiDeductRuleServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzAiDeductRuleServiceImpl.java index d134f10bd..1ab3472bc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzAiDeductRuleServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzAiDeductRuleServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; +import java.util.Objects; /** * @Description: 星纵-AI扣分规则 @@ -94,5 +95,20 @@ public class XzAiDeductRuleServiceImpl extends ServiceImpl dictDataMap.get(Convert.toStr(r1.getAlarmType())).getName(), Collectors.groupingBy(r -> Optional.of(dictDataMap.get(Convert.toStr(r.getAlarmType()))).map(m -> dicIdMap.get(m.getId())).map(r1 -> { - if (Objects.equals(r1.getLevel(), 1)) { - return "一级"; - } else if (Objects.equals(r1.getLevel(), 2)) { - return "二级"; - } else if (Objects.equals(r1.getLevel(), 3)) { - return "三级"; - } else { - return "四级"; - } + return xzAiDeductRuleService.getLevelName(r1.getLevel()); }).orElse(null))))); for (Map.Entry> moduleEntry : moduleMap.entrySet()) { List entryRules = moduleEntry.getValue(); @@ -165,29 +155,14 @@ public class MessageDevRuleTask { */ private void sendNotice(EnableMessageDevRule rule, int filterAlarms, Map userMap, String type) { if (Objects.equals(rule.getEnableSmsNotification(), 1) && isSmsSendTime(rule)) { - DevSmsManufacturer messageManufacturer = devSmsManufacturerFactory.getMessageManufacturer(rule.getProjectSn()); - if (messageManufacturer != null) { - String text = StrUtil.format("{}{}{}异常,近{}小时累计报警{}次!", - rule.getMonitoringModuleName(), rule.getMonitoringParameterName(), rule.getMonitoringLevelName(), rule.getSmsPushFrequency(), filterAlarms); - List phoneNums = getPhoneNums(rule.getSmsAlarmRecipientIds(), userMap); - if (CollUtil.isNotEmpty(phoneNums)) { - messageManufacturer.sendMsg(phoneNums, rule.getNotificationSmsTemplateId(), null, text); - } - } + 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); } //系统站内 if (Objects.equals(rule.getEnableSystemMessagePush(), 1) && isSystemSendTime(rule)) { - if (StrUtil.isNotBlank(rule.getAlarmRecipientIds())) { - List ids = StrUtil.split(rule.getAlarmRecipientIds(), ",").stream().map(Convert::toLong).collect(Collectors.toList()); - NoticeMessagePromptTone tone = null; - //系统站内声音提示 - if (Objects.equals(rule.getEnableSystemMessagePromptTone(), 1)) { - tone = new NoticeMessagePromptTone(rule.getMessagePromptToneConfig(), rule.getPlaybackFrequency()); - } - for (Long id : ids) { - noticeService.addUserNoticeAndApp(id, "设备报警通知", rule.getMessageTemplateContent(), type, tone); - } - } + enableMessageDevRuleService.sendSystemMessage(rule, type); } } @@ -217,19 +192,5 @@ public class MessageDevRuleTask { && rule.getSmsPushTimeBegin().getHour() <= hour && rule.getSmsPushTimeEnd().getHour() >= hour; } - /** - * 获取发送短信的号码 - * - * @param smsAlarmRecipientIds - * @param userMap - * @return - */ - private List getPhoneNums(String smsAlarmRecipientIds, Map userMap) { - if (StrUtil.isBlank(smsAlarmRecipientIds)) { - return null; - } - return StrUtil.split(smsAlarmRecipientIds, ",").stream().filter(id -> userMap.containsKey(Convert.toLong(id))).map(id -> userMap.get(Convert.toLong(id)).getUserTel()) - .filter(StrUtil::isNotBlank).collect(Collectors.toList()); - } }