From cb7449fcd6283d541e146a4f789909b1e4cb2993 Mon Sep 17 00:00:00 2001 From: nieziyan Date: Mon, 11 Dec 2023 18:54:56 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E8=BF=90=E7=AE=A1=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E6=9C=8D=E5=8A=A1=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg/common/constant/RedisConstant.java | 2 + .../modules/base/dto/AnalysisLogDto.java | 15 ---- .../jeecg/modules/base/dto/LoginResult.java | 17 +++++ .../org/jeecg/modules/base/dto/LoginVo.java | 22 ++++++ .../jeecg/modules/base/enums/Condition.java | 21 ++++++ .../controller/SystemMonitorController.java | 13 ++-- .../jeecg/modules/feignclient/ManageUtil.java | 45 ++++++++++++ .../modules/feignclient/MonitorAlarm.java | 69 ++++++++++++------- .../modules/redisStream/AnalysisConsumer.java | 56 ++++++++------- .../impl/AlarmAnalysisLogServiceImpl.java | 8 +-- .../service/impl/AlarmItemServiceImpl.java | 4 +- .../service/impl/SysServerServiceImpl.java | 13 ++-- .../jeecg/modules/feignclient/ManageUtil.java | 43 ++++++++++++ .../modules/feignclient/MonitorSystem.java | 12 +++- .../jeecg/modules/message/SendMessage.java | 2 +- .../jeecg/modules/quartz/job/ServerJob.java | 4 +- 16 files changed, 264 insertions(+), 82 deletions(-) create mode 100644 jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginResult.java create mode 100644 jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginVo.java create mode 100644 jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java create mode 100644 jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java index 809b3b7d..0d7378e1 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/RedisConstant.java @@ -34,4 +34,6 @@ public interface RedisConstant { String SERVER_STATUS = "Status:Server_Status"; String EMAIL_SENDER = "Email_Sender"; + + String MANAGE_TOKEN = "Manage:Token"; } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/AnalysisLogDto.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/AnalysisLogDto.java index dda35d6d..3f462c3b 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/AnalysisLogDto.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/AnalysisLogDto.java @@ -11,19 +11,4 @@ public class AnalysisLogDto extends AlarmAnalysisLog { private String stationCode; private List nuclideList; - - /* 以下属性作废 */ - // TODO del - - private String name; // 规则名称 - - private String source; // 当前规则关注的数据源(逗号分隔) - - private List sourceList; - - private String stations; // 当前规则关注的台站(逗号分隔) - - private List stationList; - - private String nuclides; // 当前规则关注的核素(逗号分隔) } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginResult.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginResult.java new file mode 100644 index 00000000..a73278f9 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginResult.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.base.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class LoginResult implements Serializable { + + private String token; + private Object userInfo; + private Object departs; + private Object multi_depart; + private Object roles; + private Object sysAllDictItems; + +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginVo.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginVo.java new file mode 100644 index 00000000..8d12e6fc --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/dto/LoginVo.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.base.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +public class LoginVo implements Serializable { + + private String captcha; + private String checkKey; + private String username; + private String password; + + public LoginVo(String username, String password) { + this.username = username; + this.password = password; + } +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java new file mode 100644 index 00000000..7ce3278a --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/enums/Condition.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.base.enums; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum Condition { + FIRST_FOUND("1"), ABOVE_AVERAGE("2"), MEANWHILE("3"); + + private String value; + + public static Condition valueOf1(String value){ + for (Condition condition : Condition.values()) { + if (StrUtil.equals(condition.getValue(), value)) + return condition; + } + return null; + } +} diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SystemMonitorController.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SystemMonitorController.java index 5d92a47b..0dbfa44d 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SystemMonitorController.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/controller/SystemMonitorController.java @@ -3,6 +3,7 @@ package org.jeecg.modules.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.feignclient.ManageUtil; import org.jeecg.modules.feignclient.MonitorAlarm; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -23,7 +24,8 @@ public class SystemMonitorController { Result list(String code, String hostId, Integer pageNo, Integer pageSize, String status, String type){ - return monitorAlarm.list(code, hostId, pageNo, pageSize, status, type); + String token = ManageUtil.getToken(); + return monitorAlarm.list(code, hostId, pageNo, pageSize, status, type, token); } @GetMapping("queryHostDetails") @@ -32,7 +34,8 @@ public class SystemMonitorController { @RequestParam String pageName, Integer pageNo, Integer pageSize, String start, String end){ - return monitorAlarm.detail(hostId, pageName, pageNo, pageSize, start, end); + String token = ManageUtil.getToken(); + return monitorAlarm.detail(hostId, pageName, pageNo, pageSize, start, end, token); } @GetMapping("queryItemHistory") @@ -41,7 +44,8 @@ public class SystemMonitorController { @RequestParam Integer itemType, @RequestParam String start, @RequestParam String end){ - return monitorAlarm.item(itemId, itemType, start, end); + String token = ManageUtil.getToken(); + return monitorAlarm.item(itemId, itemType, start, end, token); } @GetMapping("queryItemHistoryData") @@ -50,6 +54,7 @@ public class SystemMonitorController { @RequestParam Integer itemType, @RequestParam String start, @RequestParam String end){ - return monitorAlarm.itemData(itemId, itemType, start, end); + String token = ManageUtil.getToken(); + return monitorAlarm.itemData(itemId, itemType, start, end, token); } } diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java new file mode 100644 index 00000000..72a0f74b --- /dev/null +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java @@ -0,0 +1,45 @@ +package org.jeecg.modules.feignclient; + +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.RedisConstant; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.modules.base.dto.LoginResult; +import org.jeecg.modules.base.dto.LoginVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; +public class ManageUtil { + + private static RedisUtil redisUtil; + + private static MonitorAlarm monitorAlarm; + + private static String username; + + private static String password; + + static { + redisUtil = SpringContextUtils.getBean(RedisUtil.class); + monitorAlarm = SpringContextUtils.getBean(MonitorAlarm.class); + Environment env = SpringContextUtils.getBean(Environment.class); + username = env.getProperty("monitor.username"); + password = env.getProperty("monitor.password"); + } + + /* + * 登录运管系统 获取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 = monitorAlarm.login(loginVo); + String token = loginRes.getResult().getToken(); + redisUtil.set(RedisConstant.MANAGE_TOKEN, token, JwtUtil.EXPIRE_TIME * 2 / 1000 - 10); + return token; + } +} diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java index 25bd5204..487a6da9 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/MonitorAlarm.java @@ -1,81 +1,102 @@ package org.jeecg.modules.feignclient; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.base.dto.LoginResult; +import org.jeecg.modules.base.dto.LoginVo; import org.jeecg.modules.base.entity.monitor.Host; import org.jeecg.modules.base.entity.monitor.ItemHistory; import org.jeecg.modules.base.entity.monitor.Servers; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; @Component -@FeignClient(name = "monitorAlarm",url = "${monitor.url}") +@FeignClient(name = "monitorAlarm", url = "${monitor.url}") public interface MonitorAlarm { + // 系统登录 + @PostMapping("/sys/login") + Result login(@RequestBody LoginVo loginVo); + // --------------------后端专用------------------- - @GetMapping("list") // 获取所有 服务器/数据库服务 信息 - Result listApp(@RequestParam("type") String type); + @GetMapping("/omms/device/monitor/list") // 获取所有 服务器/数据库服务 信息 + Result listApp(@RequestParam("type") String type, + @RequestHeader("X-Access-Token") String token); - @GetMapping("list") // 获取所有在线 服务器/数据库服务 信息 + @GetMapping("/omms/device/monitor/list") // 获取所有在线 服务器/数据库服务 信息 Result listOnApp(@RequestParam("status") String status, - @RequestParam("type") String type); + @RequestParam("type") String type, + @RequestHeader("X-Access-Token") String token); - @GetMapping("queryHostDetails") // 获取服务器摘要信息 + @GetMapping("/omms/device/monitor/queryHostDetails") // 获取服务器摘要信息 Result summary(@RequestParam("hostId") String hostId, - @RequestParam("pageName") String pageName); + @RequestParam("pageName") String pageName, + @RequestHeader("X-Access-Token") String token); - @GetMapping("queryItemHistory") + @GetMapping("/omms/device/monitor/queryItemHistory") Result itemBack(@RequestParam String itemId, @RequestParam Integer itemType, @RequestParam String start, - @RequestParam String end); + @RequestParam String end, + @RequestHeader("X-Access-Token") String token); // --------------------前端专用------------------- - @GetMapping("list") + @GetMapping("/omms/device/monitor/list") Result list(@RequestParam String code, @RequestParam String hostId, @RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam String status, - @RequestParam String type); + @RequestParam String type, + @RequestHeader("X-Access-Token") String token); - @GetMapping("queryHostDetails") + @GetMapping("/omms/device/monitor/queryHostDetails") Result detail(@RequestParam String hostId, @RequestParam String pageName, @RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam String start, - @RequestParam String end); + @RequestParam String end, + @RequestHeader("X-Access-Token") String token); - @GetMapping("queryItemHistory") + @GetMapping("/omms/device/monitor/queryItemHistory") Result item(@RequestParam String itemId, @RequestParam Integer itemType, @RequestParam String start, - @RequestParam String end); + @RequestParam String end, + @RequestHeader("X-Access-Token") String token); - @GetMapping("queryItemHistoryData") + @GetMapping("/omms/device/monitor/queryItemHistoryData") Result itemData(@RequestParam String itemId, @RequestParam Integer itemType, @RequestParam String start, - @RequestParam String end); + @RequestParam String end, + @RequestHeader("X-Access-Token") String token); - @GetMapping("log") + @GetMapping("/omms/device/monitor/log") Result log(@RequestParam String code, @RequestParam String deviceType, @RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam String start, @RequestParam String end, - @RequestParam String status); + @RequestParam String status, + @RequestHeader("X-Access-Token") String token); - @GetMapping("log/{hostId}") + @GetMapping("/omms/device/monitor/log/{hostId}") Result OneLog(@PathVariable("hostId") String hostId, @RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam String start, @RequestParam String end, - @RequestParam String status); + @RequestParam String status, + @RequestHeader("X-Access-Token") String token); + + // 数据库相关 + @GetMapping("/omms/monitor/db/item/detail") + Result dbDetail(@RequestHeader("X-Access-Token") String token); + + @GetMapping("/omms/monitor/db/list") + Result dbList(@RequestHeader("X-Access-Token") String token); } 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 00402558..60ea3c64 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 @@ -6,6 +6,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.NoArgsConstructor; @@ -20,6 +21,7 @@ import org.jeecg.modules.base.dto.Info; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisLog; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisNuclideAvg; import org.jeecg.modules.base.entity.postgre.AlarmAnalysisRule; +import org.jeecg.modules.base.enums.Condition; import org.jeecg.modules.feignclient.SystemClient; import org.jeecg.modules.service.AnalysisResultService; import org.jeecg.modules.service.IAlarmAnalysisLogService; @@ -83,7 +85,7 @@ public class AnalysisConsumer implements StreamListener nuclidesCross){ - String ONE = "1";String TWO = "2";String THREE = "3"; Set nuclideNames = nuclidesCross.keySet(); StringBuilder alarmInfo = new StringBuilder(); List firstDetected; @@ -149,26 +150,35 @@ public class AnalysisConsumer implements StreamListener conditions = ListUtil.toList(conditionStr.split(comma)); for (String con : conditions) { - if (ONE.equals(con)){ // 首次发现该元素 - firstDetected = firstDetected(betaOrGamma,datasource,nuclideNames); - if (CollUtil.isNotEmpty(firstDetected)){ - String message = "First discovery of nuclides: [" + StrUtil.join(comma,firstDetected) + "]"; - alarmInfo.append(message); - } - } else if (TWO.equals(con)) { // 元素浓度高于均值 - moreThanAvg = moreThanAvg(datasource,nuclidesCross); - if (CollUtil.isNotEmpty(moreThanAvg)){ - for (NuclideInfo nuclideInfo : moreThanAvg) { - String nuclide = nuclideInfo.getNuclide(); - String threshold = nuclideInfo.getThreshold(); - String message = "Nuclide " + nuclide + "is above average: " + threshold; - alarmInfo.append(comma).append(message); - } - } - } else if (THREE.equals(con)) { // 同时出现两种及以上核素 - if (nuclideNames.size() >= 2){ - String message = "Simultaneously detecting nuclides: [" + StrUtil.join(comma,nuclideNames) + "]"; - alarmInfo.append(comma).append(message); + Condition condition = Condition.valueOf1(con); + if (ObjectUtil.isNotNull(condition)){ + switch (condition){ + case FIRST_FOUND: // 首次发现该元素 + firstDetected = firstDetected(betaOrGamma,datasource,nuclideNames); + if (CollUtil.isNotEmpty(firstDetected)){ + String message = "First discovery of nuclides: [" + StrUtil.join(comma,firstDetected) + "]"; + alarmInfo.append(message); + } + break; + case ABOVE_AVERAGE: // 元素浓度高于均值 + moreThanAvg = moreThanAvg(datasource,nuclidesCross); + if (CollUtil.isNotEmpty(moreThanAvg)){ + for (NuclideInfo nuclideInfo : moreThanAvg) { + String nuclide = nuclideInfo.getNuclide(); + String threshold = nuclideInfo.getThreshold(); + String message = "Nuclide " + nuclide + "is above average: " + threshold; + alarmInfo.append(comma).append(message); + } + } + break; + case MEANWHILE: // 同时出现两种及以上核素 + if (nuclideNames.size() >= 2){ + String message = "Simultaneously detecting nuclides: [" + StrUtil.join(comma,nuclideNames) + "]"; + alarmInfo.append(comma).append(message); + } + break; + default: + break; } } } @@ -186,7 +196,7 @@ public class AnalysisConsumer implements StreamListener nuclideInfos = mapper.readValue(nuclideInfo, new TypeReference>() {}); logDto.setNuclideList(nuclideInfos); } catch (JsonProcessingException e) { - log.error("nuclideInfo解析异常: {}", e.getMessage()); + log.error("NuclideInfo解析异常: {}", e.getMessage()); } } } @@ -100,7 +96,7 @@ public class AlarmAnalysisLogServiceImpl extends ServiceImpl hosts = monitorAlarm.listApp(MonitorConstant.SERVER_APP).getResult().getRecords(); + String token = ManageUtil.getToken(); + List hosts = monitorAlarm.listApp(MonitorConstant.SERVER_APP, token).getResult().getRecords(); // 获取所有服务器信息 List servers = serverService.list(); List hostIds = servers.stream().map(SysServer::getHostId).filter(StrUtil::isNotBlank) diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysServerServiceImpl.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysServerServiceImpl.java index eb885afc..a04dbad2 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysServerServiceImpl.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/service/impl/SysServerServiceImpl.java @@ -31,6 +31,7 @@ import org.jeecg.modules.base.entity.postgre.SysServer; import org.jeecg.modules.base.bizVo.SourceVo; import org.jeecg.modules.base.enums.ServerStatus; import org.jeecg.modules.entity.AlarmHistory; +import org.jeecg.modules.feignclient.ManageUtil; import org.jeecg.modules.feignclient.MonitorAlarm; import org.jeecg.modules.mapper.SysServerMapper; import org.jeecg.modules.service.IAlarmRuleService; @@ -74,8 +75,9 @@ public class SysServerServiceImpl extends ServiceImpl hosts = new ArrayList<>(); try { + String token = ManageUtil.getToken(); hosts = monitorAlarm.listOnApp(ServerStatus.ON.getValue(), - MonitorConstant.SERVER_APP).getResult().getRecords(); + MonitorConstant.SERVER_APP, token).getResult().getRecords(); }catch (Exception e){ log.error("向运管系统查询Hosts信息异常: {}", e.getMessage()); } @@ -244,7 +246,8 @@ public class SysServerServiceImpl extends ServiceImpl values = new HashMap<>(); try { - List hosts = monitorAlarm.listApp(MonitorConstant.SERVER_APP).getResult().getRecords(); + String token = ManageUtil.getToken(); + List hosts = monitorAlarm.listApp(MonitorConstant.SERVER_APP, token).getResult().getRecords(); Map hostMap = hosts.stream().collect(Collectors.toMap(Host::getHostId, Host -> Host)); for (SysServer server : sysServers) { String hostId = server.getHostId(); @@ -368,8 +372,9 @@ public class SysServerServiceImpl extends ServiceImpl hosts = servers.getRecords(); for (Host host : hosts) { 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 new file mode 100644 index 00000000..ce31cc03 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/ManageUtil.java @@ -0,0 +1,43 @@ +package org.jeecg.modules.feignclient; + +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.RedisConstant; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.modules.base.dto.LoginResult; +import org.jeecg.modules.base.dto.LoginVo; +import org.springframework.core.env.Environment; + +public class ManageUtil { + + private static RedisUtil redisUtil; + + private static MonitorSystem monitorSystem; + + private static String username; + + private static String password; + + static { + redisUtil = SpringContextUtils.getBean(RedisUtil.class); + monitorSystem = SpringContextUtils.getBean(MonitorSystem.class); + Environment env = SpringContextUtils.getBean(Environment.class); + username = env.getProperty("monitor.username"); + password = env.getProperty("monitor.password"); + } + + /* + * 登录运管系统 获取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 * 2 / 1000 - 10); + return token; + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/MonitorSystem.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/MonitorSystem.java index e63ce3e7..26480d20 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/MonitorSystem.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/feignclient/MonitorSystem.java @@ -1,19 +1,25 @@ package org.jeecg.modules.feignclient; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.base.dto.LoginResult; +import org.jeecg.modules.base.dto.LoginVo; import org.jeecg.modules.base.entity.monitor.ItemHistory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; @Component @FeignClient(name = "monitorSystem",url = "${monitor.url}") public interface MonitorSystem { + // 系统登录 + @PostMapping("/sys/login") + Result login(@RequestBody LoginVo loginVo); + @GetMapping("queryItemHistory") Result itemBack(@RequestParam String itemId, @RequestParam Integer itemType, @RequestParam String start, - @RequestParam String end); + @RequestParam String end, + @RequestHeader("X-Access-Token") String token); } 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 99aeb0d6..8ced3aec 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 @@ -51,7 +51,7 @@ public class SendMessage { */ public void send(String title, String message, String groupId, String notific){ // 封装MessageDTO消息体 - MessageDTO messageDTO = new MessageDTO(title,message); + MessageDTO messageDTO = new MessageDTO(title, message); Map contact = getContact(groupId); if (StrUtil.isBlank(notific))return; 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 73f79586..57e4e114 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 @@ -19,6 +19,7 @@ import org.jeecg.modules.base.entity.monitor.ItemHistory; import org.jeecg.modules.base.entity.postgre.AlarmLog; import org.jeecg.modules.base.entity.postgre.AlarmRule; import org.jeecg.modules.feignclient.AbnormalAlarmClient; +import org.jeecg.modules.feignclient.ManageUtil; import org.jeecg.modules.feignclient.MonitorSystem; import org.jeecg.modules.message.SendMessage; import org.jeecg.modules.quartz.entity.Monitor; @@ -82,7 +83,8 @@ public class ServerJob extends Monitor implements Job { String serverName = getAlarmClient().getServerName(sourceId); // 向运管查询监控项数据 - Result result = getMonitorSystem().itemBack(itemId, 0, start, end); + String token = ManageUtil.getToken(); + Result result = getMonitorSystem().itemBack(itemId, 0, start, end, token); Double current = result.getResult().getNow(); // 解析预警规则,判断是否需要报警