diff --git a/pom.xml b/pom.xml
index 65a95f9..d947f0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -260,6 +260,7 @@
ruoyi-gateway
ruoyi-visual
ruoyi-modules
+ ruoyi-rocketmq
ruoyi-api
ruoyi-common
diff --git a/ruoyi-api/ruoyi-api-system/pom.xml b/ruoyi-api/ruoyi-api-system/pom.xml
index 492e0e1..fb1f549 100644
--- a/ruoyi-api/ruoyi-api-system/pom.xml
+++ b/ruoyi-api/ruoyi-api-system/pom.xml
@@ -22,7 +22,11 @@
com.ruoyi
ruoyi-common-core
-
+
+ org.projectlombok
+ lombok
+
+
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
index 95cb91d..7b4dd0e 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
@@ -1,18 +1,15 @@
package com.ruoyi.system.api;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
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.EpsInitialTrafficDataRemote;
+import com.ruoyi.system.api.domain.NodeBandwidth;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
/**
* 用户服务
@@ -51,4 +48,35 @@ public interface RemoteUserService
*/
@PutMapping("/user/recordlogin")
public R recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+ /**
+ * @param nodeBandwidth 服务器带宽收益
+ * @param source 请求来源
+ * @return 结果
+ */
+ @PostMapping("/bandwidth/list")
+ public R getBandwidth(@RequestBody NodeBandwidth nodeBandwidth, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * @param nodeBandwidth 服务器带宽收益
+ * @param source 请求来源
+ * @return 结果
+ */
+ @PostMapping("/bandwidth")
+ public R saveBandwidth(@RequestBody NodeBandwidth nodeBandwidth, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+ /**
+ * 查询流量数据(POST方式)
+ * @param queryParam 查询参数实体
+ * source 请求来源
+ * @return 流量数据列表
+ */
+ @PostMapping("/query")
+ public R query(@RequestBody EpsInitialTrafficDataRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+ /**
+ * 批量保存流量数据
+ * @param queryParam 流量数据列表
+ * @return 操作结果
+ */
+ @PostMapping("/batch")
+ public R batchInitialTraffic(@RequestBody EpsInitialTrafficDataRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java
new file mode 100644
index 0000000..d124a90
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java
@@ -0,0 +1,109 @@
+package com.ruoyi.system.api.domain;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * EPS初始流量数据实体类
+ * 用于存储设备的接收和发送流量数据
+ * 支持按时间自动分表存储(每月分成3个表)
+ */
+@Data
+public class EpsInitialTrafficDataRemote {
+ /** 主键ID */
+ private Long id;
+
+ /**
+ * 动态表名
+ * 格式:eps_traffic_[年]_[月]_[日期范围]
+ * 示例:eps_traffic_2023_08_1_10
+ */
+ private String tableName;
+
+ /** 流量统计开始时间 */
+ private LocalDateTime startTime;
+
+ /** 流量统计结束时间 */
+ private LocalDateTime endTime;
+
+ /** 接收流量(单位:MB) */
+ private Double receiveTraffic;
+
+ /** 发送流量(单位:MB) */
+ private Double sendTraffic;
+
+ /** 设备序列号 */
+ private String deviceSn;
+
+ /** 数据创建时间 */
+ private LocalDateTime createTime;
+
+ /** 备用字段1 */
+ private String remark1;
+
+ /** 备用字段2 */
+ private String remark2;
+
+ /** 备用字段3 */
+ private String remark3;
+
+ /** 备用字段4 */
+ private String remark4;
+
+ /**
+ * 根据createTime自动计算表名
+ * 分表规则:每月分成3个表(1-10日、11-20日、21-31日)
+ */
+ public void calculateTableName() {
+ if (this.createTime != null) {
+ int year = createTime.getYear();
+ int month = createTime.getMonthValue();
+ int day = createTime.getDayOfMonth();
+
+ String range;
+ if (day <= 10) {
+ range = "1_10";
+ } else if (day <= 20) {
+ range = "11_20";
+ } else {
+ range = "21_31";
+ }
+
+ this.tableName = String.format("eps_traffic_%d_%02d_%s", year, month, range);
+ }
+ }
+
+ /**
+ * 获取时间范围内涉及的所有表名
+ * @param start 开始时间
+ * @param end 结束时间
+ * @return 涉及的动态表名集合
+ */
+ public static Set getAffectedTables(LocalDateTime start, LocalDateTime end) {
+ Set tables = new LinkedHashSet<>();
+ LocalDateTime current = start;
+
+ while (!current.isAfter(end)) {
+ int year = current.getYear();
+ int month = current.getMonthValue();
+ int day = current.getDayOfMonth();
+
+ String range;
+ if (day <= 10) {
+ range = "1_10";
+ } else if (day <= 20) {
+ range = "11_20";
+ } else {
+ range = "21_31";
+ }
+
+ tables.add(String.format("eps_traffic_%d_%02d_%s", year, month, range));
+ current = current.plusDays(1);
+ }
+
+ return tables;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/NodeBandwidth.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/NodeBandwidth.java
new file mode 100644
index 0000000..081a1ef
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/NodeBandwidth.java
@@ -0,0 +1,236 @@
+package com.ruoyi.system.api.domain;
+
+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 java.math.BigDecimal;
+
+/**
+ * 节点带宽信息对象 eps_node_bandwidth
+ *
+ * @author gyt
+ * @date 2025-08-12
+ */
+public class NodeBandwidth extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** id */
+ private Long id;
+
+ /** 节点名称 */
+ @Excel(name = "节点名称")
+ private String nodeName;
+
+ /** 硬件SN */
+ @Excel(name = "硬件SN")
+ private String hardwareSn;
+
+ /** 95带宽值Mbps/日 */
+ @Excel(name = "95带宽值Mbps/日")
+ private BigDecimal bandwidth95Daily;
+
+ /** 95带宽值Mbps/月 */
+ @Excel(name = "95带宽值Mbps/月")
+ private BigDecimal bandwidth95Monthly;
+
+ /** 包端带宽值Mbps/日 */
+ @Excel(name = "包端带宽值Mbps/日")
+ private BigDecimal packageBandwidthDaily;
+
+ /** 设备业务客户id */
+ @Excel(name = "设备业务客户id")
+ private String customerId;
+
+ /** 设备业务客户名称 */
+ @Excel(name = "设备业务客户名称")
+ private String customerName;
+
+ /** 业务号 */
+ @Excel(name = "业务号")
+ private String serviceNumber;
+
+ /** 上联交换机 */
+ @Excel(name = "上联交换机")
+ private String uplinkSwitch;
+
+ /** 创建人id */
+ @Excel(name = "创建人id")
+ private Long creatorId;
+
+ /** 创建人名称 */
+ @Excel(name = "创建人名称")
+ private String creatorName;
+
+ /** remark1 */
+ @Excel(name = "remark1")
+ private String remark1;
+
+ /** remark2 */
+ @Excel(name = "remark2")
+ private String remark2;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setNodeName(String nodeName)
+ {
+ this.nodeName = nodeName;
+ }
+
+ public String getNodeName()
+ {
+ return nodeName;
+ }
+
+ public void setHardwareSn(String hardwareSn)
+ {
+ this.hardwareSn = hardwareSn;
+ }
+
+ public String getHardwareSn()
+ {
+ return hardwareSn;
+ }
+
+ public void setBandwidth95Daily(BigDecimal bandwidth95Daily)
+ {
+ this.bandwidth95Daily = bandwidth95Daily;
+ }
+
+ public BigDecimal getBandwidth95Daily()
+ {
+ return bandwidth95Daily;
+ }
+
+ public void setBandwidth95Monthly(BigDecimal bandwidth95Monthly)
+ {
+ this.bandwidth95Monthly = bandwidth95Monthly;
+ }
+
+ public BigDecimal getBandwidth95Monthly()
+ {
+ return bandwidth95Monthly;
+ }
+
+ public void setPackageBandwidthDaily(BigDecimal packageBandwidthDaily)
+ {
+ this.packageBandwidthDaily = packageBandwidthDaily;
+ }
+
+ public BigDecimal getPackageBandwidthDaily()
+ {
+ return packageBandwidthDaily;
+ }
+
+ public void setCustomerId(String customerId)
+ {
+ this.customerId = customerId;
+ }
+
+ public String getCustomerId()
+ {
+ return customerId;
+ }
+
+ public void setCustomerName(String customerName)
+ {
+ this.customerName = customerName;
+ }
+
+ public String getCustomerName()
+ {
+ return customerName;
+ }
+
+ public void setServiceNumber(String serviceNumber)
+ {
+ this.serviceNumber = serviceNumber;
+ }
+
+ public String getServiceNumber()
+ {
+ return serviceNumber;
+ }
+
+ public void setUplinkSwitch(String uplinkSwitch)
+ {
+ this.uplinkSwitch = uplinkSwitch;
+ }
+
+ public String getUplinkSwitch()
+ {
+ return uplinkSwitch;
+ }
+
+ 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 setRemark1(String remark1)
+ {
+ this.remark1 = remark1;
+ }
+
+ public String getRemark1()
+ {
+ return remark1;
+ }
+
+ public void setRemark2(String remark2)
+ {
+ this.remark2 = remark2;
+ }
+
+ public String getRemark2()
+ {
+ return remark2;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("nodeName", getNodeName())
+ .append("hardwareSn", getHardwareSn())
+ .append("bandwidth95Daily", getBandwidth95Daily())
+ .append("bandwidth95Monthly", getBandwidth95Monthly())
+ .append("packageBandwidthDaily", getPackageBandwidthDaily())
+ .append("customerId", getCustomerId())
+ .append("customerName", getCustomerName())
+ .append("serviceNumber", getServiceNumber())
+ .append("uplinkSwitch", getUplinkSwitch())
+ .append("createTime", getCreateTime())
+ .append("updateTime", getUpdateTime())
+ .append("creatorId", getCreatorId())
+ .append("creatorName", getCreatorName())
+ .append("remark1", getRemark1())
+ .append("remark2", getRemark2())
+ .toString();
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
index 5972b3f..f196f41 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -1,13 +1,15 @@
package com.ruoyi.system.api.factory;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.RemoteUserService;
+import com.ruoyi.system.api.domain.EpsInitialTrafficDataRemote;
+import com.ruoyi.system.api.domain.NodeBandwidth;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.model.LoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.RemoteUserService;
-import com.ruoyi.system.api.domain.SysUser;
-import com.ruoyi.system.api.model.LoginUser;
/**
* 用户服务降级处理
@@ -42,6 +44,25 @@ public class RemoteUserFallbackFactory implements FallbackFactory getBandwidth(NodeBandwidth nodeBandwidth, String source) {
+ return R.fail("获取服务器带宽失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R saveBandwidth(NodeBandwidth nodeBandwidth, String source) {
+ return R.fail("新增服务器带宽失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R query(EpsInitialTrafficDataRemote queryParam, String source) {
+ return R.fail("获取初始流量数据失败:" + throwable.getMessage());
+ }
+ @Override
+ public R batchInitialTraffic(EpsInitialTrafficDataRemote queryParam, String source) {
+ return R.fail("新增初始流量数据失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
index 95ee25b..d58a216 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
@@ -32,4 +32,23 @@ public class PageUtils extends PageHelper
{
PageHelper.clearPage();
}
+
+ /**
+ * post传参分页
+ * @param pageDomain
+ */
+ public static void startPage(PageDomain pageDomain)
+ {
+ if(pageDomain.getPageNum() == null) {
+ pageDomain.setPageNum(1);
+ }
+ if(pageDomain.getPageSize() == null) {
+ pageDomain.setPageSize(10);
+ }
+ Integer pageNum = pageDomain.getPageNum();
+ Integer pageSize = pageDomain.getPageSize();
+ String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+ Boolean reasonable = pageDomain.getReasonable();
+ PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
+ }
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java
index cb3c580..f8afe4c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java
@@ -1,12 +1,5 @@
package com.ruoyi.common.core.web.controller;
-import java.beans.PropertyEditorSupport;
-import java.util.Date;
-import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.InitBinder;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.constant.HttpStatus;
@@ -18,6 +11,14 @@ 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.core.web.page.TableSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+
+import java.beans.PropertyEditorSupport;
+import java.util.Date;
+import java.util.List;
/**
* web层通用数据处理
@@ -52,6 +53,14 @@ public class BaseController
{
PageUtils.startPage();
}
+ /**
+ * 设置请求分页数据
+ * @param pageDomain
+ */
+ protected void startPage(PageDomain pageDomain)
+ {
+ PageUtils.startPage(pageDomain);
+ }
/**
* 设置请求排序数据
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
index eb9f783..4e6e8fc 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
@@ -1,12 +1,13 @@
package com.ruoyi.common.core.web.domain;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
/**
* Entity基类
@@ -38,10 +39,28 @@ public class BaseEntity implements Serializable
/** 备注 */
private String remark;
+ /** 当前记录起始索引 */
+ private Integer pageNum;
+
+ /** 每页显示记录数 */
+ private Integer pageSize;
+ /**
+ * 选中的属性名称
+ */
+ private String[] properties;
+
/** 请求参数 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map params;
+ public String[] getProperties() {
+ return properties;
+ }
+
+ public void setProperties(String[] properties) {
+ this.properties = properties;
+ }
+
public String getSearchValue()
{
return searchValue;
@@ -102,6 +121,22 @@ public class BaseEntity implements Serializable
this.remark = remark;
}
+ public Integer getPageNum() {
+ return pageNum;
+ }
+
+ public void setPageNum(Integer pageNum) {
+ this.pageNum = pageNum;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
public Map getParams()
{
if (params == null)
diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml
index a3ae742..09f9447 100644
--- a/ruoyi-modules/ruoyi-system/pom.xml
+++ b/ruoyi-modules/ruoyi-system/pom.xml
@@ -70,6 +70,10 @@
com.ruoyi
ruoyi-common-swagger
+
+ org.projectlombok
+ lombok
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/TableScheduleConfig.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/TableScheduleConfig.java
new file mode 100644
index 0000000..51392fd
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/TableScheduleConfig.java
@@ -0,0 +1,25 @@
+package com.ruoyi.system.config;
+
+import com.ruoyi.system.service.EpsInitialTrafficDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+/**
+ * 自动生成数据表
+ */
+@Configuration
+@EnableScheduling
+public class TableScheduleConfig {
+
+ @Autowired
+ private EpsInitialTrafficDataService epsInitialTrafficDataService;
+
+ // 每月25号创建下月表
+ @Scheduled(cron = "0 0 0 25 * ?")
+// @Scheduled(initialDelay = 5000, fixedDelay = Long.MAX_VALUE)
+ public void createNextMonthTables() {
+ epsInitialTrafficDataService.createNextMonthTables();
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsBusinessController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsBusinessController.java
new file mode 100644
index 0000000..02bd5f2
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsBusinessController.java
@@ -0,0 +1,142 @@
+package com.ruoyi.system.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.system.domain.EpsBusiness;
+import com.ruoyi.system.service.IEpsBusinessService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * 业务信息Controller
+ *
+ * @author gyt
+ * @date 2025-08-18
+ */
+@RestController
+@RequestMapping("/business")
+public class EpsBusinessController extends BaseController
+{
+ @Autowired
+ private IEpsBusinessService epsBusinessService;
+
+ /**
+ * 查询业务信息列表
+ */
+ @RequiresPermissions("system:business:list")
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody EpsBusiness epsBusiness)
+ {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(epsBusiness.getPageNum());
+ pageDomain.setPageSize(epsBusiness.getPageSize());
+ startPage(pageDomain);
+ List list = epsBusinessService.selectEpsBusinessList(epsBusiness);
+ return getDataTable(list);
+ }
+
+ /**
+ * 查询业务信息列表
+ */
+ @RequiresPermissions("system:business:list")
+ @PostMapping("/getAllBusinessMsg")
+ public AjaxResult getAllBusinessMsg(@RequestBody EpsBusiness epsBusiness)
+ {
+ List list = epsBusinessService.selectEpsBusinessList(epsBusiness);
+ return success(list);
+ }
+
+ /**
+ * 导出业务信息列表
+ */
+ @RequiresPermissions("system:business:export")
+ @Log(title = "业务信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EpsBusiness epsBusiness)
+ {
+ List list = epsBusinessService.selectEpsBusinessList(epsBusiness);
+ ExcelUtil util = new ExcelUtil(EpsBusiness.class);
+ util.showColumn(epsBusiness.getProperties());
+ util.exportExcel(response, list, "业务信息数据");
+ }
+
+ /**
+ * 获取业务信息详细信息
+ */
+ @RequiresPermissions("system:business:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id)
+ {
+ return success(epsBusinessService.selectEpsBusinessById(id));
+ }
+
+ /**
+ * 新增业务信息
+ */
+ @RequiresPermissions("system:business:add")
+ @Log(title = "业务信息", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody EpsBusiness epsBusiness)
+ {
+ int rows = epsBusinessService.insertEpsBusiness(epsBusiness);
+ if(-1==rows){
+ return AjaxResult.error(500,"业务名称不可重复");
+ }
+ return toAjax(rows);
+ }
+
+ /**
+ * 修改业务信息
+ */
+ @RequiresPermissions("system:business:edit")
+ @Log(title = "业务信息", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody EpsBusiness epsBusiness)
+ {
+ int rows = epsBusinessService.updateEpsBusiness(epsBusiness);
+ if(-1==rows){
+ return AjaxResult.error(500,"业务名称不可重复");
+ }
+ return toAjax(rows);
+ }
+
+
+ /**
+ * 生成12位唯一标识
+ */
+ @RequiresPermissions("system:business:list")
+ @GetMapping("/getBusinessCode")
+ public String getBusinessCode()
+ {
+ long timestamp = System.currentTimeMillis() / 100; // 取前10位(精确到0.1秒)
+ int random = new Random().nextInt(100); // 2位随机数(00~99)
+ return String.format("%010d%02d", timestamp, random);
+ }
+ /**
+ * 验证业务名称是否存在
+ * @param epsBusiness
+ * @return
+ */
+ @RequiresPermissions("system:business:list")
+ @PostMapping("/countByBusinessName")
+ public AjaxResult countByBusinessName(@RequestBody EpsBusiness epsBusiness)
+ {
+ int rows = epsBusinessService.countByBusinessName(epsBusiness);
+ if(rows>0){
+ return AjaxResult.error(500,"业务名称不可重复");
+ }else {
+ return AjaxResult.success("添加成功");
+ }
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsInitialTrafficDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsInitialTrafficDataController.java
new file mode 100644
index 0000000..78d3610
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsInitialTrafficDataController.java
@@ -0,0 +1,56 @@
+package com.ruoyi.system.controller;
+
+import com.ruoyi.system.domain.EpsInitialTrafficData;
+import com.ruoyi.system.service.EpsInitialTrafficDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+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;
+
+/**
+ * EPS初始流量数据控制器
+ * 提供流量数据的REST接口
+ */
+@RestController
+@RequestMapping("/eps-traffic-data")
+@RequiredArgsConstructor
+public class EpsInitialTrafficDataController {
+
+ private final EpsInitialTrafficDataService epsInitialTrafficDataService;
+
+ /**
+ * 保存单条流量数据
+ * @param data 流量数据实体
+ * @return 操作结果
+ */
+ @PostMapping
+ public ResponseEntity save(@RequestBody EpsInitialTrafficData data) {
+ epsInitialTrafficDataService.save(data);
+ return ResponseEntity.ok().build();
+ }
+
+ /**
+ * 批量保存流量数据
+ * @param dataList 流量数据表
+ * @return 操作结果
+ */
+ @PostMapping("/batch")
+ public ResponseEntity saveBatch(@RequestBody EpsInitialTrafficData dataList) {
+ epsInitialTrafficDataService.saveBatch(dataList);
+ return ResponseEntity.ok().build();
+ }
+ /**
+ * 查询流量数据(POST方式)
+ * @param queryParam 查询参数实体
+ * @return 流量数据列表
+ */
+ @PostMapping("/query")
+ public ResponseEntity> query(@RequestBody EpsInitialTrafficData queryParam) {
+ List result = epsInitialTrafficDataService.query(queryParam);
+ return ResponseEntity.ok(result);
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsMethodChangeRecordController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsMethodChangeRecordController.java
new file mode 100644
index 0000000..5ef9baa
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsMethodChangeRecordController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+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.system.domain.EpsMethodChangeRecord;
+import com.ruoyi.system.service.IEpsMethodChangeRecordService;
+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 javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 收益方式修改记录Controller
+ *
+ * @author gyt
+ * @date 2025-08-19
+ */
+@RestController
+@RequestMapping("/record")
+public class EpsMethodChangeRecordController extends BaseController
+{
+ @Autowired
+ private IEpsMethodChangeRecordService epsMethodChangeRecordService;
+
+ /**
+ * 查询收益方式修改记录列表
+ */
+ @RequiresPermissions("system:record:list")
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody EpsMethodChangeRecord epsMethodChangeRecord)
+ {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(epsMethodChangeRecord.getPageNum());
+ pageDomain.setPageSize(epsMethodChangeRecord.getPageSize());
+ startPage(pageDomain);
+ List list = epsMethodChangeRecordService.selectEpsMethodChangeRecordList(epsMethodChangeRecord);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出收益方式修改记录列表
+ */
+ @RequiresPermissions("system:record:export")
+ @Log(title = "收益方式修改记录", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EpsMethodChangeRecord epsMethodChangeRecord)
+ {
+ List list = epsMethodChangeRecordService.selectEpsMethodChangeRecordList(epsMethodChangeRecord);
+ ExcelUtil util = new ExcelUtil(EpsMethodChangeRecord.class);
+ util.showColumn(epsMethodChangeRecord.getProperties());
+ util.exportExcel(response, list, "收益方式修改记录数据");
+ }
+
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..a9ffc8f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsNodeBandwidthController.java
@@ -0,0 +1,131 @@
+package com.ruoyi.system.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.system.domain.EpsNodeBandwidth;
+import com.ruoyi.system.service.IEpsNodeBandwidthService;
+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-08-12
+ */
+@RestController
+@RequestMapping("/bandwidth")
+public class EpsNodeBandwidthController extends BaseController
+{
+ @Autowired
+ private IEpsNodeBandwidthService epsNodeBandwidthService;
+
+ /**
+ * 查询节点带宽信息列表
+ */
+ @RequiresPermissions("system:bandwidth:list")
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody EpsNodeBandwidth epsNodeBandwidth)
+ {
+
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(epsNodeBandwidth.getPageNum());
+ pageDomain.setPageSize(epsNodeBandwidth.getPageSize());
+ startPage(pageDomain);
+ List list = epsNodeBandwidthService.selectEpsNodeBandwidthList(epsNodeBandwidth);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出节点带宽信息列表
+ */
+ @RequiresPermissions("system:bandwidth:export")
+ @Log(title = "节点带宽信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EpsNodeBandwidth epsNodeBandwidth)
+ {
+ List list = epsNodeBandwidthService.selectEpsNodeBandwidthList(epsNodeBandwidth);
+ ExcelUtil util = new ExcelUtil(EpsNodeBandwidth.class);
+ util.showColumn(epsNodeBandwidth.getProperties());
+ util.exportExcel(response, list, "节点带宽信息数据");
+ }
+
+ /**
+ * 获取节点带宽信息详细信息
+ */
+ @RequiresPermissions("system:bandwidth:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(epsNodeBandwidthService.selectEpsNodeBandwidthById(id));
+ }
+
+ /**
+ * 新增节点带宽信息
+ */
+ @RequiresPermissions("system:bandwidth:add")
+ @Log(title = "节点带宽信息", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody EpsNodeBandwidth epsNodeBandwidth)
+ {
+ return toAjax(epsNodeBandwidthService.insertEpsNodeBandwidth(epsNodeBandwidth));
+ }
+
+ /**
+ * 修改节点带宽信息
+ */
+ @RequiresPermissions("system:bandwidth:edit")
+ @Log(title = "节点带宽信息", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody EpsNodeBandwidth epsNodeBandwidth)
+ {
+ return toAjax(epsNodeBandwidthService.updateEpsNodeBandwidth(epsNodeBandwidth));
+ }
+ /**
+ * 重新计算
+ */
+ @RequiresPermissions("system:bandwidth:query")
+ @GetMapping(value = "recalculate/{id}")
+ public AjaxResult recalculate(@PathVariable("id") Long id)
+ {
+ return success(epsNodeBandwidthService.selectEpsNodeBandwidthById(id));//TODO 待逻辑处理
+ }
+
+ /**
+ * 相关数据
+ */
+ @RequiresPermissions("system:bandwidth:query")
+ @GetMapping(value = "relatedData/{id}")
+ public AjaxResult relatedData(@PathVariable("id") Long id)
+ {
+ return success(epsNodeBandwidthService.relatedData(id));
+ }
+ /**
+ * 相关数据-月均日95值
+ */
+ @RequiresPermissions("system:bandwidth:query")
+ @GetMapping(value = "getAvgDetailMsg/{id}")
+ public AjaxResult getAvgDetailMsg(@PathVariable("id") Long id)
+ {
+ return success(epsNodeBandwidthService.getAvgDetailMsg(id));
+ }
+ /**
+ * 生成月均日95值
+ */
+ @RequiresPermissions("system:bandwidth:add")
+ @Log(title = "节点带宽信息", businessType = BusinessType.INSERT)
+ @PostMapping("/calculateAvg")
+ public AjaxResult calculateAvg(@RequestBody EpsNodeBandwidth epsNodeBandwidth)
+ {
+ return toAjax(epsNodeBandwidthService.insertEpsNodeBandwidth(epsNodeBandwidth));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java
new file mode 100644
index 0000000..0bf4359
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java
@@ -0,0 +1,73 @@
+package com.ruoyi.system.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.system.domain.EpsServerRevenueConfig;
+import com.ruoyi.system.service.IEpsServerRevenueConfigService;
+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-08-19
+ */
+@RestController
+@RequestMapping("/revenueConfig")
+public class EpsServerRevenueConfigController extends BaseController
+{
+ @Autowired
+ private IEpsServerRevenueConfigService epsServerRevenueConfigService;
+
+ /**
+ * 查询服务器收益方式配置列表
+ */
+ @RequiresPermissions("system:config:list")
+ @PostMapping("/list")
+ public TableDataInfo list(EpsServerRevenueConfig epsServerRevenueConfig)
+ {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(epsServerRevenueConfig.getPageNum());
+ pageDomain.setPageSize(epsServerRevenueConfig.getPageSize());
+ startPage(pageDomain);
+ List list = epsServerRevenueConfigService.selectEpsServerRevenueConfigList(epsServerRevenueConfig);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出服务器收益方式配置列表
+ */
+ @RequiresPermissions("system:config:export")
+ @Log(title = "服务器收益方式配置", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EpsServerRevenueConfig epsServerRevenueConfig)
+ {
+ List list = epsServerRevenueConfigService.selectEpsServerRevenueConfigList(epsServerRevenueConfig);
+ ExcelUtil util = new ExcelUtil(EpsServerRevenueConfig.class);
+ util.showColumn(epsServerRevenueConfig.getProperties());
+ util.exportExcel(response, list, "服务器收益方式配置数据");
+ }
+
+
+ /**
+ * 修改服务器收益方式配置
+ */
+ @RequiresPermissions("system:config:edit")
+ @Log(title = "服务器收益方式配置", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody EpsServerRevenueConfig epsServerRevenueConfig)
+ {
+ return toAjax(epsServerRevenueConfigService.updateEpsServerRevenueConfig(epsServerRevenueConfig));
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsTrafficDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsTrafficDataController.java
new file mode 100644
index 0000000..ac4a4bd
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsTrafficDataController.java
@@ -0,0 +1,105 @@
+package com.ruoyi.system.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.system.domain.EpsTrafficData;
+import com.ruoyi.system.service.IEpsTrafficDataService;
+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-08-12
+ */
+@RestController
+@RequestMapping("/data")
+public class EpsTrafficDataController extends BaseController
+{
+ @Autowired
+ private IEpsTrafficDataService epsTrafficDataService;
+
+ /**
+ * 查询流量相关数据列表
+ */
+ @RequiresPermissions("system:data:list")
+ @GetMapping("/list")
+ public TableDataInfo list(EpsTrafficData epsTrafficData)
+ {
+ startPage();
+ List list = epsTrafficDataService.selectEpsTrafficDataList(epsTrafficData);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出流量相关数据列表
+ */
+ @RequiresPermissions("system:data:export")
+ @Log(title = "流量相关数据", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EpsTrafficData epsTrafficData)
+ {
+ List list = epsTrafficDataService.selectEpsTrafficDataList(epsTrafficData);
+ ExcelUtil util = new ExcelUtil(EpsTrafficData.class);
+ util.exportExcel(response, list, "流量相关数据数据");
+ }
+
+ /**
+ * 获取流量相关数据详细信息
+ */
+ @RequiresPermissions("system:data:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(epsTrafficDataService.selectEpsTrafficDataById(id));
+ }
+
+ /**
+ * 新增流量相关数据
+ */
+ @RequiresPermissions("system:data:add")
+ @Log(title = "流量相关数据", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody EpsTrafficData epsTrafficData)
+ {
+ return toAjax(epsTrafficDataService.insertEpsTrafficData(epsTrafficData));
+ }
+
+ /**
+ * 修改流量相关数据
+ */
+ @RequiresPermissions("system:data:edit")
+ @Log(title = "流量相关数据", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody EpsTrafficData epsTrafficData)
+ {
+ return toAjax(epsTrafficDataService.updateEpsTrafficData(epsTrafficData));
+ }
+
+ /**
+ * 删除流量相关数据
+ */
+ @RequiresPermissions("system:data:remove")
+ @Log(title = "流量相关数据", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(epsTrafficDataService.deleteEpsTrafficDataByIds(ids));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/KnowledgeBaseController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/KnowledgeBaseController.java
new file mode 100644
index 0000000..3b07131
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/KnowledgeBaseController.java
@@ -0,0 +1,102 @@
+package com.ruoyi.system.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.system.domain.KnowledgeBase;
+import com.ruoyi.system.service.IKnowledgeBaseService;
+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-08-15
+ */
+@RestController
+@RequestMapping("/knowledgebase")
+public class KnowledgeBaseController extends BaseController
+{
+ @Autowired
+ private IKnowledgeBaseService knowledgeBaseService;
+
+ /**
+ * 查询知识库列表
+ */
+ @RequiresPermissions("system:knowledgebase:list")
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody KnowledgeBase knowledgeBase)
+ {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(knowledgeBase.getPageNum());
+ pageDomain.setPageSize(knowledgeBase.getPageSize());
+ startPage(pageDomain);
+ List list = knowledgeBaseService.selectKnowledgeBaseList(knowledgeBase);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出知识库列表
+ */
+ @RequiresPermissions("system:knowledgebase:export")
+ @Log(title = "知识库", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, KnowledgeBase knowledgeBase)
+ {
+ List list = knowledgeBaseService.selectKnowledgeBaseList(knowledgeBase);
+ ExcelUtil util = new ExcelUtil(KnowledgeBase.class);
+ util.exportExcel(response, list, "知识库数据");
+ }
+
+ /**
+ * 获取知识库详细信息
+ */
+ @RequiresPermissions("system:knowledgebase:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(knowledgeBaseService.selectKnowledgeBaseById(id));
+ }
+
+ /**
+ * 新增知识库
+ */
+ @RequiresPermissions("system:knowledgebase:add")
+ @Log(title = "知识库", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody KnowledgeBase knowledgeBase)
+ {
+ return toAjax(knowledgeBaseService.insertKnowledgeBase(knowledgeBase));
+ }
+
+ /**
+ * 修改知识库
+ */
+ @RequiresPermissions("system:knowledgebase:edit")
+ @Log(title = "知识库", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody KnowledgeBase knowledgeBase)
+ {
+ return toAjax(knowledgeBaseService.updateKnowledgeBase(knowledgeBase));
+ }
+
+ /**
+ * 删除知识库
+ */
+ @RequiresPermissions("system:knowledgebase:remove")
+ @Log(title = "知识库", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(knowledgeBaseService.deleteKnowledgeBaseByIds(ids));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/MtmMonitoringTemplateController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/MtmMonitoringTemplateController.java
new file mode 100644
index 0000000..38f9aaa
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/MtmMonitoringTemplateController.java
@@ -0,0 +1,105 @@
+package com.ruoyi.system.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.system.domain.MtmMonitoringTemplate;
+import com.ruoyi.system.service.IMtmMonitoringTemplateService;
+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-08-12
+ */
+@RestController
+@RequestMapping("/template")
+public class MtmMonitoringTemplateController extends BaseController
+{
+ @Autowired
+ private IMtmMonitoringTemplateService mtmMonitoringTemplateService;
+
+ /**
+ * 查询监控模板管理列表
+ */
+ @RequiresPermissions("system:template:list")
+ @GetMapping("/list")
+ public TableDataInfo list(MtmMonitoringTemplate mtmMonitoringTemplate)
+ {
+ startPage();
+ List list = mtmMonitoringTemplateService.selectMtmMonitoringTemplateList(mtmMonitoringTemplate);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出监控模板管理列表
+ */
+ @RequiresPermissions("system:template:export")
+ @Log(title = "监控模板管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, MtmMonitoringTemplate mtmMonitoringTemplate)
+ {
+ List list = mtmMonitoringTemplateService.selectMtmMonitoringTemplateList(mtmMonitoringTemplate);
+ ExcelUtil util = new ExcelUtil(MtmMonitoringTemplate.class);
+ util.exportExcel(response, list, "监控模板管理数据");
+ }
+
+ /**
+ * 获取监控模板管理详细信息
+ */
+ @RequiresPermissions("system:template:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(mtmMonitoringTemplateService.selectMtmMonitoringTemplateById(id));
+ }
+
+ /**
+ * 新增监控模板管理
+ */
+ @RequiresPermissions("system:template:add")
+ @Log(title = "监控模板管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody MtmMonitoringTemplate mtmMonitoringTemplate)
+ {
+ return toAjax(mtmMonitoringTemplateService.insertMtmMonitoringTemplate(mtmMonitoringTemplate));
+ }
+
+ /**
+ * 修改监控模板管理
+ */
+ @RequiresPermissions("system:template:edit")
+ @Log(title = "监控模板管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody MtmMonitoringTemplate mtmMonitoringTemplate)
+ {
+ return toAjax(mtmMonitoringTemplateService.updateMtmMonitoringTemplate(mtmMonitoringTemplate));
+ }
+
+ /**
+ * 删除监控模板管理
+ */
+ @RequiresPermissions("system:template:remove")
+ @Log(title = "监控模板管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(mtmMonitoringTemplateService.deleteMtmMonitoringTemplateByIds(ids));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmEpsTopologyManagementController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmEpsTopologyManagementController.java
new file mode 100644
index 0000000..78944d4
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmEpsTopologyManagementController.java
@@ -0,0 +1,113 @@
+package com.ruoyi.system.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.system.domain.RmEpsTopologyManagement;
+import com.ruoyi.system.service.IRmEpsTopologyManagementService;
+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-08-12
+ */
+@RestController
+@RequestMapping("/management")
+public class RmEpsTopologyManagementController extends BaseController
+{
+ @Autowired
+ private IRmEpsTopologyManagementService rmEpsTopologyManagementService;
+
+ /**
+ * 查询交换机/服务器名称
+ */
+ @RequiresPermissions("system:management:list")
+ @PostMapping ("/getNamesByResoureType")
+ public List getNamesByResoureType(@RequestBody RmEpsTopologyManagement rmEpsTopologyManagement)
+ {
+ List list = rmEpsTopologyManagementService.selectRmEpsTopologyManagementList(rmEpsTopologyManagement);
+ return list;
+ }
+ /**
+ * 查询拓扑管理列表
+ */
+ @RequiresPermissions("system:management:list")
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody RmEpsTopologyManagement rmEpsTopologyManagement)
+ {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(rmEpsTopologyManagement.getPageNum());
+ pageDomain.setPageSize(rmEpsTopologyManagement.getPageSize());
+ startPage(pageDomain);
+ List list = rmEpsTopologyManagementService.selectRmEpsTopologyManagementList(rmEpsTopologyManagement);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出拓扑管理列表
+ */
+ @RequiresPermissions("system:management:export")
+ @Log(title = "拓扑管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, RmEpsTopologyManagement rmEpsTopologyManagement)
+ {
+ List list = rmEpsTopologyManagementService.selectRmEpsTopologyManagementList(rmEpsTopologyManagement);
+ ExcelUtil util = new ExcelUtil(RmEpsTopologyManagement.class);
+ util.showColumn(rmEpsTopologyManagement.getProperties());
+ util.exportExcel(response, list, "拓扑管理数据");
+ }
+
+ /**
+ * 获取拓扑管理详细信息
+ */
+ @RequiresPermissions("system:management:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(rmEpsTopologyManagementService.selectRmEpsTopologyManagementById(id));
+ }
+
+ /**
+ * 新增拓扑管理
+ */
+ @RequiresPermissions("system:management:add")
+ @Log(title = "拓扑管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody RmEpsTopologyManagement rmEpsTopologyManagement)
+ {
+ return toAjax(rmEpsTopologyManagementService.insertRmEpsTopologyManagement(rmEpsTopologyManagement));
+ }
+
+ /**
+ * 修改拓扑管理
+ */
+ @RequiresPermissions("system:management:edit")
+ @Log(title = "拓扑管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody RmEpsTopologyManagement rmEpsTopologyManagement)
+ {
+ return toAjax(rmEpsTopologyManagementService.updateRmEpsTopologyManagement(rmEpsTopologyManagement));
+ }
+
+ /**
+ * 删除拓扑管理
+ */
+ @RequiresPermissions("system:management:remove")
+ @Log(title = "拓扑管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(rmEpsTopologyManagementService.deleteRmEpsTopologyManagementByIds(ids));
+ }
+}
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
new file mode 100644
index 0000000..f8e428f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/RmResourceGroupController.java
@@ -0,0 +1,103 @@
+package com.ruoyi.system.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.system.domain.RmResourceGroup;
+import com.ruoyi.system.service.IRmResourceGroupService;
+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-08-12
+ */
+@RestController
+@RequestMapping("/group")
+public class RmResourceGroupController extends BaseController
+{
+ @Autowired
+ private IRmResourceGroupService rmResourceGroupService;
+
+ /**
+ * 查询资源分组列表
+ */
+ @RequiresPermissions("system:group:list")
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody RmResourceGroup rmResourceGroup)
+ {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(rmResourceGroup.getPageNum());
+ pageDomain.setPageSize(rmResourceGroup.getPageSize());
+ startPage(pageDomain);
+ List list = rmResourceGroupService.selectRmResourceGroupList(rmResourceGroup);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出资源分组列表
+ */
+ @RequiresPermissions("system:group:export")
+ @Log(title = "资源分组", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, RmResourceGroup rmResourceGroup)
+ {
+ List list = rmResourceGroupService.selectRmResourceGroupList(rmResourceGroup);
+ ExcelUtil util = new ExcelUtil(RmResourceGroup.class);
+ util.showColumn(rmResourceGroup.getProperties());
+ util.exportExcel(response, list, "资源分组数据");
+ }
+
+ /**
+ * 获取资源分组详细信息
+ */
+ @RequiresPermissions("system:group:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(rmResourceGroupService.selectRmResourceGroupById(id));
+ }
+
+ /**
+ * 新增资源分组
+ */
+ @RequiresPermissions("system:group:add")
+ @Log(title = "资源分组", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody RmResourceGroup rmResourceGroup)
+ {
+ return toAjax(rmResourceGroupService.insertRmResourceGroup(rmResourceGroup));
+ }
+
+ /**
+ * 修改资源分组
+ */
+ @RequiresPermissions("system:group:edit")
+ @Log(title = "资源分组", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody RmResourceGroup rmResourceGroup)
+ {
+ return toAjax(rmResourceGroupService.updateRmResourceGroup(rmResourceGroup));
+ }
+
+ /**
+ * 删除资源分组
+ */
+ @RequiresPermissions("system:group:remove")
+ @Log(title = "资源分组", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(rmResourceGroupService.deleteRmResourceGroupByIds(ids));
+ }
+}
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 e8e6349..8288f81 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
@@ -1,25 +1,21 @@
package com.ruoyi.system.controller;
-import java.util.List;
-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.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.system.domain.RmResourceRegistration;
import com.ruoyi.system.service.IRmResourceRegistrationService;
-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;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
/**
* 资源注册Controller
@@ -38,10 +34,13 @@ public class RmResourceRegistrationController extends BaseController
* 查询资源注册列表
*/
@RequiresPermissions("system:registration:list")
- @GetMapping("/list")
- public TableDataInfo list(RmResourceRegistration rmResourceRegistration)
+ @PostMapping("/list")
+ public TableDataInfo list(@RequestBody RmResourceRegistration rmResourceRegistration)
{
- startPage();
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(rmResourceRegistration.getPageNum());
+ pageDomain.setPageSize(rmResourceRegistration.getPageSize());
+ startPage(pageDomain);
List list = rmResourceRegistrationService.selectRmResourceRegistrationList(rmResourceRegistration);
return getDataTable(list);
}
@@ -55,7 +54,16 @@ public class RmResourceRegistrationController extends BaseController
public void export(HttpServletResponse response, RmResourceRegistration rmResourceRegistration)
{
List list = rmResourceRegistrationService.selectRmResourceRegistrationList(rmResourceRegistration);
+ for (RmResourceRegistration resourceRegistration : list) {
+ // 根据端口类型导出端口名称
+ if("1".equals(resourceRegistration.getResourcePort())){
+ resourceRegistration.setResourcePort("162(SNMP)");
+ }else{
+ resourceRegistration.setResourcePort(resourceRegistration.getOtherPortName());
+ }
+ }
ExcelUtil util = new ExcelUtil(RmResourceRegistration.class);
+ util.showColumn(rmResourceRegistration.getProperties());
util.exportExcel(response, list, "资源注册数据");
}
@@ -77,7 +85,11 @@ public class RmResourceRegistrationController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody RmResourceRegistration rmResourceRegistration)
{
- return toAjax(rmResourceRegistrationService.insertRmResourceRegistration(rmResourceRegistration));
+ int rows = rmResourceRegistrationService.insertRmResourceRegistration(rmResourceRegistration);
+ if(-1==rows){
+ return AjaxResult.error(500,"硬件SN不可重复");
+ }
+ return toAjax(rows);
}
/**
@@ -92,13 +104,37 @@ public class RmResourceRegistrationController extends BaseController
}
/**
- * 删除资源注册
+ * 资源注册-注册
*/
- @RequiresPermissions("system:registration:remove")
- @Log(title = "资源注册", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ids}")
- public AjaxResult remove(@PathVariable Long[] ids)
+ @RequiresPermissions("system:registration:edit")
+ @Log(title = "资源注册-注册", businessType = BusinessType.UPDATE)
+ @PostMapping("/register")
+ public AjaxResult register(@RequestBody RmResourceRegistration rmResourceRegistration)
{
- return toAjax(rmResourceRegistrationService.deleteRmResourceRegistrationByIds(ids));
+ return toAjax(rmResourceRegistrationService.register(rmResourceRegistration));
}
+
+ /**
+ * 查询所有资源名称(包含设备使用)
+ * @return 资源注册集合
+ */
+ @RequiresPermissions("system:group:list")
+ @GetMapping("/selectAllResourceName")
+ public List