diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java index 1c1dcaa..4b56c67 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java @@ -3,16 +3,16 @@ package com.ruoyi.system.api; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.domain.AllInterfaceNameRemote; -import com.ruoyi.system.api.domain.EpsInitialTrafficDataRemote; -import com.ruoyi.system.api.domain.InitialSwitchInfoDetailsRemote; -import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; +import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.factory.RemoteRevenueConfigFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; +import java.util.List; + /** * 用户服务 * @@ -36,9 +36,39 @@ public interface RemoteRevenueConfigService @PostMapping("/switchInfoDetails/autoSaveSwitchTraffic") public R autoSaveSwitchTraffic(@RequestBody InitialSwitchInfoDetailsRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 监控资源信息,如果检测到心跳异常,修改资源表在线状态 + * @param queryParam + * @param source + * @return + */ @PostMapping("/registration/updateStatusByResource") public R updateStatusByResource(@RequestBody RmResourceRegistrationRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 根据客户端id查询设备其他信息 + * @param queryParam + * @param source + * @return + */ @PostMapping("/interfaceName/getMsgByClientId") public R getMsgByClientId(@RequestBody AllInterfaceNameRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 根据资源组id查询资源组名称 + * @param id + * @param source + * @return + */ + @GetMapping("/group/getResourceGroupMsgById") + public R getResourceGroupMsgById(Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 根据id查询资源信息 + * @param ids + * @param source + * @return + */ + @PostMapping("/registration/getRegistrationByIds") + public R> getRegistrationByIds(String[] ids, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java new file mode 100644 index 0000000..73e153e --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRocketMqService.java @@ -0,0 +1,19 @@ +package com.ruoyi.system.api; + +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.factory.RemoteRocketMqFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Map; + +@FeignClient(contextId = "remoteRocketMqService", value = ServiceNameConstants.ROCKETMQ_SERVICE, fallbackFactory = RemoteRocketMqFallbackFactory.class) +public interface RemoteRocketMqService { + + @PostMapping("/api/rocketMessage/sendAsyncProducerMessage") + public R sendAsyncProducerMessage(@RequestParam("topic") String topic, @RequestParam("tag") String tag, @RequestParam("key") String key, @RequestParam("value") String value, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmResourceGroupRemote.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmResourceGroupRemote.java new file mode 100644 index 0000000..1c675f8 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/RmResourceGroupRemote.java @@ -0,0 +1,60 @@ +package com.ruoyi.system.api.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 资源分组对象 rm_resource_group + * + * @author gyt + * @date 2025-08-12 + */ +@Data +public class RmResourceGroupRemote extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 组名 */ + @Excel(name = "组名") + private String groupName; + + /** 描述 */ + @Excel(name = "描述") + private String description; + + /** 包含设备id */ + private String includedDevicesId; + /** 包含设备名称 */ + @Excel(name = "包含设备") + private String includedDevicesName; + + /** 创建时间 */ + @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 修改时间 */ + @Excel(name = "修改时间",dateFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** 创建人id */ + private Long creatorId; + + /** 创建人名称 */ + private String creatorName; + + /** 修改人id */ + private Long updaterId; + + /** 修改人名称 */ + private String updaterName; + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java index 36e45cc..5175744 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java @@ -2,15 +2,14 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.RemoteRevenueConfigService; -import com.ruoyi.system.api.domain.AllInterfaceNameRemote; -import com.ruoyi.system.api.domain.EpsInitialTrafficDataRemote; -import com.ruoyi.system.api.domain.InitialSwitchInfoDetailsRemote; -import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; +import com.ruoyi.system.api.domain.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; +import java.util.List; + /** * 用户服务降级处理 * @@ -46,6 +45,16 @@ public class RemoteRevenueConfigFallbackFactory implements FallbackFactory getMsgByClientId(AllInterfaceNameRemote queryParam, String source) { return R.fail("获取服务器信息失败:" + throwable.getMessage()); } + + @Override + public R getResourceGroupMsgById(Long id, String source) { + return R.fail("获取资源组信息失败:" + throwable.getMessage()); + } + + @Override + public R> getRegistrationByIds(String[] ids, String source) { + return R.fail("获取资源注册信息失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java new file mode 100644 index 0000000..1b0b300 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRocketMqFallbackFactory.java @@ -0,0 +1,38 @@ +package com.ruoyi.system.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.RemoteRocketMqService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * 用户服务降级处理 + * + * @author ruoyi + */ +@Component +public class RemoteRocketMqFallbackFactory implements FallbackFactory +{ + private static final Logger log = LoggerFactory.getLogger(RemoteRocketMqFallbackFactory.class); + + @Override + public RemoteRocketMqService create(Throwable throwable) + { + log.error("rocketMq服务调用失败:{}", throwable.getMessage()); + return new RemoteRocketMqService() + { + @Override + public R sendAsyncProducerMessage(String topic, String tag, String key, String value, String source) { + Map errorMap = new HashMap<>(); + errorMap.put("msg", "生产者发送消息失败"); + errorMap.put("error", throwable.getMessage()); + return R.fail(errorMap); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f34c500..e986cad 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -2,3 +2,4 @@ com.ruoyi.system.api.factory.RemoteUserFallbackFactory com.ruoyi.system.api.factory.RemoteLogFallbackFactory com.ruoyi.system.api.factory.RemoteFileFallbackFactory com.ruoyi.system.api.factory.RemoteRevenueConfigFallbackFactory +com.ruoyi.system.api.factory.RemoteRocketMqFallbackFactory \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java index 421a322..1fd1532 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java @@ -21,4 +21,9 @@ public class ServiceNameConstants * 文件服务的serviceid */ public static final String FILE_SERVICE = "ruoyi-file"; + + /** + * rocketMq的serviceid + */ + public static final String ROCKETMQ_SERVICE = "ruoyi-rocketmq"; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsNodeBandwidthController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsNodeBandwidthController.java index 2346258..953fbdf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsNodeBandwidthController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsNodeBandwidthController.java @@ -244,7 +244,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeDay(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "1", ChronoUnit.DAYS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "1", ChronoUnit.DAYS); return success(list); } /** @@ -256,7 +256,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeMonth(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "2", ChronoUnit.MONTHS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "2", ChronoUnit.MONTHS); return success(list); } /** @@ -268,7 +268,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeDay(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "3", ChronoUnit.DAYS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "3", ChronoUnit.DAYS); return success(list); } /** @@ -280,7 +280,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeMonth(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "4", ChronoUnit.MONTHS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "4", ChronoUnit.MONTHS); return success(list); } /** @@ -292,7 +292,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeDay(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "5", ChronoUnit.DAYS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "5", ChronoUnit.DAYS); return success(list); } /** @@ -304,7 +304,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeMonth(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "6", ChronoUnit.MONTHS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "6", ChronoUnit.MONTHS); return success(list); } /** @@ -316,7 +316,7 @@ public class EpsNodeBandwidthController extends BaseController { // 设置时间 DateUtil.setTimeMonth(epsNodeBandwidth); - Map list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "7", ChronoUnit.MONTHS); + List list = epsNodeBandwidthService.graphicalAnalysis(epsNodeBandwidth, "7", ChronoUnit.MONTHS); return success(list); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceGroupController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceGroupController.java index e60bfc9..ec4e94b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceGroupController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceGroupController.java @@ -1,5 +1,6 @@ package com.ruoyi.system.controller; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -7,6 +8,7 @@ import com.ruoyi.common.core.web.page.PageDomain; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.system.domain.RmResourceGroup; import com.ruoyi.system.service.IRmResourceGroupService; @@ -100,4 +102,14 @@ public class RmResourceGroupController extends BaseController { return toAjax(rmResourceGroupService.deleteRmResourceGroupByIds(ids)); } + + /** + * 获取资源分组详细信息 + */ + @InnerAuth + @GetMapping(value = "/getResourceGroupMsgById") + public R getResourceGroupMsgById(Long id) + { + return R.ok(rmResourceGroupService.selectRmResourceGroupById(id)); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java index 4645aef..f584590 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceRegistrationController.java @@ -144,5 +144,17 @@ public class RmResourceRegistrationController extends BaseController return rows; } + /** + * 根据id查询资源信息 + * @param ids + * @return + */ + @GetMapping("/getRegistrationByIds") + public R> getRegistrationByIds(String[] ids) + { + List list = rmResourceRegistrationService.getRegistrationByIds(ids); + return R.ok(list); + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceGroup.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceGroup.java index ae099b2..4d9cf73 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceGroup.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceGroup.java @@ -3,8 +3,7 @@ package com.ruoyi.system.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseEntity; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import lombok.Data; import java.util.Date; @@ -14,6 +13,7 @@ import java.util.Date; * @author gyt * @date 2025-08-12 */ +@Data public class RmResourceGroup extends BaseEntity { private static final long serialVersionUID = 1L; @@ -29,9 +29,11 @@ public class RmResourceGroup extends BaseEntity @Excel(name = "描述") private String description; - /** 包含设备 */ + /** 包含设备id */ + private String includedDevicesId; + /** 包含设备名称 */ @Excel(name = "包含设备") - private String includedDevices; + private String includedDevicesName; /** 创建时间 */ @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss") @@ -55,119 +57,4 @@ public class RmResourceGroup extends BaseEntity /** 修改人名称 */ private String updaterName; - @Override - public Date getCreateTime() { - return createTime; - } - - @Override - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - @Override - public Date getUpdateTime() { - return updateTime; - } - - @Override - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - - public void setGroupName(String groupName) - { - this.groupName = groupName; - } - - public String getGroupName() - { - return groupName; - } - - public void setDescription(String description) - { - this.description = description; - } - - public String getDescription() - { - return description; - } - - public void setIncludedDevices(String includedDevices) - { - this.includedDevices = includedDevices; - } - - public String getIncludedDevices() - { - return includedDevices; - } - - public void setCreatorId(Long creatorId) - { - this.creatorId = creatorId; - } - - public Long getCreatorId() - { - return creatorId; - } - - public void setCreatorName(String creatorName) - { - this.creatorName = creatorName; - } - - public String getCreatorName() - { - return creatorName; - } - - public void setUpdaterId(Long updaterId) - { - this.updaterId = updaterId; - } - - public Long getUpdaterId() - { - return updaterId; - } - - public void setUpdaterName(String updaterName) - { - this.updaterName = updaterName; - } - - public String getUpdaterName() - { - return updaterName; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("groupName", getGroupName()) - .append("description", getDescription()) - .append("includedDevices", getIncludedDevices()) - .append("createTime", getCreateTime()) - .append("updateTime", getUpdateTime()) - .append("creatorId", getCreatorId()) - .append("creatorName", getCreatorName()) - .append("updaterId", getUpdaterId()) - .append("updaterName", getUpdaterName()) - .toString(); - } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MessageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MessageVo.java new file mode 100644 index 0000000..cbace6b --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MessageVo.java @@ -0,0 +1,13 @@ +package com.ruoyi.system.domain.vo; + +import lombok.Data; + +@Data +public class MessageVo { + + private String clientId; + + private String dataType; + + private String data; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ResourceVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ResourceVo.java new file mode 100644 index 0000000..398d5fe --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ResourceVo.java @@ -0,0 +1,17 @@ +package com.ruoyi.system.domain.vo; + +import lombok.Data; + +import java.time.Instant; + +@Data +public class ResourceVo { + + private String clientIp; + + private Integer clientPort; + + private String switchBoard; + + private Long timestamp = Instant.now().getEpochSecond(); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RmResourceRegistrationMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RmResourceRegistrationMapper.java index d7c3890..dbb1d4a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RmResourceRegistrationMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RmResourceRegistrationMapper.java @@ -84,4 +84,6 @@ public interface RmResourceRegistrationMapper * @return */ Integer updateStatusByResource(RmResourceRegistration rmResourceRegistration); + + List getRegistrationByIds(String[] ids); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsNodeBandwidthService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsNodeBandwidthService.java index 94aef8b..4119c7c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsNodeBandwidthService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsNodeBandwidthService.java @@ -86,5 +86,5 @@ public interface IEpsNodeBandwidthService * @param epsNodeBandwidth * @return */ - Map graphicalAnalysis(EpsNodeBandwidth epsNodeBandwidth, String bandwidthType, ChronoUnit timeUnit); + List graphicalAnalysis(EpsNodeBandwidth epsNodeBandwidth, String bandwidthType, ChronoUnit timeUnit); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java index 786067b..368bbd8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IRmResourceRegistrationService.java @@ -88,4 +88,6 @@ public interface IRmResourceRegistrationService R updateStatusByResource(RmResourceRegistration rmResourceRegistration); AjaxResult getServerOnlineRate(); + + List getRegistrationByIds(String[] ids); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java index 54810c9..1356bc0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java @@ -296,8 +296,8 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService return pageInfo; } @Override - public Map graphicalAnalysis(EpsNodeBandwidth epsNodeBandwidth, String bandwidthType, ChronoUnit timeUnit){ - Map nodeData = new HashMap<>(); + public List graphicalAnalysis(EpsNodeBandwidth epsNodeBandwidth, String bandwidthType, ChronoUnit timeUnit){ + List mapList = new ArrayList<>(); // 拿到列表 List nodeBandwidthList = epsNodeBandwidthMapper.selectEpsNodeBandwidthList(epsNodeBandwidth); Map uniqueNodes = nodeBandwidthList.stream() @@ -310,6 +310,7 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService (existing, replacement) -> existing )); uniqueNodes.values().forEach(node -> { + Map nodeData = new HashMap<>(); // 基础信息 nodeData.put("nodeName", node.getNodeName()); @@ -326,8 +327,9 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService epsNodeBandwidth.getEndTime(), timeUnit )); + mapList.add(nodeData); }); - return nodeData; + return mapList; } // 动态生成复合键 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java index 96e0740..368cd8c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java @@ -1,13 +1,18 @@ package com.ruoyi.system.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.RemoteRocketMqService; import com.ruoyi.system.domain.EpsNodeBandwidth; import com.ruoyi.system.domain.EpsServerRevenueConfig; import com.ruoyi.system.domain.RmEpsTopologyManagement; import com.ruoyi.system.domain.RmResourceRegistration; +import com.ruoyi.system.domain.vo.MessageVo; +import com.ruoyi.system.domain.vo.ResourceVo; import com.ruoyi.system.mapper.EpsNodeBandwidthMapper; import com.ruoyi.system.mapper.EpsServerRevenueConfigMapper; import com.ruoyi.system.mapper.RmEpsTopologyManagementMapper; @@ -18,6 +23,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -38,6 +44,8 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio private RmEpsTopologyManagementMapper rmEpsTopologyManagementMapper; @Autowired private EpsNodeBandwidthMapper epsNodeBandwidthMapper; + @Autowired + private RemoteRocketMqService remoteRocketMqService; /** * 查询资源注册 @@ -169,35 +177,87 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio * @return 结果 */ @Override - public int register(RmResourceRegistration rmResourceRegistration) - { + public int register(RmResourceRegistration rmResourceRegistration) { + // 设置更新信息 rmResourceRegistration.setUpdateTime(DateUtils.getNowDate()); rmResourceRegistration.setUpdaterId(SecurityUtils.getUserId()); rmResourceRegistration.setUpdaterName(SecurityUtils.getUsername()); - if("1".equals(rmResourceRegistration.getResourceType())){ - // 注册服务器 添加到服务器收益配置表 - EpsServerRevenueConfig epsServerRevenueConfig = new EpsServerRevenueConfig(); - epsServerRevenueConfig.setHardwareSn(rmResourceRegistration.getHardwareSn()); - epsServerRevenueConfig.setNodeName(rmResourceRegistration.getResourceName()); - epsServerRevenueConfig.setCreateTime(DateUtils.getNowDate()); - epsServerRevenueConfig.setRegistrationStatus(rmResourceRegistration.getRegistrationStatus()); - epsServerRevenueConfig.setServerIp(rmResourceRegistration.getIpAddress()); - // 新增前判断是否存在 - EpsServerRevenueConfig exits = epsServerRevenueConfigMapper.countBySn(epsServerRevenueConfig.getHardwareSn()); - if(exits != null){ - // 存在 修改 - epsServerRevenueConfig.setId(exits.getId()); - epsServerRevenueConfigMapper.updateEpsServerRevenueConfig(epsServerRevenueConfig); - }else{ - // 不存在 新增 - epsServerRevenueConfigMapper.insertEpsServerRevenueConfig(epsServerRevenueConfig); - } + + // 处理服务器资源注册 + if ("1".equals(rmResourceRegistration.getResourceType())) { + handleServerRegistration(rmResourceRegistration); } - // 仅注册 - RmResourceRegistration resourceRegistration = new RmResourceRegistration(); - resourceRegistration.setId(rmResourceRegistration.getId()); - resourceRegistration.setRegistrationStatus(rmResourceRegistration.getRegistrationStatus()); - return rmResourceRegistrationMapper.updateRmResourceRegistration(resourceRegistration); + + // 发送消息通知 + sendRegistrationMessage(rmResourceRegistration); + + // 更新注册状态 + return updateRegistrationStatus(rmResourceRegistration); + } + + /** + * 处理服务器资源注册 + */ + private void handleServerRegistration(RmResourceRegistration registration) { + EpsServerRevenueConfig config = new EpsServerRevenueConfig(); + config.setHardwareSn(registration.getHardwareSn()); + config.setNodeName(registration.getResourceName()); + config.setCreateTime(DateUtils.getNowDate()); + config.setRegistrationStatus(registration.getRegistrationStatus()); + config.setServerIp(registration.getIpAddress()); + + EpsServerRevenueConfig existing = epsServerRevenueConfigMapper.countBySn(config.getHardwareSn()); + if (existing != null) { + config.setId(existing.getId()); + epsServerRevenueConfigMapper.updateEpsServerRevenueConfig(config); + } else { + epsServerRevenueConfigMapper.insertEpsServerRevenueConfig(config); + } + } + + /** + * 发送注册/断开连接消息 + */ + private void sendRegistrationMessage(RmResourceRegistration registration) { + String messageType = "1".equals(registration.getRegistrationStatus()) ? "REGISTER" : "DISCONNECT"; + ResourceVo resourceVo = createResourceVo(registration); + + MessageVo messageVo = new MessageVo(); + messageVo.setClientId(registration.getHardwareSn()); + messageVo.setDataType(messageType); + messageVo.setData(JSONObject.toJSONString(resourceVo)); + + remoteRocketMqService.sendAsyncProducerMessage( + "tongran_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER); + } + + /** + * 创建资源VO对象 + */ + private ResourceVo createResourceVo(RmResourceRegistration registration) { + ResourceVo resourceVo = new ResourceVo(); + resourceVo.setClientIp(registration.getIpAddress()); + resourceVo.setClientPort(Integer.valueOf(registration.getResourcePort())); + + if (!"1".equals(registration.getResourceType())) { + Map switchMap = new HashMap<>(); + switchMap.put("community", registration.getTeamName()); + switchMap.put("ip", registration.getIpAddress()); + switchMap.put("port", registration.getResourcePort()); + resourceVo.setSwitchBoard(JSONObject.toJSONString(switchMap)); + } + + return resourceVo; + } + + /** + * 更新注册状态 + */ + private int updateRegistrationStatus(RmResourceRegistration registration) { + RmResourceRegistration updateParam = new RmResourceRegistration(); + updateParam.setId(registration.getId()); + updateParam.setRegistrationStatus(registration.getRegistrationStatus()); + return rmResourceRegistrationMapper.updateRmResourceRegistration(updateParam); } /** * 批量删除资源注册 @@ -280,5 +340,15 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio .put("onlineRate", onlineRate); } + /** + * 根据id查询资源注册信息 + * @param ids + * @return + */ + @Override + public List getRegistrationByIds(String[] ids) { + return rmResourceRegistrationMapper.getRegistrationByIds(ids); + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceGroupMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceGroupMapper.xml index 8f34579..c3293a9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceGroupMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceGroupMapper.xml @@ -1,14 +1,15 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - + + @@ -18,22 +19,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, group_name, description, included_devices, create_time, update_time, creator_id, creator_name, updater_id, updater_name from rm_resource_group + select id, group_name, description, included_devices_id, included_devices_name, create_time, update_time, creator_id, creator_name, updater_id, updater_name from rm_resource_group - + - select resource_name resourceName from rm_resource_registration + select id id,resource_name resourceName from rm_resource_registration and registration_status = 1 - group by resource_name + group by id + + where id in + + #{id} + + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmInitialMonitorItemController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmInitialMonitorItemController.java new file mode 100644 index 0000000..d1dadfc --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmInitialMonitorItemController.java @@ -0,0 +1,42 @@ +package com.ruoyi.rocketmq.controller; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmInitialMonitorItem; +import com.ruoyi.rocketmq.service.IRmInitialMonitorItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * 基础监控项Controller + * + * @author gyt + * @date 2025-09-10 + */ +@RestController +@RequestMapping("/initialMonitorItem") +public class RmInitialMonitorItemController extends BaseController +{ + @Autowired + private IRmInitialMonitorItemService rmInitialMonitorItemService; + + /** + * 查询监控项列表 + */ + @RequiresPermissions("rocketmq:item:list") + @PostMapping("/list") + public AjaxResult list(@RequestBody RmInitialMonitorItem rmInitialMonitorItem) + { + Map> map = rmInitialMonitorItemService.selectAllMsgList(rmInitialMonitorItem); + return success(map); + } + + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java new file mode 100644 index 0000000..6273dcb --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorPolicyController.java @@ -0,0 +1,98 @@ +package com.ruoyi.rocketmq.controller; + +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.TableDataInfo; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmMonitorPolicy; +import com.ruoyi.rocketmq.service.IRmMonitorPolicyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 资源监控策略Controller + * + * @author gyt + * @date 2025-09-10 + */ +@RestController +@RequestMapping("/policy") +public class RmMonitorPolicyController extends BaseController +{ + @Autowired + private IRmMonitorPolicyService rmMonitorPolicyService; + + /** + * 查询资源监控策略列表 + */ + @RequiresPermissions("rocketmq:policy:list") + @GetMapping("/list") + public TableDataInfo list(RmMonitorPolicy rmMonitorPolicy) + { + startPage(); + List list = rmMonitorPolicyService.selectRmMonitorPolicyList(rmMonitorPolicy); + return getDataTable(list); + } + + /** + * 导出资源监控策略列表 + */ + @RequiresPermissions("rocketmq:policy:export") + @Log(title = "资源监控策略", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RmMonitorPolicy rmMonitorPolicy) + { + List list = rmMonitorPolicyService.selectRmMonitorPolicyList(rmMonitorPolicy); + ExcelUtil util = new ExcelUtil(RmMonitorPolicy.class); + util.exportExcel(response, list, "资源监控策略数据"); + } + + /** + * 获取资源监控策略详细信息 + */ + @RequiresPermissions("rocketmq:policy:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rmMonitorPolicyService.getRmMonitorPolicyMsgById(id)); + } + + /** + * 新增资源监控策略 + */ + @RequiresPermissions("rocketmq:policy:add") + @Log(title = "资源监控策略", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RmMonitorPolicy rmMonitorPolicy) + { + return toAjax(rmMonitorPolicyService.addRmMonitorPolicy(rmMonitorPolicy)); + } + + /** + * 修改资源监控策略 + */ + @RequiresPermissions("rocketmq:policy:edit") + @Log(title = "资源监控策略", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RmMonitorPolicy rmMonitorPolicy) + { + return toAjax(rmMonitorPolicyService.updateRmMonitorPolicy(rmMonitorPolicy)); + } + /** + * 资源监控策略下发 + */ + @RequiresPermissions("rocketmq:policy:edit") + @Log(title = "资源监控策略下发", businessType = BusinessType.UPDATE) + @GetMapping("/issuePolicy") + public AjaxResult issuePolicy(Long id) + { + return toAjax(rmMonitorPolicyService.issuePolicy(id)); + } + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorTemplateController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorTemplateController.java new file mode 100644 index 0000000..4f68682 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmMonitorTemplateController.java @@ -0,0 +1,103 @@ +package com.ruoyi.rocketmq.controller; + +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.PageDomain; +import com.ruoyi.common.core.web.page.TableDataInfo; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmMonitorTemplate; +import com.ruoyi.rocketmq.domain.vo.RmMonitorTemplateVo; +import com.ruoyi.rocketmq.service.IRmMonitorTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 监控模板Controller + * + * @author gyt + * @date 2025-09-09 + */ +@RestController +@RequestMapping("/template") +public class RmMonitorTemplateController extends BaseController +{ + @Autowired + private IRmMonitorTemplateService rmMonitorTemplateService; + + /** + * 查询监控模板列表 + */ + @RequiresPermissions("rocketmq:template:list") + @PostMapping("/list") + public TableDataInfo list(@RequestBody RmMonitorTemplate rmMonitorTemplate) + { + PageDomain pageDomain = new PageDomain(); + pageDomain.setPageNum(rmMonitorTemplate.getPageNum()); + pageDomain.setPageSize(rmMonitorTemplate.getPageSize()); + startPage(pageDomain); + List list = rmMonitorTemplateService.selectRmMonitorTemplateList(rmMonitorTemplate); + return getDataTable(list); + } + + /** + * 导出监控模板列表 + */ + @RequiresPermissions("rocketmq:template:export") + @Log(title = "监控模板", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RmMonitorTemplate rmMonitorTemplate) + { + List list = rmMonitorTemplateService.selectRmMonitorTemplateList(rmMonitorTemplate); + ExcelUtil util = new ExcelUtil(RmMonitorTemplate.class); + util.exportExcel(response, list, "监控模板数据"); + } + + /** + * 获取监控模板详细信息 + */ + @RequiresPermissions("rocketmq:template:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rmMonitorTemplateService.getTemplateMsgById(id)); + } + + /** + * 新增监控模板 + */ + @RequiresPermissions("rocketmq:template:add") + @Log(title = "监控模板", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RmMonitorTemplateVo rmMonitorTemplateVo) + { + return toAjax(rmMonitorTemplateService.addRmMonitorTemplate(rmMonitorTemplateVo)); + } + + /** + * 修改监控模板 + */ + @RequiresPermissions("rocketmq:template:edit") + @Log(title = "监控模板", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RmMonitorTemplate rmMonitorTemplate) + { + return toAjax(rmMonitorTemplateService.updateRmMonitorTemplate(rmMonitorTemplate)); + } + + /** + * 删除监控模板 + */ + @RequiresPermissions("rocketmq:template:remove") + @Log(title = "监控模板", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rmMonitorTemplateService.deleteRmMonitorTemplateByIds(ids)); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmTemplateLinuxController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmTemplateLinuxController.java new file mode 100644 index 0000000..9f282d9 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmTemplateLinuxController.java @@ -0,0 +1,105 @@ +package com.ruoyi.rocketmq.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmTemplateLinux; +import com.ruoyi.rocketmq.service.IRmTemplateLinuxService; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.page.TableDataInfo; + +/** + * Linux系统监控项Controller + * + * @author gyt + * @date 2025-09-09 + */ +@RestController +@RequestMapping("/linux") +public class RmTemplateLinuxController extends BaseController +{ + @Autowired + private IRmTemplateLinuxService rmTemplateLinuxService; + + /** + * 查询Linux系统监控项列表 + */ + @RequiresPermissions("rocketmq:linux:list") + @GetMapping("/list") + public TableDataInfo list(RmTemplateLinux rmTemplateLinux) + { + startPage(); + List list = rmTemplateLinuxService.selectRmTemplateLinuxList(rmTemplateLinux); + return getDataTable(list); + } + + /** + * 导出Linux系统监控项列表 + */ + @RequiresPermissions("rocketmq:linux:export") + @Log(title = "Linux系统监控项", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RmTemplateLinux rmTemplateLinux) + { + List list = rmTemplateLinuxService.selectRmTemplateLinuxList(rmTemplateLinux); + ExcelUtil util = new ExcelUtil(RmTemplateLinux.class); + util.exportExcel(response, list, "Linux系统监控项数据"); + } + + /** + * 获取Linux系统监控项详细信息 + */ + @RequiresPermissions("rocketmq:linux:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rmTemplateLinuxService.selectRmTemplateLinuxById(id)); + } + + /** + * 新增Linux系统监控项 + */ + @RequiresPermissions("rocketmq:linux:add") + @Log(title = "Linux系统监控项", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RmTemplateLinux rmTemplateLinux) + { + return toAjax(rmTemplateLinuxService.insertRmTemplateLinux(rmTemplateLinux)); + } + + /** + * 修改Linux系统监控项 + */ + @RequiresPermissions("rocketmq:linux:edit") + @Log(title = "Linux系统监控项", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RmTemplateLinux rmTemplateLinux) + { + return toAjax(rmTemplateLinuxService.updateRmTemplateLinux(rmTemplateLinux)); + } + + /** + * 删除Linux系统监控项 + */ + @RequiresPermissions("rocketmq:linux:remove") + @Log(title = "Linux系统监控项", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rmTemplateLinuxService.deleteRmTemplateLinuxByIds(ids)); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmTemplateSwitchController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmTemplateSwitchController.java new file mode 100644 index 0000000..0100df0 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmTemplateSwitchController.java @@ -0,0 +1,105 @@ +package com.ruoyi.rocketmq.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.rocketmq.domain.RmTemplateSwitch; +import com.ruoyi.rocketmq.service.IRmTemplateSwitchService; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.page.TableDataInfo; + +/** + * 交换机监控模板Controller + * + * @author gyt + * @date 2025-09-09 + */ +@RestController +@RequestMapping("/switch") +public class RmTemplateSwitchController extends BaseController +{ + @Autowired + private IRmTemplateSwitchService rmTemplateSwitchService; + + /** + * 查询交换机监控模板列表 + */ + @RequiresPermissions("rocketmq:switch:list") + @GetMapping("/list") + public TableDataInfo list(RmTemplateSwitch rmTemplateSwitch) + { + startPage(); + List list = rmTemplateSwitchService.selectRmTemplateSwitchList(rmTemplateSwitch); + return getDataTable(list); + } + + /** + * 导出交换机监控模板列表 + */ + @RequiresPermissions("rocketmq:switch:export") + @Log(title = "交换机监控模板", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RmTemplateSwitch rmTemplateSwitch) + { + List list = rmTemplateSwitchService.selectRmTemplateSwitchList(rmTemplateSwitch); + ExcelUtil util = new ExcelUtil(RmTemplateSwitch.class); + util.exportExcel(response, list, "交换机监控模板数据"); + } + + /** + * 获取交换机监控模板详细信息 + */ + @RequiresPermissions("rocketmq:switch:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rmTemplateSwitchService.selectRmTemplateSwitchById(id)); + } + + /** + * 新增交换机监控模板 + */ + @RequiresPermissions("rocketmq:switch:add") + @Log(title = "交换机监控模板", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RmTemplateSwitch rmTemplateSwitch) + { + return toAjax(rmTemplateSwitchService.insertRmTemplateSwitch(rmTemplateSwitch)); + } + + /** + * 修改交换机监控模板 + */ + @RequiresPermissions("rocketmq:switch:edit") + @Log(title = "交换机监控模板", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RmTemplateSwitch rmTemplateSwitch) + { + return toAjax(rmTemplateSwitchService.updateRmTemplateSwitch(rmTemplateSwitch)); + } + + /** + * 删除交换机监控模板 + */ + @RequiresPermissions("rocketmq:switch:remove") + @Log(title = "交换机监控模板", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rmTemplateSwitchService.deleteRmTemplateSwitchByIds(ids)); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RocketMqController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RocketMqController.java index 6d3ed81..a094784 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RocketMqController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RocketMqController.java @@ -1,6 +1,7 @@ package com.ruoyi.rocketmq.controller; +import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.rocketmq.producer.MessageProducer; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.common.message.Message; @@ -124,11 +125,12 @@ public class RocketMqController { /** * 发送异步的消息 */ + @InnerAuth @PostMapping("/sendAsyncProducerMessage") private Map sendAsyncProducerMessage(@RequestParam("topic") String topic,@RequestParam("tag") String tag,@RequestParam("key") String key,@RequestParam("value") String value){ MessageProducer messageProducer = new MessageProducer(); //调用MessageProducer配置好的消息方法 topic需要你根据你们业务定制相应的 - SendResult sendResult = messageProducer.sendAsyncProducerMessage("order-message","order_timeout_tag","title","content"); + SendResult sendResult = messageProducer.sendAsyncProducerMessage(topic,tag,key,value); Map result = new HashMap<>(); result.put("data",sendResult); return result; diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmInitialMonitorItem.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmInitialMonitorItem.java new file mode 100644 index 0000000..f3de5ce --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmInitialMonitorItem.java @@ -0,0 +1,56 @@ +package com.ruoyi.rocketmq.domain; + +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * 基础监控项对象 rm_initial_monitor_item + * + * @author gyt + * @date 2025-09-10 + */ +@Data +public class RmInitialMonitorItem extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 监控项类型(监控项,自动发现项) */ + @Excel(name = "监控项类型(监控项,自动发现项)") + private String itemType; + + /** 监控标识(唯一键) */ + @Excel(name = "监控标识(唯一键)") + private String metricKey; + + /** 监控名称 */ + @Excel(name = "监控名称") + private String metricName; + + /** 监控OID */ + @Excel(name = "监控OID") + private String oid; + + /** 过滤值 */ + @Excel(name = "过滤值") + private String filterValue; + + /** 监控说明 */ + @Excel(name = "监控说明") + private String monitorDescription; + + /** 数据类型 */ + @Excel(name = "数据类型") + private String dataType; + + /** 资源类型 */ + @Excel(name = "资源类型") + private String resourceType; + /** 采集周期 */ + @Excel(name = "采集周期") + private String collectionCycle; + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java new file mode 100644 index 0000000..fccf5df --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorPolicy.java @@ -0,0 +1,55 @@ +package com.ruoyi.rocketmq.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import com.ruoyi.rocketmq.domain.vo.RmMonitorPolicyVo; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 资源监控策略对象 rm_monitor_policy + * + * @author gyt + * @date 2025-09-10 + */ +@Data +public class RmMonitorPolicy extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 模板ID */ + @Excel(name = "模板ID") + private Long templateId; + + /** 资源组ID */ + @Excel(name = "资源组ID") + private Long resourceGroupId; + /** 资源组名称 */ + private String resourceGroupName; + + /** 策略名称 */ + @Excel(name = "策略名称") + private String policyName; + + /** 描述 */ + @Excel(name = "描述") + private String description; + + /** 状态:0-待下发,1-已下发 */ + @Excel(name = "状态:0-待下发,1-已下发") + private String status; + + /** 下发策略时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "下发策略时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date deployTime; + /** 采集周期及id集合 */ + private List collectionAndIdList; + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorTemplate.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorTemplate.java new file mode 100644 index 0000000..62d202f --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmMonitorTemplate.java @@ -0,0 +1,45 @@ +package com.ruoyi.rocketmq.domain; + +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * 监控模板对象 rm_monitor_template + * + * @author gyt + * @date 2025-09-09 + */ +@Data +public class RmMonitorTemplate extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 模板名称 */ + @Excel(name = "模板名称") + private String templateName; + + /** 模板描述 */ + @Excel(name = "模板描述") + private String description; + + /** 监控项 */ + @Excel(name = "监控项") + private String monitorItems; + + /** 自动发现项 */ + @Excel(name = "自动发现项") + private String discoveryRules; + + /** 资源组ID */ + @Excel(name = "资源组ID") + private Long resourceGroupId; + /** 资源组名称 */ + private String resourceGroupName; + /** 资源类型(linux,switch) */ + private String resourcyType; + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmTemplateLinux.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmTemplateLinux.java new file mode 100644 index 0000000..3dfb723 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmTemplateLinux.java @@ -0,0 +1,49 @@ +package com.ruoyi.rocketmq.domain; + +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * Linux系统监控项对象 rm_template_linux + * + * @author gyt + * @date 2025-09-09 + */ +@Data +public class RmTemplateLinux extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 关联的模板ID */ + @Excel(name = "关联的模板ID") + private Long templateId; + + /** 关联的策略ID */ + private Long policyId; + + /** 监控项类型 */ + @Excel(name = "监控项类型") + private String itemType; + + /** 监控标识(唯一键) */ + @Excel(name = "监控标识(唯一键)") + private String metricKey; + + /** 监控名称 */ + @Excel(name = "监控名称") + private String metricName; + + /** 数据类型 */ + @Excel(name = "数据类型") + private String dataType; + + /** 监控状态(0-禁用,1启用) */ + @Excel(name = "监控状态(0-禁用,1启用)") + private String monitorStatus; + /** 采集周期 */ + private Long collectionCycle; +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmTemplateSwitch.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmTemplateSwitch.java new file mode 100644 index 0000000..c759678 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmTemplateSwitch.java @@ -0,0 +1,63 @@ +package com.ruoyi.rocketmq.domain; + +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * 交换机监控模板对象 rm_template_switch + * + * @author gyt + * @date 2025-09-09 + */ +@Data +public class RmTemplateSwitch extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 关联的模板ID */ + @Excel(name = "关联的模板ID") + private Long templateId; + + /** 关联的策略ID */ + private Long policyId; + + /** 监控项类型 */ + @Excel(name = "监控项类型") + private String itemType; + + /** 监控标识(唯一键) */ + @Excel(name = "监控标识(唯一键)") + private String metricKey; + + /** 监控名称 */ + @Excel(name = "监控名称") + private String metricName; + + /** 监控OID(SNMP标识) */ + @Excel(name = "监控OID(SNMP标识)") + private String oid; + + /** 过滤值(用于特定端口或接口过滤) */ + @Excel(name = "过滤值(用于特定端口或接口过滤)") + private String filterValue; + + /** 监控说明 */ + @Excel(name = "监控说明") + private String switchDescription; + + /** 数据类型 */ + @Excel(name = "数据类型") + private String dataType; + + /** 监控状态(0-禁用,1启用) */ + @Excel(name = "监控状态(0-禁用,1启用)") + private String monitorStatus; + /** 采集周期 */ + private Long collectionCycle; + + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/CollectVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/CollectVo.java new file mode 100644 index 0000000..7e32653 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/CollectVo.java @@ -0,0 +1,13 @@ +package com.ruoyi.rocketmq.domain.vo; + +import lombok.Data; + +@Data +public class CollectVo { + /** 采集类型 */ + private String type; + /** 是否采集 */ + private boolean collect = false; + /** 采集周期 */ + private Long interval = 300L; +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/RmMonitorPolicyVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/RmMonitorPolicyVo.java new file mode 100644 index 0000000..a8fd8fd --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/RmMonitorPolicyVo.java @@ -0,0 +1,23 @@ +package com.ruoyi.rocketmq.domain.vo; + +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * 资源监控策略对象 rm_monitor_policy + * + * @author gyt + * @date 2025-09-10 + */ +@Data +public class RmMonitorPolicyVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 采集周期 */ + private Long collectionCycle; + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/RmMonitorTemplateVo.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/RmMonitorTemplateVo.java new file mode 100644 index 0000000..89f512a --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/vo/RmMonitorTemplateVo.java @@ -0,0 +1,67 @@ +package com.ruoyi.rocketmq.domain.vo; + +import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +/** + * 监控模板对象 rm_monitor_template业务类 + * + * @author gyt + * @date 2025-09-09 + */ +@Data +public class RmMonitorTemplateVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 模板名称 */ + private String templateName; + + /** 模板描述 */ + private String description; + + /** 监控项 */ + private String monitorItems; + + /** 自动发现项 */ + private String discoveryRules; + + /** 资源组ID */ + private Long resourceGroupId; + + /** 关联的模板ID */ + private Long templateId; + /** 监控项类型 */ + private String itemType; + /** 监控标识(唯一键) */ + private String metricKey; + + /** 监控名称 */ + private String metricName; + + /** 数据类型 */ + private String dataType; + + /** 监控状态(0-禁用,1启用) */ + private String monitorStatus; + /** 监控OID(SNMP标识) */ + private String oid; + + /** 过滤值(用于特定端口或接口过滤) */ + private String filterValue; + + /** 监控说明 */ + private String switchDescription; + /** + * 资源类型,linux,switch + */ + private String resourceType; + /** + * 监控ids + */ + private Long[] monitorIds; + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/enums/MsgEnum.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/enums/MsgEnum.java new file mode 100644 index 0000000..c8a448a --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/enums/MsgEnum.java @@ -0,0 +1,73 @@ +package com.ruoyi.rocketmq.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * 控制码 + */ +@Getter +@AllArgsConstructor +@NoArgsConstructor +public enum MsgEnum { + + 注册("REGISTER"), + + 注册应答("REGISTER_RSP"), + + 断开("DISCONNECT"), + + 断开应答("DISCONNECT_RSP"), + + 心跳上报("HEARTBEAT"), + + CPU上报("CPU"), + + 磁盘上报("DISK"), + + 容器上报("DOCKER"), + + 内存上报("MEMORY"), + + 网络上报("NET"), + + 挂载上报("POINT"), + + 系统其他上报("OTHER_SYSTEM"), + + 交换机上报("SWITCHBOARD"), + + 开启系统采集("SYSTEM_COLLECT_START"), + + 开启系统采集应答("SYSTEM_COLLECT_START_RSP"), + + 关闭系统采集("SYSTEM_COLLECT_STOP"), + + 关闭系统采集应答("SYSTEM_COLLECT_STOP_RSP"), + + 开启交换机采集("SWITCH_COLLECT_START"), + + 开启交换机采集应答("SWITCH_COLLECT_START_RSP"), + + 关闭交换机采集("SWITCH_COLLECT_STOP"), + + 关闭交换机采集应答("SWITCH_COLLECT_STOP_RSP"), + + 告警设置("ALARM_SET"), + + 告警设置应答("ALARM_SET_RSP"), + + 执行脚本策略("SCRIPT_POLICY"), + + 执行脚本策略应答("SCRIPT_POLICY_RSP"), + + Agent版本更新("AGENT_VERSION_UPDATE"), + + Agent版本更新应答("AGENT_VERSION_UPDATE_RSP"); + + private String value; + + + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmInitialMonitorItemMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmInitialMonitorItemMapper.java new file mode 100644 index 0000000..f281199 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmInitialMonitorItemMapper.java @@ -0,0 +1,70 @@ +package com.ruoyi.rocketmq.mapper; + +import com.ruoyi.rocketmq.domain.RmInitialMonitorItem; + +import java.util.List; + +/** + * 基础监控项Mapper接口 + * + * @author gyt + * @date 2025-09-10 + */ +public interface RmInitialMonitorItemMapper +{ + /** + * 查询基础监控项 + * + * @param id 基础监控项主键 + * @return 基础监控项 + */ + public RmInitialMonitorItem selectRmInitialMonitorItemById(Long id); + + /** + * 查询基础监控项列表 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 基础监控项集合 + */ + public List selectRmInitialMonitorItemList(RmInitialMonitorItem rmInitialMonitorItem); + + /** + * 新增基础监控项 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 结果 + */ + public int insertRmInitialMonitorItem(RmInitialMonitorItem rmInitialMonitorItem); + + /** + * 修改基础监控项 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 结果 + */ + public int updateRmInitialMonitorItem(RmInitialMonitorItem rmInitialMonitorItem); + + /** + * 删除基础监控项 + * + * @param id 基础监控项主键 + * @return 结果 + */ + public int deleteRmInitialMonitorItemById(Long id); + + /** + * 批量删除基础监控项 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmInitialMonitorItemByIds(Long[] ids); + + /** + * 批量查询基础监控项 + * + * @param ids 基础监控项主键 + * @return 基础监控项 + */ + public List selectRmInitialMonitorItemByIds(Long[] ids); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmMonitorPolicyMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmMonitorPolicyMapper.java new file mode 100644 index 0000000..36f46a5 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmMonitorPolicyMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.mapper; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmMonitorPolicy; + +/** + * 资源监控策略Mapper接口 + * + * @author gyt + * @date 2025-09-10 + */ +public interface RmMonitorPolicyMapper +{ + /** + * 查询资源监控策略 + * + * @param id 资源监控策略主键 + * @return 资源监控策略 + */ + public RmMonitorPolicy selectRmMonitorPolicyById(Long id); + + /** + * 查询资源监控策略列表 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 资源监控策略集合 + */ + public List selectRmMonitorPolicyList(RmMonitorPolicy rmMonitorPolicy); + + /** + * 新增资源监控策略 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 结果 + */ + public int insertRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy); + + /** + * 修改资源监控策略 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 结果 + */ + public int updateRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy); + + /** + * 删除资源监控策略 + * + * @param id 资源监控策略主键 + * @return 结果 + */ + public int deleteRmMonitorPolicyById(Long id); + + /** + * 批量删除资源监控策略 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmMonitorPolicyByIds(Long[] ids); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmMonitorTemplateMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmMonitorTemplateMapper.java new file mode 100644 index 0000000..5ff8c93 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmMonitorTemplateMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.mapper; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmMonitorTemplate; + +/** + * 监控模板Mapper接口 + * + * @author gyt + * @date 2025-09-09 + */ +public interface RmMonitorTemplateMapper +{ + /** + * 查询监控模板 + * + * @param id 监控模板主键 + * @return 监控模板 + */ + public RmMonitorTemplate selectRmMonitorTemplateById(Long id); + + /** + * 查询监控模板列表 + * + * @param rmMonitorTemplate 监控模板 + * @return 监控模板集合 + */ + public List selectRmMonitorTemplateList(RmMonitorTemplate rmMonitorTemplate); + + /** + * 新增监控模板 + * + * @param rmMonitorTemplate 监控模板 + * @return 结果 + */ + public int insertRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate); + + /** + * 修改监控模板 + * + * @param rmMonitorTemplate 监控模板 + * @return 结果 + */ + public int updateRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate); + + /** + * 删除监控模板 + * + * @param id 监控模板主键 + * @return 结果 + */ + public int deleteRmMonitorTemplateById(Long id); + + /** + * 批量删除监控模板 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmMonitorTemplateByIds(Long[] ids); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmTemplateLinuxMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmTemplateLinuxMapper.java new file mode 100644 index 0000000..e3c7283 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmTemplateLinuxMapper.java @@ -0,0 +1,65 @@ +package com.ruoyi.rocketmq.mapper; + +import com.ruoyi.rocketmq.domain.RmTemplateLinux; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +/** + * Linux系统监控项Mapper接口 + * + * @author gyt + * @date 2025-09-09 + */ +public interface RmTemplateLinuxMapper +{ + /** + * 查询Linux系统监控项 + * + * @param id Linux系统监控项主键 + * @return Linux系统监控项 + */ + public RmTemplateLinux selectRmTemplateLinuxById(Long id); + + /** + * 查询Linux系统监控项列表 + * + * @param rmTemplateLinux Linux系统监控项 + * @return Linux系统监控项集合 + */ + public List selectRmTemplateLinuxList(RmTemplateLinux rmTemplateLinux); + + /** + * 新增Linux系统监控项 + * + * @param rmTemplateLinux Linux系统监控项 + * @return 结果 + */ + public int insertRmTemplateLinux(RmTemplateLinux rmTemplateLinux); + + /** + * 修改Linux系统监控项 + * + * @param rmTemplateLinux Linux系统监控项 + * @return 结果 + */ + public int updateRmTemplateLinux(RmTemplateLinux rmTemplateLinux); + + /** + * 删除Linux系统监控项 + * + * @param id Linux系统监控项主键 + * @return 结果 + */ + public int deleteRmTemplateLinuxById(Long id); + + /** + * 批量删除Linux系统监控项 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmTemplateLinuxByIds(Long[] ids); + + void batchInsertRmTemplateLinux(@Param("list") List linuxItems); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmTemplateSwitchMapper.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmTemplateSwitchMapper.java new file mode 100644 index 0000000..3f1ffdf --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/mapper/RmTemplateSwitchMapper.java @@ -0,0 +1,69 @@ +package com.ruoyi.rocketmq.mapper; + +import com.ruoyi.rocketmq.domain.RmTemplateSwitch; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +/** + * 交换机监控模板Mapper接口 + * + * @author gyt + * @date 2025-09-09 + */ +public interface RmTemplateSwitchMapper +{ + /** + * 查询交换机监控模板 + * + * @param id 交换机监控模板主键 + * @return 交换机监控模板 + */ + public RmTemplateSwitch selectRmTemplateSwitchById(Long id); + + /** + * 查询交换机监控模板列表 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 交换机监控模板集合 + */ + public List selectRmTemplateSwitchList(RmTemplateSwitch rmTemplateSwitch); + + /** + * 新增交换机监控模板 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 结果 + */ + public int insertRmTemplateSwitch(RmTemplateSwitch rmTemplateSwitch); + + /** + * 修改交换机监控模板 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 结果 + */ + public int updateRmTemplateSwitch(RmTemplateSwitch rmTemplateSwitch); + + /** + * 删除交换机监控模板 + * + * @param id 交换机监控模板主键 + * @return 结果 + */ + public int deleteRmTemplateSwitchById(Long id); + + /** + * 批量删除交换机监控模板 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRmTemplateSwitchByIds(Long[] ids); + + /** + * 批量新增交换机监控模板信息 + * @param switchItems + */ + void batchInsertRmTemplateSwitch(@Param("list") List switchItems); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ConsumerMode.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ConsumerMode.java index 6b67cce..1cad3df 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ConsumerMode.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ConsumerMode.java @@ -23,4 +23,8 @@ public class ConsumerMode { private int consumeThreadMax; @Value("${suning.rocketmq.conumer.consumeMessageBatchMaxSize}") private int consumeMessageBatchMaxSize; + @Value("${suning.rocketmq.producer.agentTopic}") + private String agentTopic; + @Value("${suning.rocketmq.producer.agentGroup}") + private String agentGroup; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ProducerMode.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ProducerMode.java index e65cf99..5d5f769 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ProducerMode.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/model/ProducerMode.java @@ -14,6 +14,10 @@ import org.springframework.context.annotation.Configuration; public class ProducerMode { @Value("${suning.rocketmq.producer.groupName}") private String groupName; + @Value("${suning.rocketmq.producer.agentTopic}") + private String agentTopic; + @Value("${suning.rocketmq.producer.agentGroup}") + private String agentGroup; @Value("${suning.rocketmq.namesrvAddr}") private String namesrvAddr; @Value("${suning.rocketmq.producer.maxMessageSize}") diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmInitialMonitorItemService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmInitialMonitorItemService.java new file mode 100644 index 0000000..ea7ed10 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmInitialMonitorItemService.java @@ -0,0 +1,69 @@ +package com.ruoyi.rocketmq.service; + +import com.ruoyi.rocketmq.domain.RmInitialMonitorItem; + +import java.util.List; +import java.util.Map; + +/** + * 基础监控项Service接口 + * + * @author gyt + * @date 2025-09-10 + */ +public interface IRmInitialMonitorItemService +{ + /** + * 查询基础监控项 + * + * @param id 基础监控项主键 + * @return 基础监控项 + */ + public RmInitialMonitorItem selectRmInitialMonitorItemById(Long id); + + /** + * 查询基础监控项列表 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 基础监控项集合 + */ + public List selectRmInitialMonitorItemList(RmInitialMonitorItem rmInitialMonitorItem); + + /** + * 新增基础监控项 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 结果 + */ + public int insertRmInitialMonitorItem(RmInitialMonitorItem rmInitialMonitorItem); + + /** + * 修改基础监控项 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 结果 + */ + public int updateRmInitialMonitorItem(RmInitialMonitorItem rmInitialMonitorItem); + + /** + * 批量删除基础监控项 + * + * @param ids 需要删除的基础监控项主键集合 + * @return 结果 + */ + public int deleteRmInitialMonitorItemByIds(Long[] ids); + + /** + * 删除基础监控项信息 + * + * @param id 基础监控项主键 + * @return 结果 + */ + public int deleteRmInitialMonitorItemById(Long id); + + /** + * 查询linux监控项列表 + * @return + */ + Map> selectAllMsgList(RmInitialMonitorItem rmInitialMonitorItem); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java new file mode 100644 index 0000000..fcc83e9 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java @@ -0,0 +1,69 @@ +package com.ruoyi.rocketmq.service; + +import com.ruoyi.rocketmq.domain.RmMonitorPolicy; + +import java.util.List; +import java.util.Map; + +/** + * 资源监控策略Service接口 + * + * @author gyt + * @date 2025-09-10 + */ +public interface IRmMonitorPolicyService +{ + /** + * 查询资源监控策略 + * + * @param id 资源监控策略主键 + * @return 资源监控策略 + */ + public RmMonitorPolicy selectRmMonitorPolicyById(Long id); + + /** + * 查询资源监控策略列表 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 资源监控策略集合 + */ + public List selectRmMonitorPolicyList(RmMonitorPolicy rmMonitorPolicy); + + /** + * 新增资源监控策略 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 结果 + */ + public int insertRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy); + + /** + * 修改资源监控策略 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 结果 + */ + public int updateRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy); + + /** + * 批量删除资源监控策略 + * + * @param ids 需要删除的资源监控策略主键集合 + * @return 结果 + */ + public int deleteRmMonitorPolicyByIds(Long[] ids); + + /** + * 删除资源监控策略信息 + * + * @param id 资源监控策略主键 + * @return 结果 + */ + public int deleteRmMonitorPolicyById(Long id); + + int addRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy); + + Map getRmMonitorPolicyMsgById(Long id); + + int issuePolicy(Long id); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorTemplateService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorTemplateService.java new file mode 100644 index 0000000..f7dc147 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorTemplateService.java @@ -0,0 +1,79 @@ +package com.ruoyi.rocketmq.service; + +import com.ruoyi.rocketmq.domain.RmMonitorTemplate; +import com.ruoyi.rocketmq.domain.vo.RmMonitorTemplateVo; + +import java.util.List; +import java.util.Map; + +/** + * 监控模板Service接口 + * + * @author gyt + * @date 2025-09-09 + */ +public interface IRmMonitorTemplateService +{ + /** + * 查询监控模板 + * + * @param id 监控模板主键 + * @return 监控模板 + */ + public RmMonitorTemplate selectRmMonitorTemplateById(Long id); + + /** + * 查询监控模板列表 + * + * @param rmMonitorTemplate 监控模板 + * @return 监控模板集合 + */ + public List selectRmMonitorTemplateList(RmMonitorTemplate rmMonitorTemplate); + + /** + * 新增监控模板 + * + * @param rmMonitorTemplate 监控模板 + * @return 结果 + */ + public int insertRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate); + + /** + * 修改监控模板 + * + * @param rmMonitorTemplate 监控模板 + * @return 结果 + */ + public int updateRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate); + + /** + * 批量删除监控模板 + * + * @param ids 需要删除的监控模板主键集合 + * @return 结果 + */ + public int deleteRmMonitorTemplateByIds(Long[] ids); + + /** + * 删除监控模板信息 + * + * @param id 监控模板主键 + * @return 结果 + */ + public int deleteRmMonitorTemplateById(Long id); + + /** + * 新增 + * @param rmMonitorTemplateVo + * @return + */ + public int addRmMonitorTemplate(RmMonitorTemplateVo rmMonitorTemplateVo); + + /** + * 详情 + * @param id + * @return + */ + Map getTemplateMsgById(Long id); + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmTemplateLinuxService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmTemplateLinuxService.java new file mode 100644 index 0000000..81ca41f --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmTemplateLinuxService.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.service; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmTemplateLinux; + +/** + * Linux系统监控项Service接口 + * + * @author gyt + * @date 2025-09-09 + */ +public interface IRmTemplateLinuxService +{ + /** + * 查询Linux系统监控项 + * + * @param id Linux系统监控项主键 + * @return Linux系统监控项 + */ + public RmTemplateLinux selectRmTemplateLinuxById(Long id); + + /** + * 查询Linux系统监控项列表 + * + * @param rmTemplateLinux Linux系统监控项 + * @return Linux系统监控项集合 + */ + public List selectRmTemplateLinuxList(RmTemplateLinux rmTemplateLinux); + + /** + * 新增Linux系统监控项 + * + * @param rmTemplateLinux Linux系统监控项 + * @return 结果 + */ + public int insertRmTemplateLinux(RmTemplateLinux rmTemplateLinux); + + /** + * 修改Linux系统监控项 + * + * @param rmTemplateLinux Linux系统监控项 + * @return 结果 + */ + public int updateRmTemplateLinux(RmTemplateLinux rmTemplateLinux); + + /** + * 批量删除Linux系统监控项 + * + * @param ids 需要删除的Linux系统监控项主键集合 + * @return 结果 + */ + public int deleteRmTemplateLinuxByIds(Long[] ids); + + /** + * 删除Linux系统监控项信息 + * + * @param id Linux系统监控项主键 + * @return 结果 + */ + public int deleteRmTemplateLinuxById(Long id); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmTemplateSwitchService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmTemplateSwitchService.java new file mode 100644 index 0000000..6e5096f --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmTemplateSwitchService.java @@ -0,0 +1,61 @@ +package com.ruoyi.rocketmq.service; + +import java.util.List; +import com.ruoyi.rocketmq.domain.RmTemplateSwitch; + +/** + * 交换机监控模板Service接口 + * + * @author gyt + * @date 2025-09-09 + */ +public interface IRmTemplateSwitchService +{ + /** + * 查询交换机监控模板 + * + * @param id 交换机监控模板主键 + * @return 交换机监控模板 + */ + public RmTemplateSwitch selectRmTemplateSwitchById(Long id); + + /** + * 查询交换机监控模板列表 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 交换机监控模板集合 + */ + public List selectRmTemplateSwitchList(RmTemplateSwitch rmTemplateSwitch); + + /** + * 新增交换机监控模板 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 结果 + */ + public int insertRmTemplateSwitch(RmTemplateSwitch rmTemplateSwitch); + + /** + * 修改交换机监控模板 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 结果 + */ + public int updateRmTemplateSwitch(RmTemplateSwitch rmTemplateSwitch); + + /** + * 批量删除交换机监控模板 + * + * @param ids 需要删除的交换机监控模板主键集合 + * @return 结果 + */ + public int deleteRmTemplateSwitchByIds(Long[] ids); + + /** + * 删除交换机监控模板信息 + * + * @param id 交换机监控模板主键 + * @return 结果 + */ + public int deleteRmTemplateSwitchById(Long id); +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmInitialMonitorItemServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmInitialMonitorItemServiceImpl.java new file mode 100644 index 0000000..45d0cb8 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmInitialMonitorItemServiceImpl.java @@ -0,0 +1,162 @@ +package com.ruoyi.rocketmq.service.impl; + +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.rocketmq.domain.RmInitialMonitorItem; +import com.ruoyi.rocketmq.mapper.RmInitialMonitorItemMapper; +import com.ruoyi.rocketmq.service.IRmInitialMonitorItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 基础监控项Service业务层处理 + * + * @author gyt + * @date 2025-09-10 + */ +@Service +public class RmInitialMonitorItemServiceImpl implements IRmInitialMonitorItemService +{ + @Autowired + private RmInitialMonitorItemMapper rmInitialMonitorItemMapper; + + /** + * 查询基础监控项 + * + * @param id 基础监控项主键 + * @return 基础监控项 + */ + @Override + public RmInitialMonitorItem selectRmInitialMonitorItemById(Long id) + { + return rmInitialMonitorItemMapper.selectRmInitialMonitorItemById(id); + } + + /** + * 查询基础监控项列表 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 基础监控项 + */ + @Override + public List selectRmInitialMonitorItemList(RmInitialMonitorItem rmInitialMonitorItem) + { + return rmInitialMonitorItemMapper.selectRmInitialMonitorItemList(rmInitialMonitorItem); + } + + /** + * 新增基础监控项 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 结果 + */ + @Override + public int insertRmInitialMonitorItem(RmInitialMonitorItem rmInitialMonitorItem) + { + rmInitialMonitorItem.setCreateTime(DateUtils.getNowDate()); + return rmInitialMonitorItemMapper.insertRmInitialMonitorItem(rmInitialMonitorItem); + } + + /** + * 修改基础监控项 + * + * @param rmInitialMonitorItem 基础监控项 + * @return 结果 + */ + @Override + public int updateRmInitialMonitorItem(RmInitialMonitorItem rmInitialMonitorItem) + { + rmInitialMonitorItem.setUpdateTime(DateUtils.getNowDate()); + return rmInitialMonitorItemMapper.updateRmInitialMonitorItem(rmInitialMonitorItem); + } + + /** + * 批量删除基础监控项 + * + * @param ids 需要删除的基础监控项主键 + * @return 结果 + */ + @Override + public int deleteRmInitialMonitorItemByIds(Long[] ids) + { + return rmInitialMonitorItemMapper.deleteRmInitialMonitorItemByIds(ids); + } + + /** + * 删除基础监控项信息 + * + * @param id 基础监控项主键 + * @return 结果 + */ + @Override + public int deleteRmInitialMonitorItemById(Long id) + { + return rmInitialMonitorItemMapper.deleteRmInitialMonitorItemById(id); + } + + /** + * 查询所有监控标识以及监控名称 + * @param rmInitialMonitorItem + * @return + */ + @Override + public Map> selectAllMsgList(RmInitialMonitorItem rmInitialMonitorItem) { + Map> resultMap = new HashMap<>(); + String resourceType = rmInitialMonitorItem.getResourceType(); + String itemType = rmInitialMonitorItem.getItemType(); + + List allItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemList(rmInitialMonitorItem); + + if ("linux".equals(resourceType)) { + if ("monitorItem".equals(itemType)) { + // CPU信息 + resultMap.put("cpu", filterItems(allItems, "CPU")); + // 其他系统信息 + resultMap.put("other", filterItems(allItems, "OTHER")); + } + else if ("autodiscoverItem".equals(itemType)) { + // 挂载点信息 + resultMap.put("point", filterItems(allItems, "POINT")); + // 网络接口信息 + resultMap.put("net", filterItems(allItems, "NET")); + // 磁盘信息 + resultMap.put("disk", filterItems(allItems, "DISK")); + // Docker容器信息 + resultMap.put("docker", filterItems(allItems, "DOCKER")); + } + } + else if ("switch".equals(resourceType)) { + if ("monitorItem".equals(itemType)) { + // 系统信息 + resultMap.put("system", filterItems(allItems, "SYSTEM")); + // MPU信息 + resultMap.put("mpu", filterItems(allItems, "MPU")); + // 电源信息 + resultMap.put("power", filterItems(allItems, "POWERSOURCE")); + } + else if ("autodiscoverItem".equals(itemType)) { + // 网络端口信息 + resultMap.put("netport", filterItems(allItems, "NETPORT")); + // 光模块信息 + resultMap.put("lightmodule", filterItems(allItems, "LIGHTMODULE")); + // 风扇信息 + resultMap.put("fan", filterItems(allItems, "FAN")); + } + } + + return resultMap; + } + + /** + * 通用过滤方法 + */ + private List filterItems(List items, String dataType) { + return items.stream() + .filter(item -> dataType.equals(item.getDataType())) + .collect(Collectors.toList()); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java new file mode 100644 index 0000000..90952c0 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java @@ -0,0 +1,303 @@ +package com.ruoyi.rocketmq.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.rocketmq.domain.*; +import com.ruoyi.rocketmq.domain.vo.CollectVo; +import com.ruoyi.rocketmq.domain.vo.RmMonitorPolicyVo; +import com.ruoyi.rocketmq.mapper.RmMonitorPolicyMapper; +import com.ruoyi.rocketmq.mapper.RmMonitorTemplateMapper; +import com.ruoyi.rocketmq.mapper.RmTemplateLinuxMapper; +import com.ruoyi.rocketmq.model.ProducerMode; +import com.ruoyi.rocketmq.producer.MessageProducer; +import com.ruoyi.rocketmq.service.IRmMonitorPolicyService; +import com.ruoyi.rocketmq.utils.DataProcessUtil; +import com.ruoyi.system.api.RemoteRevenueConfigService; +import com.ruoyi.system.api.domain.RmResourceGroupRemote; +import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.*; + +/** + * 资源监控策略Service业务层处理 + * + * @author gyt + * @date 2025-09-10 + */ +@Service +@Slf4j +public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService +{ + @Autowired + private ProducerMode producerMode; + @Autowired + private RmMonitorPolicyMapper rmMonitorPolicyMapper; + @Autowired + private RmTemplateLinuxMapper rmTemplateLinuxMapper; + @Autowired + private RmMonitorTemplateMapper rmMonitorTemplateMapper; + @Autowired + private RemoteRevenueConfigService remoteRevenueConfigService; + + + + /** + * 查询资源监控策略 + * + * @param id 资源监控策略主键 + * @return 资源监控策略 + */ + @Override + public RmMonitorPolicy selectRmMonitorPolicyById(Long id) + { + return rmMonitorPolicyMapper.selectRmMonitorPolicyById(id); + } + + /** + * 查询资源监控策略列表 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 资源监控策略 + */ + @Override + public List selectRmMonitorPolicyList(RmMonitorPolicy rmMonitorPolicy) + { + return rmMonitorPolicyMapper.selectRmMonitorPolicyList(rmMonitorPolicy); + } + + /** + * 新增资源监控策略 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 结果 + */ + @Override + public int insertRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy) + { + rmMonitorPolicy.setCreateTime(DateUtils.getNowDate()); + return rmMonitorPolicyMapper.insertRmMonitorPolicy(rmMonitorPolicy); + } + + /** + * 修改资源监控策略 + * + * @param rmMonitorPolicy 资源监控策略 + * @return 结果 + */ + @Override + public int updateRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy) + { + rmMonitorPolicy.setUpdateTime(DateUtils.getNowDate()); + return rmMonitorPolicyMapper.updateRmMonitorPolicy(rmMonitorPolicy); + } + + /** + * 批量删除资源监控策略 + * + * @param ids 需要删除的资源监控策略主键 + * @return 结果 + */ + @Override + public int deleteRmMonitorPolicyByIds(Long[] ids) + { + return rmMonitorPolicyMapper.deleteRmMonitorPolicyByIds(ids); + } + + /** + * 删除资源监控策略信息 + * + * @param id 资源监控策略主键 + * @return 结果 + */ + @Override + public int deleteRmMonitorPolicyById(Long id) + { + return rmMonitorPolicyMapper.deleteRmMonitorPolicyById(id); + } + + @Override + public int addRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy) { + rmMonitorPolicyMapper.insertRmMonitorPolicy(rmMonitorPolicy); + // 模板绑定资源组信息 + RmMonitorTemplate rmMonitorTemplate = new RmMonitorTemplate(); + rmMonitorTemplate.setId(rmMonitorPolicy.getTemplateId()); + rmMonitorTemplate.setResourceGroupId(rmMonitorPolicy.getResourceGroupId()); + rmMonitorTemplateMapper.updateRmMonitorTemplate(rmMonitorTemplate); + // 拿到采集周期 + List collectionAndIdList = rmMonitorPolicy.getCollectionAndIdList(); + if(!collectionAndIdList.isEmpty()){ + for (RmMonitorPolicyVo rmMonitorPolicyVo : collectionAndIdList) { + // 添加采集周期 + RmTemplateLinux rmTemplateLinux = new RmTemplateLinux(); + rmTemplateLinux.setId(rmMonitorPolicyVo.getId()); + rmTemplateLinux.setCollectionCycle(rmMonitorPolicyVo.getCollectionCycle()); + rmTemplateLinuxMapper.updateRmTemplateLinux(rmTemplateLinux); + } + } + return 1; + } + + /** + * 根据id查询监控策略详情 + * @param id + * @return + */ + @Override + public Map getRmMonitorPolicyMsgById(Long id) { + Map result = new HashMap<>(); + + // 1. 获取资源监控策略基础信息 + RmMonitorPolicy rmMonitorPolicy = rmMonitorPolicyMapper.selectRmMonitorPolicyById(id); + if(rmMonitorPolicy != null){ + rmMonitorPolicy.setResourceGroupName(DataProcessUtil.getResourceGroupNameById(rmMonitorPolicy.getResourceGroupId())); + result.put("policy", rmMonitorPolicy); + // 模板id + Long templateId = rmMonitorPolicy.getTemplateId(); + + // 2. 处理Linux模板数据 + DataProcessUtil.processLinuxTemplateData(templateId, result); + + // 3. 处理Switch模板数据 + DataProcessUtil.processSwitchTemplateData(templateId, result); + } + + return result; + } + + /** + * 下发策略 + * @param id + * @return + */ + @Override + public int issuePolicy(Long id) { + try { + // 获取策略详情和资源设备 + RmMonitorPolicy policy = rmMonitorPolicyMapper.selectRmMonitorPolicyById(id); + if (policy == null) { + log.error("策略不存在,id: {}", id); + return 0; + } + + List devices = getResourceDevices(policy.getResourceGroupId()); + if (CollectionUtils.isEmpty(devices)) { + return 0; + } + + // 构建并发送采集配置 + Map policyDetails = getRmMonitorPolicyMsgById(id); + List collectVos = buildCollectConfigurations(policyDetails); + sendConfigurationsToDevices(devices, collectVos); + // 更新策略状态为已下发 + RmMonitorPolicy policyUpdate = new RmMonitorPolicy(); + policyUpdate.setId(id); + policyUpdate.setStatus("1"); + rmMonitorPolicyMapper.updateRmMonitorPolicy(policyUpdate); + + return 1; + } catch (Exception e) { + log.error("下发策略失败,id: {}", id, e); + return 0; + } + } + + /** + * 获取资源设备列表 + */ + private List getResourceDevices(Long resourceGroupId) { + R groupResponse = remoteRevenueConfigService + .getResourceGroupMsgById(resourceGroupId, SecurityConstants.INNER); + + if (groupResponse == null || groupResponse.getData() == null + || StringUtils.isEmpty(groupResponse.getData().getIncludedDevicesId())) { + log.error("资源组信息不完整,resourceGroupId: {}", resourceGroupId); + return Collections.emptyList(); + } + + String[] deviceIds = groupResponse.getData().getIncludedDevicesId().split(","); + R> devicesResponse = remoteRevenueConfigService + .getRegistrationByIds(deviceIds, SecurityConstants.INNER); + + return devicesResponse != null ? devicesResponse.getData() : Collections.emptyList(); + } + + /** + * 构建采集配置 + */ + private List buildCollectConfigurations(Map policyDetails) { + List collectVos = new ArrayList<>(); + + // 处理Linux配置 + if (policyDetails.containsKey("linux")) { + Map> linuxConfigs = (Map>) policyDetails.get("linux"); + processConfigurations(linuxConfigs, collectVos, new String[]{"cpu", "other", "point", "net", "disk", "docker"}); + } + + // 处理Switch配置 + if (policyDetails.containsKey("switch")) { + Map> switchConfigs = (Map>) policyDetails.get("switch"); + processConfigurations(switchConfigs, collectVos, new String[]{"system", "mpu", "power", "netport", "lightmodule", "fan"}); + } + + return collectVos; + } + + /** + * 通用配置处理方法 + */ + private void processConfigurations(Map> configs, List collectVos, String[] types) { + for (String type : types) { + if (configs.get(type) != null) { + for (T config : configs.get(type)) { + CollectVo vo = new CollectVo(); + vo.setCollect(true); + + if (config instanceof RmTemplateLinux) { + RmTemplateLinux linuxConfig = (RmTemplateLinux) config; + vo.setType(linuxConfig.getMetricKey()); + vo.setInterval(linuxConfig.getCollectionCycle()); + } else if (config instanceof RmTemplateSwitch) { + RmTemplateSwitch switchConfig = (RmTemplateSwitch) config; + vo.setType(switchConfig.getMetricKey()); + vo.setInterval(switchConfig.getCollectionCycle()); + } + + collectVos.add(vo); + } + } + } + } + + /** + * 发送配置到设备 + */ + private void sendConfigurationsToDevices(List devices, List collectVos) { + MessageProducer messageProducer = new MessageProducer(); + String configJson = JSONObject.toJSONString(collectVos); + + for (RmResourceRegistrationRemote device : devices) { + try { + DeviceMessage message = new DeviceMessage(); + message.setClientId(device.getHardwareSn()); + message.setData(configJson); + message.setDataType("collects"); + + messageProducer.sendAsyncProducerMessage( + producerMode.getAgentTopic(), + "collects", + "title", + JSONObject.toJSONString(message) + ); + } catch (Exception e) { + log.error("发送设备配置失败,deviceId: {}", device.getHardwareSn(), e); + } + } + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorTemplateServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorTemplateServiceImpl.java new file mode 100644 index 0000000..90e0fbf --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorTemplateServiceImpl.java @@ -0,0 +1,214 @@ +package com.ruoyi.rocketmq.service.impl; + +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.rocketmq.domain.RmInitialMonitorItem; +import com.ruoyi.rocketmq.domain.RmMonitorTemplate; +import com.ruoyi.rocketmq.domain.RmTemplateLinux; +import com.ruoyi.rocketmq.domain.RmTemplateSwitch; +import com.ruoyi.rocketmq.domain.vo.RmMonitorTemplateVo; +import com.ruoyi.rocketmq.mapper.RmInitialMonitorItemMapper; +import com.ruoyi.rocketmq.mapper.RmMonitorTemplateMapper; +import com.ruoyi.rocketmq.mapper.RmTemplateLinuxMapper; +import com.ruoyi.rocketmq.mapper.RmTemplateSwitchMapper; +import com.ruoyi.rocketmq.service.IRmMonitorTemplateService; +import com.ruoyi.rocketmq.utils.DataProcessUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 监控模板Service业务层处理 + * + * @author gyt + * @date 2025-09-09 + */ +@Service +public class RmMonitorTemplateServiceImpl implements IRmMonitorTemplateService +{ + @Autowired + private RmMonitorTemplateMapper rmMonitorTemplateMapper; + @Autowired + private RmTemplateLinuxMapper rmTemplateLinuxMapper; + @Autowired + private RmTemplateSwitchMapper rmTemplateSwitchMapper; + @Autowired + private RmInitialMonitorItemMapper rmInitialMonitorItemMapper; + /** + * 查询监控模板 + * + * @param id 监控模板主键 + * @return 监控模板 + */ + @Override + public RmMonitorTemplate selectRmMonitorTemplateById(Long id) + { + return rmMonitorTemplateMapper.selectRmMonitorTemplateById(id); + } + + /** + * 查询监控模板列表 + * + * @param rmMonitorTemplate 监控模板 + * @return 监控模板 + */ + @Override + public List selectRmMonitorTemplateList(RmMonitorTemplate rmMonitorTemplate) + { + return rmMonitorTemplateMapper.selectRmMonitorTemplateList(rmMonitorTemplate); + } + + /** + * 新增监控模板 + * + * @param rmMonitorTemplate 监控模板 + * @return 结果 + */ + @Override + public int insertRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate) + { + rmMonitorTemplate.setCreateTime(DateUtils.getNowDate()); + return rmMonitorTemplateMapper.insertRmMonitorTemplate(rmMonitorTemplate); + } + + /** + * 修改监控模板 + * + * @param rmMonitorTemplate 监控模板 + * @return 结果 + */ + @Override + public int updateRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate) + { + rmMonitorTemplate.setUpdateTime(DateUtils.getNowDate()); + return rmMonitorTemplateMapper.updateRmMonitorTemplate(rmMonitorTemplate); + } + + /** + * 批量删除监控模板 + * + * @param ids 需要删除的监控模板主键 + * @return 结果 + */ + @Override + public int deleteRmMonitorTemplateByIds(Long[] ids) + { + return rmMonitorTemplateMapper.deleteRmMonitorTemplateByIds(ids); + } + + /** + * 删除监控模板信息 + * + * @param id 监控模板主键 + * @return 结果 + */ + @Override + public int deleteRmMonitorTemplateById(Long id) + { + return rmMonitorTemplateMapper.deleteRmMonitorTemplateById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int addRmMonitorTemplate(RmMonitorTemplateVo rmMonitorTemplateVo) { + RmMonitorTemplate rmMonitorTemplate = new RmMonitorTemplate(); + BeanUtils.copyProperties(rmMonitorTemplateVo, rmMonitorTemplate); + rmMonitorTemplateMapper.insertRmMonitorTemplate(rmMonitorTemplate); + Long templateId = rmMonitorTemplate.getId(); + + // linux系统信息 + if("linux".equals(rmMonitorTemplateVo.getResourceType())){ + // 根据监控信息id查询详细信息 + List monitorItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemByIds(rmMonitorTemplateVo.getMonitorIds()); + // 批量准备插入数据 + List linuxItems = monitorItems.stream() + .map(item -> { + RmTemplateLinux linuxItem = new RmTemplateLinux(); + linuxItem.setTemplateId(templateId); + linuxItem.setMetricKey(item.getMetricKey()); + linuxItem.setMetricName(item.getMetricName()); + linuxItem.setDataType(item.getDataType()); + linuxItem.setItemType(item.getItemType()); + return linuxItem; + }) + .collect(Collectors.toList()); + // 批量插入 + if(!linuxItems.isEmpty()) { + rmTemplateLinuxMapper.batchInsertRmTemplateLinux(linuxItems); + int monitorCount = (int) linuxItems.stream().filter(r -> "monitorItem".equals(r.getItemType())).count(); + int autoDiscoverCount = (int) linuxItems.stream().filter(r -> "autoDiscoverItem".equals(r.getItemType())).count(); + RmMonitorTemplate monitorTemplate = new RmMonitorTemplate(); + monitorTemplate.setId(templateId); + monitorTemplate.setMonitorItems(monitorCount + ""); + monitorTemplate.setDiscoveryRules(autoDiscoverCount + ""); + monitorTemplate.setResourcyType("linux"); + rmMonitorTemplateMapper.updateRmMonitorTemplate(monitorTemplate); + } + } + // 华为交换机信息 + if("switch".equals(rmMonitorTemplateVo.getResourceType())){ + // 根据监控信息id查询详细信息 + List monitorItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemByIds(rmMonitorTemplateVo.getMonitorIds()); + // 批量准备插入数据 + List switchItems = monitorItems.stream() + .map(item -> { + RmTemplateSwitch switchItem = new RmTemplateSwitch(); + switchItem.setTemplateId(templateId); + switchItem.setMetricKey(item.getMetricKey()); + switchItem.setMetricName(item.getMetricName()); + switchItem.setOid(item.getOid()); + switchItem.setFilterValue(item.getFilterValue()); + switchItem.setSwitchDescription(item.getMonitorDescription()); + switchItem.setDataType(item.getDataType()); + switchItem.setItemType(item.getItemType()); + return switchItem; + }) + .collect(Collectors.toList()); + // 批量插入 + if(!switchItems.isEmpty()) { + rmTemplateSwitchMapper.batchInsertRmTemplateSwitch(switchItems); + int monitorCount = (int) switchItems.stream().filter(r -> "monitorItem".equals(r.getItemType())).count(); + int autoDiscoverCount = (int) switchItems.stream().filter(r -> "autoDiscoverItem".equals(r.getItemType())).count(); + RmMonitorTemplate monitorTemplate = new RmMonitorTemplate(); + monitorTemplate.setId(templateId); + monitorTemplate.setMonitorItems(monitorCount + ""); + monitorTemplate.setDiscoveryRules(autoDiscoverCount + ""); + monitorTemplate.setResourcyType("switch"); + rmMonitorTemplateMapper.updateRmMonitorTemplate(monitorTemplate); + } + } + return 1; + } + + /** + * 获取监控模板详情 + * @param id + * @return + */ + @Override + public Map getTemplateMsgById(Long id) { + Map result = new HashMap<>(); + + // 1. 获取模板基础信息 + RmMonitorTemplate template = rmMonitorTemplateMapper.selectRmMonitorTemplateById(id); + if(template.getResourceGroupId() != null){ + template.setResourceGroupName(DataProcessUtil.getResourceGroupNameById(template.getResourceGroupId())); + } + result.put("template", template); + + // 2. 处理Linux模板数据 + DataProcessUtil.processLinuxTemplateData(id, result); + + // 3. 处理Switch模板数据 + DataProcessUtil.processSwitchTemplateData(id, result); + + return result; + } + + +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmTemplateLinuxServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmTemplateLinuxServiceImpl.java new file mode 100644 index 0000000..7bd5658 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmTemplateLinuxServiceImpl.java @@ -0,0 +1,96 @@ +package com.ruoyi.rocketmq.service.impl; + +import java.util.List; +import com.ruoyi.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.rocketmq.mapper.RmTemplateLinuxMapper; +import com.ruoyi.rocketmq.domain.RmTemplateLinux; +import com.ruoyi.rocketmq.service.IRmTemplateLinuxService; + +/** + * Linux系统监控项Service业务层处理 + * + * @author gyt + * @date 2025-09-09 + */ +@Service +public class RmTemplateLinuxServiceImpl implements IRmTemplateLinuxService +{ + @Autowired + private RmTemplateLinuxMapper rmTemplateLinuxMapper; + + /** + * 查询Linux系统监控项 + * + * @param id Linux系统监控项主键 + * @return Linux系统监控项 + */ + @Override + public RmTemplateLinux selectRmTemplateLinuxById(Long id) + { + return rmTemplateLinuxMapper.selectRmTemplateLinuxById(id); + } + + /** + * 查询Linux系统监控项列表 + * + * @param rmTemplateLinux Linux系统监控项 + * @return Linux系统监控项 + */ + @Override + public List selectRmTemplateLinuxList(RmTemplateLinux rmTemplateLinux) + { + return rmTemplateLinuxMapper.selectRmTemplateLinuxList(rmTemplateLinux); + } + + /** + * 新增Linux系统监控项 + * + * @param rmTemplateLinux Linux系统监控项 + * @return 结果 + */ + @Override + public int insertRmTemplateLinux(RmTemplateLinux rmTemplateLinux) + { + rmTemplateLinux.setCreateTime(DateUtils.getNowDate()); + return rmTemplateLinuxMapper.insertRmTemplateLinux(rmTemplateLinux); + } + + /** + * 修改Linux系统监控项 + * + * @param rmTemplateLinux Linux系统监控项 + * @return 结果 + */ + @Override + public int updateRmTemplateLinux(RmTemplateLinux rmTemplateLinux) + { + rmTemplateLinux.setUpdateTime(DateUtils.getNowDate()); + return rmTemplateLinuxMapper.updateRmTemplateLinux(rmTemplateLinux); + } + + /** + * 批量删除Linux系统监控项 + * + * @param ids 需要删除的Linux系统监控项主键 + * @return 结果 + */ + @Override + public int deleteRmTemplateLinuxByIds(Long[] ids) + { + return rmTemplateLinuxMapper.deleteRmTemplateLinuxByIds(ids); + } + + /** + * 删除Linux系统监控项信息 + * + * @param id Linux系统监控项主键 + * @return 结果 + */ + @Override + public int deleteRmTemplateLinuxById(Long id) + { + return rmTemplateLinuxMapper.deleteRmTemplateLinuxById(id); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmTemplateSwitchServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmTemplateSwitchServiceImpl.java new file mode 100644 index 0000000..37c2067 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmTemplateSwitchServiceImpl.java @@ -0,0 +1,96 @@ +package com.ruoyi.rocketmq.service.impl; + +import java.util.List; +import com.ruoyi.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.rocketmq.mapper.RmTemplateSwitchMapper; +import com.ruoyi.rocketmq.domain.RmTemplateSwitch; +import com.ruoyi.rocketmq.service.IRmTemplateSwitchService; + +/** + * 交换机监控模板Service业务层处理 + * + * @author gyt + * @date 2025-09-09 + */ +@Service +public class RmTemplateSwitchServiceImpl implements IRmTemplateSwitchService +{ + @Autowired + private RmTemplateSwitchMapper rmTemplateSwitchMapper; + + /** + * 查询交换机监控模板 + * + * @param id 交换机监控模板主键 + * @return 交换机监控模板 + */ + @Override + public RmTemplateSwitch selectRmTemplateSwitchById(Long id) + { + return rmTemplateSwitchMapper.selectRmTemplateSwitchById(id); + } + + /** + * 查询交换机监控模板列表 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 交换机监控模板 + */ + @Override + public List selectRmTemplateSwitchList(RmTemplateSwitch rmTemplateSwitch) + { + return rmTemplateSwitchMapper.selectRmTemplateSwitchList(rmTemplateSwitch); + } + + /** + * 新增交换机监控模板 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 结果 + */ + @Override + public int insertRmTemplateSwitch(RmTemplateSwitch rmTemplateSwitch) + { + rmTemplateSwitch.setCreateTime(DateUtils.getNowDate()); + return rmTemplateSwitchMapper.insertRmTemplateSwitch(rmTemplateSwitch); + } + + /** + * 修改交换机监控模板 + * + * @param rmTemplateSwitch 交换机监控模板 + * @return 结果 + */ + @Override + public int updateRmTemplateSwitch(RmTemplateSwitch rmTemplateSwitch) + { + rmTemplateSwitch.setUpdateTime(DateUtils.getNowDate()); + return rmTemplateSwitchMapper.updateRmTemplateSwitch(rmTemplateSwitch); + } + + /** + * 批量删除交换机监控模板 + * + * @param ids 需要删除的交换机监控模板主键 + * @return 结果 + */ + @Override + public int deleteRmTemplateSwitchByIds(Long[] ids) + { + return rmTemplateSwitchMapper.deleteRmTemplateSwitchByIds(ids); + } + + /** + * 删除交换机监控模板信息 + * + * @param id 交换机监控模板主键 + * @return 结果 + */ + @Override + public int deleteRmTemplateSwitchById(Long id) + { + return rmTemplateSwitchMapper.deleteRmTemplateSwitchById(id); + } +} diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java new file mode 100644 index 0000000..b1d1680 --- /dev/null +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/utils/DataProcessUtil.java @@ -0,0 +1,104 @@ +package com.ruoyi.rocketmq.utils; + +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.rocketmq.domain.RmTemplateLinux; +import com.ruoyi.rocketmq.domain.RmTemplateSwitch; +import com.ruoyi.rocketmq.mapper.RmMonitorTemplateMapper; +import com.ruoyi.rocketmq.mapper.RmTemplateLinuxMapper; +import com.ruoyi.rocketmq.mapper.RmTemplateSwitchMapper; +import com.ruoyi.system.api.RemoteRevenueConfigService; +import com.ruoyi.system.api.domain.RmResourceGroupRemote; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +@Slf4j +public class DataProcessUtil { + @Autowired + private RmMonitorTemplateMapper rmMonitorTemplateMapper; + @Autowired + private static RmTemplateLinuxMapper rmTemplateLinuxMapper; + @Autowired + private static RmTemplateSwitchMapper rmTemplateSwitchMapper; + @Autowired + private static RemoteRevenueConfigService remoteRevenueConfigService; + + /** + * 补充资源组信息 + */ + public static String getResourceGroupNameById(Long resourceGroupId) { + try { + R resourceGroupResponse = remoteRevenueConfigService + .getResourceGroupMsgById(resourceGroupId, SecurityConstants.INNER); + + if (resourceGroupResponse != null && resourceGroupResponse.getData() != null) { + return resourceGroupResponse.getData().getGroupName(); + } + } catch (Exception e) { + log.error("获取资源组信息失败,resourceGroupId: {}", resourceGroupId, e); + } + return null; + } + /** + * 处理Linux模板数据 + */ + public static void processLinuxTemplateData(Long templateId, Map result) { + RmTemplateLinux query = new RmTemplateLinux(); + query.setTemplateId(templateId); + List linuxItems = rmTemplateLinuxMapper.selectRmTemplateLinuxList(query); + + if (!linuxItems.isEmpty()) { + Map> linuxData = new HashMap<>(); + linuxData.put("cpu", filterItemsByDataType(linuxItems, "CPU")); + linuxData.put("other", filterItemsByDataType(linuxItems, "OTHER")); + linuxData.put("point", filterItemsByDataType(linuxItems, "POINT")); + linuxData.put("net", filterItemsByDataType(linuxItems, "NET")); + linuxData.put("disk", filterItemsByDataType(linuxItems, "DISK")); + linuxData.put("docker", filterItemsByDataType(linuxItems, "DOCKER")); + + result.put("linux", linuxData); + } + } + + /** + * 处理Switch模板数据 + */ + public static void processSwitchTemplateData(Long templateId, Map result) { + RmTemplateSwitch query = new RmTemplateSwitch(); + query.setTemplateId(templateId); + List switchItems = rmTemplateSwitchMapper.selectRmTemplateSwitchList(query); + + if (!switchItems.isEmpty()) { + Map> switchData = new HashMap<>(); + switchData.put("system", filterItemsByDataType(switchItems, "SYSTEM")); + switchData.put("mpu", filterItemsByDataType(switchItems, "MPU")); + switchData.put("power", filterItemsByDataType(switchItems, "POWERSOURCE")); + switchData.put("netport", filterItemsByDataType(switchItems, "NETPORT")); + switchData.put("lightmodule", filterItemsByDataType(switchItems, "LIGHTMODULE")); + switchData.put("fan", filterItemsByDataType(switchItems, "FAN")); + + result.put("switch", switchData); + } + } + /** + * 通用过滤方法 + */ + public static List filterItemsByDataType(List items, String dataType) { + return items.stream() + .filter(item -> { + try { + Field dataTypeField = item.getClass().getDeclaredField("dataType"); + dataTypeField.setAccessible(true); + return dataType.equals(dataTypeField.get(item)); + } catch (Exception e) { + return false; + } + }) + .collect(Collectors.toList()); + } +} diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml index 86f6476..7685770 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml @@ -105,21 +105,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" INSERT INTO ${tableName} ( `name`, `mac`, `status`, `type`, ipV4, `in_dropped`, `out_dropped`, - `in_speed`, `out_speed`, create_by, update_by, client_id, create_time + `in_speed`, `out_speed`, duplex, speed, create_by, update_by, client_id, create_time ) VALUES ( #{name}, #{mac}, #{status}, #{type}, #{ipV4}, #{inDropped}, #{outDropped}, - #{inSpeed}, #{outSpeed}, #{createBy}, #{updateBy}, #{clientId}, #{createTime} + #{inSpeed}, #{outSpeed}, #{duplex}, #{speed}, #{createBy}, #{updateBy}, #{clientId}, #{createTime} ) INSERT IGNORE INTO ${tableName} ( `name`, `mac`, `status`, `type`, ipV4, `in_dropped`, `out_dropped`, - `in_speed`, `out_speed`,create_by, update_by, client_id, create_time + `in_speed`, `out_speed`,duplex, speed, create_by, update_by, client_id, create_time ) VALUES ( #{item.name}, #{item.mac}, #{item.status}, #{item.type}, #{item.ipV4}, #{item.inDropped}, #{item.outDropped}, - #{item.inSpeed}, #{item.outSpeed}, #{item.createBy}, #{item.updateBy}, #{item.clientId}, #{item.createTime} + #{item.inSpeed}, #{item.outSpeed}, #{item.duplex}, #{item.speed}, #{item.createBy}, #{item.updateBy}, #{item.clientId}, #{item.createTime} ) diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmInitialMonitorItemMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmInitialMonitorItemMapper.xml new file mode 100644 index 0000000..7f0a585 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmInitialMonitorItemMapper.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, item_type, metric_key, metric_name, oid, filter_value, monitor_description, data_type, resource_type, collection_cycle, create_time, update_time, create_by, update_by from rm_initial_monitor_item + + + + + + + + insert into rm_initial_monitor_item + + item_type, + metric_key, + metric_name, + oid, + filter_value, + monitor_description, + data_type, + resource_type, + collection_cycle, + create_time, + update_time, + create_by, + update_by, + + + #{itemType}, + #{metricKey}, + #{metricName}, + #{oid}, + #{filterValue}, + #{monitorDescription}, + #{dataType}, + #{resourceType}, + #{collectionCycle}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_initial_monitor_item + + item_type = #{itemType}, + metric_key = #{metricKey}, + metric_name = #{metricName}, + oid = #{oid}, + filter_value = #{filterValue}, + monitor_description = #{monitorDescription}, + data_type = #{dataType}, + resource_type = #{resourceType}, + collection_cycle = #{collectionCycle}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_initial_monitor_item where id = #{id} + + + + delete from rm_initial_monitor_item where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml new file mode 100644 index 0000000..557c450 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + select id, template_id, resource_group_id, policy_name, description, status, deploy_time, create_time, update_time, create_by, update_by from rm_monitor_policy + + + + + + + + insert into rm_monitor_policy + + template_id, + resource_group_id, + policy_name, + description, + status, + deploy_time, + create_time, + update_time, + create_by, + update_by, + + + #{templateId}, + #{resourceGroupId}, + #{policyName}, + #{description}, + #{status}, + #{deployTime}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_monitor_policy + + template_id = #{templateId}, + resource_group_id = #{resourceGroupId}, + policy_name = #{policyName}, + description = #{description}, + status = #{status}, + deploy_time = #{deployTime}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_monitor_policy where id = #{id} + + + + delete from rm_monitor_policy where id in + + #{id} + + + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorTemplateMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorTemplateMapper.xml new file mode 100644 index 0000000..42d99a6 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorTemplateMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + select id, template_name, description, monitor_items, discovery_rules, resource_group_id, resourcy_type, create_time, update_time, create_by, update_by from rm_monitor_template + + + + + + + + insert into rm_monitor_template + + template_name, + description, + monitor_items, + discovery_rules, + resource_group_id, + resourcy_type, + create_time, + update_time, + create_by, + update_by, + + + #{templateName}, + #{description}, + #{monitorItems}, + #{discoveryRules}, + #{resourceGroupId}, + #{resourcyType}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_monitor_template + + template_name = #{templateName}, + description = #{description}, + monitor_items = #{monitorItems}, + discovery_rules = #{discoveryRules}, + resource_group_id = #{resourceGroupId}, + resourcy_type = #{resourcyType}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_monitor_template where id = #{id} + + + + delete from rm_monitor_template where id in + + #{id} + + + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmTemplateLinuxMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmTemplateLinuxMapper.xml new file mode 100644 index 0000000..897abd7 --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmTemplateLinuxMapper.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + select id, template_id, policy_id, item_type, metric_key, metric_name, data_type, monitor_status, collection_cycle, create_time, update_time, create_by, update_by from rm_template_linux + + + + + + + + insert into rm_template_linux + + template_id, + policy_id, + item_type, + metric_key, + metric_name, + data_type, + monitor_status, + collection_cycle, + create_time, + update_time, + create_by, + update_by, + + + #{templateId}, + #{policyId}, + #{itemType}, + #{metricKey}, + #{metricName}, + #{dataType}, + #{monitorStatus}, + #{collectionCycle}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_template_linux + + template_id = #{templateId}, + policy_id = #{policyId}, + item_type = #{itemType}, + metric_key = #{metricKey}, + metric_name = #{metricName}, + data_type = #{dataType}, + monitor_status = #{monitorStatus}, + collection_cycle = #{collectionCycle}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_template_linux where id = #{id} + + + + delete from rm_template_linux where id in + + #{id} + + + + insert into rm_template_linux + (template_id, policy_id, item_type, metric_key, metric_name, data_type, + monitor_status, create_time, update_time, create_by, update_by) + values + + ( + #{item.templateId}, + #{item.policyId}, + #{item.itemType}, + #{item.metricKey}, + #{item.metricName}, + #{item.dataType}, + #{item.monitorStatus}, + #{item.createTime}, + #{item.updateTime}, + #{item.createBy}, + #{item.updateBy} + ) + + + \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmTemplateSwitchMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmTemplateSwitchMapper.xml new file mode 100644 index 0000000..b5dbdca --- /dev/null +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmTemplateSwitchMapper.xml @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, template_id, policy_id, item_type, metric_key, metric_name, oid, filter_value, switch_description, data_type, monitor_status, collection_cycle, create_time, update_time, create_by, update_by from rm_template_switch + + + + + + + + insert into rm_template_switch + + template_id, + policy_id, + item_type, + metric_key, + metric_name, + oid, + filter_value, + switch_description, + data_type, + monitor_status, + collection_cycle, + create_time, + update_time, + create_by, + update_by, + + + #{templateId}, + #{policyId}, + #{itemType}, + #{metricKey}, + #{metricName}, + #{oid}, + #{filterValue}, + #{switchDescription}, + #{dataType}, + #{monitorStatus}, + #{collectionCycle}, + #{createTime}, + #{updateTime}, + #{createBy}, + #{updateBy}, + + + + + update rm_template_switch + + template_id = #{templateId}, + policy_id = #{policyId}, + item_type = #{itemType}, + metric_key = #{metricKey}, + metric_name = #{metricName}, + oid = #{oid}, + filter_value = #{filterValue}, + switch_description = #{switchDescription}, + data_type = #{dataType}, + monitor_status = #{monitorStatus}, + collection_cycle = #{collectionCycle}, + create_time = #{createTime}, + update_time = #{updateTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from rm_template_switch where id = #{id} + + + + delete from rm_template_switch where id in + + #{id} + + + + INSERT INTO rm_template_switch + ( + template_id, + policy_id, + item_type, + metric_key, + metric_name, + oid, + filter_value, + switch_description, + data_type, + monitor_status, + create_time, + update_time, + create_by, + update_by + ) + VALUES + + ( + #{item.templateId}, + #{item.policyId}, + #{item.itemType}, + #{item.metricKey}, + #{item.metricName}, + #{item.oid}, + #{item.filterValue}, + #{item.switchDescription}, + #{item.dataType}, + #{item.monitorStatus}, + #{item.createTime}, + #{item.updateTime}, + #{item.createBy}, + #{item.updateBy} + ) + + + \ No newline at end of file