diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java index 45018aca..2ac1db5d 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java @@ -328,8 +328,9 @@ public class EmailServiceManager { props.put("mail.smtp.host", email.getEmailServerAddress()); props.put("mail.smtp.port", email.getPort()); props.put("mail.smtp.auth", "true"); - /*props.put("mail.smtp.socketFactory.port", email.getPort()); - props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");*/ + props.put("mail.smtp.starttls.enable", "true"); + props.put("mail.smtp.socketFactory.port", email.getPort()); + props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); Session session = Session.getInstance(props); diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java index 77a23fac..cac153bc 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/NuclideInfo.java @@ -3,8 +3,12 @@ package org.jeecg.modules.base.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import org.jeecg.common.util.NumUtil; + import java.io.Serializable; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; @Data @JsonIgnoreProperties(ignoreUnknown = true) @@ -17,4 +21,8 @@ public class NuclideInfo implements Serializable { private String datasource; private String value; + + public void keepSix(){ + this.value = NumUtil.keepStr(this.value, 6); + } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java index 1165b97e..bf52a64a 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/AnalysisConsumer.java @@ -150,14 +150,17 @@ public class AnalysisConsumer implements StreamListener conditions = ListUtil.toList(conditionStr.split(COMMA)); + List first = new ArrayList<>(); + List average = new ArrayList<>(); + List meanwhile = new ArrayList<>(); for (String con : conditions) { Condition condition = Condition.valueOf1(con); if (ObjectUtil.isNotNull(condition)){ switch (condition){ case FIRST_FOUND: // 首次发现该元素 - firstDetected = firstDetected(betaOrGamma,datasource,nuclideNames); + firstDetected = firstDetected(betaOrGamma, datasource, nuclideNames); if (CollUtil.isNotEmpty(firstDetected)){ - String message = "First discovery of nuclides: [" + StrUtil.join(COMMA,firstDetected) + "]"; + String message = "First discovery of nuclides: [" + StrUtil.join(COMMA, firstDetected) + "]"; alarmInfo.append(message); } break; @@ -167,14 +170,14 @@ public class AnalysisConsumer implements StreamListener= 2){ - String message = "Simultaneously detecting nuclides: [" + StrUtil.join(COMMA,nuclideNames) + "]"; + String message = "Simultaneously detecting nuclides: [" + StrUtil.join(COMMA, nuclideNames) + "]"; alarmInfo.append(COMMA).append(message); } break; diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java index af13f2a3..47f34b54 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/AlarmAnalysisLogServiceImpl.java @@ -75,6 +75,7 @@ public class AlarmAnalysisLogServiceImpl extends ServiceImpl nuclideInfos = mapper.readValue(nuclideInfo, new TypeReference>() {}); + nuclideInfos.forEach(NuclideInfo::keepSix); logDto.setNuclideList(nuclideInfos); } catch (JsonProcessingException e) { log.error("NuclideInfo解析异常: {}", e.getMessage()); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java index 17b8ed10..7f68d45c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java @@ -1,5 +1,6 @@ package org.jeecg.modules.feignclient; +import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.system.util.JwtUtil; @@ -9,6 +10,7 @@ import org.jeecg.modules.base.dto.LoginResult; import org.jeecg.modules.base.dto.LoginVo; import org.springframework.core.env.Environment; +@Slf4j public class ManageUtil { private static RedisUtil redisUtil; @@ -31,20 +33,28 @@ public class ManageUtil { * 登录运管系统 获取Token * */ public static String getToken(){ - if (redisUtil.hasKey(RedisConstant.MANAGE_TOKEN)) - return (String) redisUtil.get(RedisConstant.MANAGE_TOKEN); - - LoginVo loginVo = new LoginVo(username, password); - Result loginRes = monitorSystem.login(loginVo); - String token = loginRes.getResult().getToken(); - redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); - return token; + String token = null; + try { + if (redisUtil.hasKey(RedisConstant.MANAGE_TOKEN)) + return (String) redisUtil.get(RedisConstant.MANAGE_TOKEN); + LoginVo loginVo = new LoginVo(username, password); + Result loginRes = monitorSystem.login(loginVo); + token = loginRes.getResult().getToken(); + redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); + return token; + }catch (RuntimeException e){ + return token; + } } public static void refreshToken(){ - LoginVo loginVo = new LoginVo(username, password); - Result loginRes = monitorSystem.login(loginVo); - String token = loginRes.getResult().getToken(); - redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); + try { + LoginVo loginVo = new LoginVo(username, password); + Result loginRes = monitorSystem.login(loginVo); + String token = loginRes.getResult().getToken(); + redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME / 1000 - 10); + }catch (RuntimeException e){ + log.error("运管系统登录异常, Token刷新失败: {}", e.getMessage()); + } } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java index 698fa427..d3e39205 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/SendMessage.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.enums.MessageTypeEnum; @@ -27,6 +28,7 @@ import static org.jeecg.common.constant.enums.MessageTypeEnum.*; * @author nieziyan * @date 2023-06-21 */ +@Slf4j @Component public class SendMessage { @@ -50,6 +52,7 @@ public class SendMessage { */ public void send(MessageDTO messageDTO, String groupId, String notific){ Map contact = getContact(groupId); + if (MapUtil.isEmpty(contact)) return; if (StrUtil.isBlank(notific)) return; List ways = ListUtil.toList(StrUtil.split(notific, COMMA)); if (ways.contains(ALL.getValue())) @@ -96,26 +99,33 @@ public class SendMessage { * @param groupId */ private Map getContact(String groupId){ - List userIds = abnormalAlarmClient.userIds(groupId).getResult(); - // 查询用户信息 - List sysUsers = sysUserService.listByIds(userIds); - // 用户名 - String usernameList = sysUsers.stream().map(SysUser::getUsername).filter(StrUtil::isNotBlank) - .collect(Collectors.joining(COMMA)); - // 邮箱 - String emailList = sysUsers.stream().map(SysUser::getEmail).filter(StrUtil::isNotBlank) - .collect(Collectors.joining(COMMA)); - // 用户名-邮箱Map - Map userEmail = sysUsers.stream() - .collect(Collectors.toMap(SysUser::getUsername, SysUser::getEmail)); - // 手机号码 - String phoneList = sysUsers.stream().map(SysUser::getPhone).filter(StrUtil::isNotBlank) - .collect(Collectors.joining(COMMA)); Map result = new HashMap<>(); - result.put(SYSTEM, usernameList); - result.put(EMAIL, emailList); - result.put(SMS, phoneList); - result.putAll(userEmail); - return result; + try { + List userIds = abnormalAlarmClient.userIds(groupId).getResult(); + // 查询用户信息 + List sysUsers = sysUserService.listByIds(userIds); + // 用户名 + String usernameList = sysUsers.stream().map(SysUser::getUsername).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(COMMA)); + // 邮箱 + String emailList = sysUsers.stream().map(SysUser::getEmail).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(COMMA)); + // 用户名-邮箱Map + Map userEmail = sysUsers.stream() + .filter(item -> StrUtil.isNotBlank(item.getEmail())) + .collect(Collectors.toMap(SysUser::getUsername, SysUser::getEmail)); + // 手机号码 + String phoneList = sysUsers.stream().map(SysUser::getPhone).filter(StrUtil::isNotBlank) + .collect(Collectors.joining(COMMA)); + + result.put(SYSTEM, usernameList); + result.put(EMAIL, emailList); + result.put(SMS, phoneList); + result.putAll(userEmail); + return result; + }catch (Exception e) { + log.error("获取收件人联系信息异常: {}", e.getMessage()); + return result; + } } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java index 9753f15a..5da9a25a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/DatabaseJob.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import feign.FeignException; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; @@ -102,6 +103,10 @@ public class DatabaseJob extends Monitor implements Job{ }*/ // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -141,9 +146,12 @@ public class DatabaseJob extends Monitor implements Job{ getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } + } catch (FeignException.Unauthorized e){ + ManageUtil.refreshToken(); + log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Database预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); - }catch (Exception e){ + } catch (Exception e){ log.error("Database监控异常: {}", e.getMessage()); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java index 5d5c8a89..2c544195 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/job/ServerJob.java @@ -85,6 +85,10 @@ public class ServerJob extends Monitor implements Job { // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -124,12 +128,12 @@ public class ServerJob extends Monitor implements Job { getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } - }catch (FeignException.Unauthorized e){ + } catch (FeignException.Unauthorized e){ ManageUtil.refreshToken(); log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Server预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); - }catch (Exception e){ + } catch (Exception e){ log.error("Server监控异常: {}", e.getMessage()); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java index 2c8d7036..5f76098c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/DatabaseJob.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import feign.FeignException; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.dto.message.MessageDTO; @@ -86,6 +87,10 @@ public class DatabaseJob extends Monitor { // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -125,11 +130,13 @@ public class DatabaseJob extends Monitor { getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } + }catch (FeignException.Unauthorized e){ + ManageUtil.refreshToken(); + log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Database预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ log.error("Database监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java index 2259aa4c..ef51c991 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/EmailJob.java @@ -111,7 +111,6 @@ public class EmailJob extends Monitor{ log.error("Email预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ log.error("Email监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java index 9bfe5b86..42182ba7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/ServerJob.java @@ -84,6 +84,10 @@ public class ServerJob extends Monitor{ // 向运管查询监控项数据 String token = ManageUtil.getToken(); + if(StrUtil.isBlank(token)){ + log.error("运管系统登录异常, Token获取失败"); + continue; + } Result result = getMonitorSystem().itemBack(itemId, itemType, start, end, token); ItemHistory itemHistory = result.getResult(); if (ObjectUtil.isNull(itemHistory)){ @@ -123,14 +127,13 @@ public class ServerJob extends Monitor{ getSendMessage().send(messageDTO, groupId, notific); getPushAppUtil().pushToSingle(messageDTO, groupId); } - }catch (FeignException.Unauthorized e){ + } catch (FeignException.Unauthorized e){ ManageUtil.refreshToken(); log.warn("向运管系统查询ItemHistory信息异常: Token失效,已刷新Token"); } catch (JsonProcessingException e) { log.error("Server预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); - }catch (Exception e){ + } catch (Exception e){ log.error("Server监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java index 441b344f..9705aceb 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/quartz/jobs/TableSpaceJob.java @@ -44,7 +44,7 @@ public class TableSpaceJob extends Monitor { /** * 解析Oracle 表空间预警规则 **/ - @Scheduled(cron = "${task.period-space:0 0 */1 * * ?}") + @Scheduled(cron = "${task.period-space:0 0/1 * * * ?}") public void execute(){ init(); @@ -124,7 +124,6 @@ public class TableSpaceJob extends Monitor { log.error("Database-TableSpace预警规则: {}解析失败,失败原因: {}", operator, e.getMessage()); }catch (Exception e){ log.error("Database-TableSpace监控异常: {}", e.getMessage()); - e.printStackTrace(); } } destroy();