diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/CalculateController.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/CalculateController.java
index 3a8d784..73a173e 100644
--- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/CalculateController.java
+++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/CalculateController.java
@@ -1,6 +1,7 @@
package com.tongran.system.controller;
import com.tongran.common.core.web.controller.BaseController;
+import com.tongran.common.core.web.domain.AjaxResult;
import com.tongran.system.domain.EpsInitialTrafficData;
import com.tongran.system.domain.InitialSwitchInfoDetails;
import com.tongran.system.service.EpsInitialTrafficDataService;
@@ -24,6 +25,11 @@ public class CalculateController extends BaseController {
@Autowired
private IInitialSwitchInfoDetailsService initialSwitchInfoDetailsService;
+ @GetMapping("/createTables")
+ public AjaxResult createTables(Long plusMonth){
+ epsInitialTrafficDataService.createNextMonthTables(plusMonth);
+ return success();
+ }
@GetMapping("/calculate95BandwidthDaily")
public void calculate95BandwidthDaily(String day){
// 获取昨天的日期范围(北京时间)
diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/EpsInitialTrafficDataMapper.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/EpsInitialTrafficDataMapper.java
index 70c14bb..bebeca8 100644
--- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/EpsInitialTrafficDataMapper.java
+++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/EpsInitialTrafficDataMapper.java
@@ -72,4 +72,6 @@ public interface EpsInitialTrafficDataMapper {
void createOtherMsgTable(String tableName);
void createSwitchOpMdTable(String tableName);
+
+ void createDiskInfo(String tableName);
}
diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/EpsInitialTrafficDataService.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/EpsInitialTrafficDataService.java
index 38ccdf7..debf359 100644
--- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/EpsInitialTrafficDataService.java
+++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/EpsInitialTrafficDataService.java
@@ -19,6 +19,12 @@ public interface EpsInitialTrafficDataService {
* 每月25日0点自动执行
*/
void createNextMonthTables();
+
+ /**
+ * 创建分表
+ * @param plusMonth 下几个月
+ */
+ void createNextMonthTables(Long plusMonth);
/**
* 保存单条流量数据
* @param data 流量数据
diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java
index 6c6652d..4b6524d 100644
--- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java
+++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java
@@ -74,8 +74,31 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
createOtherMsgTable(year, month);
// 创建交换机光模块表
createSwitchOpMdTable(year, month);
+ // 创建磁盘信息表
+ createDiskInfo(year, month);
}
+ public void createNextMonthTables(Long plusMonth) {
+ LocalDate nextMonth = LocalDate.now().plusMonths(plusMonth);
+ int year = nextMonth.getYear();
+ int month = nextMonth.getMonthValue();
+ // 创建流量详情表
+ createTrafficDetailsTable(year, month);
+ // 创建流量初始表
+ createTrafficStatsTable(year, month);
+ // 创建mtr探测丢包结果表
+ createMtrProbeResultTable(year, month);
+ // 创建交换机流量初始表
+ createSwitchInfoTable(year, month);
+ // 创建交换机流量业务表
+ createSwitchInfoDetailsTable(year, month);
+ // 创建服务器其他信息表
+ createOtherMsgTable(year, month);
+ // 创建交换机光模块表
+ createSwitchOpMdTable(year, month);
+ // 创建磁盘信息表
+ createDiskInfo(year, month);
+ }
private void createTrafficDetailsTable(int year, int month) {
createRangeTables(year, month, "eps_traffic_details", (tableName) -> {
epsInitialTrafficDataMapper.createEpsTrafficTable(tableName);
@@ -114,6 +137,11 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
epsInitialTrafficDataMapper.createSwitchOpMdTable(tableName);
});
}
+ private void createDiskInfo(int year, int month) {
+ createRangeTables(year, month, "initial_disk_info", (tableName) -> {
+ epsInitialTrafficDataMapper.createDiskInfo(tableName);
+ });
+ }
/**
diff --git a/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml b/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml
index 12ea429..dfe478a 100644
--- a/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml
+++ b/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml
@@ -201,6 +201,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
UNIQUE KEY uk_client_fiber_time (client_id, create_time, fiber_port_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='光模块信息表';
+
+ CREATE TABLE IF NOT EXISTS ${tableName} (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+ `client_id` varchar(255) NOT NULL COMMENT '客户端ID',
+ `name` varchar(100) NOT NULL COMMENT '磁盘名称(如sda、sdb等)',
+ `serial` varchar(100) COMMENT '磁盘序列号',
+ `total` bigint(20) COMMENT '磁盘总大小(GB)',
+ `write_speed` bigint(20) COMMENT '磁盘写入速率(字节/秒)',
+ `read_speed` bigint(20) COMMENT '磁盘读取速率(字节/秒)',
+ `write_times` bigint(20) COMMENT '磁盘写入次数',
+ `read_times` bigint(20) COMMENT '磁盘读取次数',
+ `write_bytes` bigint(20) COMMENT '磁盘写入总字节数',
+ `read_bytes` bigint(20) COMMENT '磁盘读取总字节数',
+ `create_by` varchar(50) COMMENT '创建人',
+ `update_by` varchar(50) COMMENT '更新人',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `type` varchar(255) COMMENT '磁盘类型',
+ `used_space` bigint(20) COMMENT '已用空间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY uk_client_disk_time (`client_id`, `name`, `create_time`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='磁盘监控信息表';
+
INSERT INTO ${tableName} (
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/controller/AllDiskNameController.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/controller/AllDiskNameController.java
new file mode 100644
index 0000000..754c460
--- /dev/null
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/controller/AllDiskNameController.java
@@ -0,0 +1,98 @@
+package com.tongran.rocketmq.controller;
+
+import com.tongran.common.core.utils.poi.ExcelUtil;
+import com.tongran.common.core.web.controller.BaseController;
+import com.tongran.common.core.web.domain.AjaxResult;
+import com.tongran.common.core.web.page.TableDataInfo;
+import com.tongran.common.log.annotation.Log;
+import com.tongran.common.log.enums.BusinessType;
+import com.tongran.common.security.annotation.RequiresPermissions;
+import com.tongran.rocketmq.domain.AllDiskName;
+import com.tongran.rocketmq.service.IAllDiskNameService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 磁盘名称存储Controller
+ *
+ * @author tongran
+ * @date 2026-01-14
+ */
+@RestController
+@RequestMapping("/allDiskName")
+public class AllDiskNameController extends BaseController
+{
+ @Autowired
+ private IAllDiskNameService allDiskNameService;
+
+ /**
+ * 查询磁盘名称存储列表
+ */
+ @RequiresPermissions("rocketmq:allDiskName:list")
+ @GetMapping("/list")
+ public TableDataInfo list(AllDiskName allDiskName)
+ {
+ startPage();
+ List list = allDiskNameService.selectAllDiskNameList(allDiskName);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出磁盘名称存储列表
+ */
+ @RequiresPermissions("rocketmq:allDiskName:export")
+ @Log(title = "磁盘名称存储", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, AllDiskName allDiskName)
+ {
+ List list = allDiskNameService.selectAllDiskNameList(allDiskName);
+ ExcelUtil util = new ExcelUtil(AllDiskName.class);
+ util.exportExcel(response, list, "磁盘名称存储数据");
+ }
+
+ /**
+ * 获取磁盘名称存储详细信息
+ */
+ @RequiresPermissions("rocketmq:allDiskName:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(allDiskNameService.selectAllDiskNameById(id));
+ }
+
+ /**
+ * 新增磁盘名称存储
+ */
+ @RequiresPermissions("rocketmq:allDiskName:add")
+ @Log(title = "磁盘名称存储", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody AllDiskName allDiskName)
+ {
+ return toAjax(allDiskNameService.insertAllDiskName(allDiskName));
+ }
+
+ /**
+ * 修改磁盘名称存储
+ */
+ @RequiresPermissions("rocketmq:allDiskName:edit")
+ @Log(title = "磁盘名称存储", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody AllDiskName allDiskName)
+ {
+ return toAjax(allDiskNameService.updateAllDiskName(allDiskName));
+ }
+
+ /**
+ * 删除磁盘名称存储
+ */
+ @RequiresPermissions("rocketmq:allDiskName:remove")
+ @Log(title = "磁盘名称存储", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(allDiskNameService.deleteAllDiskNameByIds(ids));
+ }
+}
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/AllDiskName.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/AllDiskName.java
new file mode 100644
index 0000000..03afaf9
--- /dev/null
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/AllDiskName.java
@@ -0,0 +1,116 @@
+package com.tongran.rocketmq.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.tongran.common.core.annotation.Excel;
+import com.tongran.common.core.web.domain.BaseEntity;
+
+/**
+ * 磁盘名称存储对象 all_disk_name
+ *
+ * @author tongran
+ * @date 2026-01-14
+ */
+public class AllDiskName extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long id;
+
+ /** 客户端ID */
+ @Excel(name = "客户端ID")
+ private String clientId;
+
+ /** 磁盘名称 */
+ @Excel(name = "磁盘名称")
+ private String name;
+
+ /** 磁盘状态(0:丢失,1:存在) */
+ @Excel(name = "磁盘状态(0:丢失,1:存在)")
+ private Integer status;
+
+ /** 读取IOPS */
+ @Excel(name = "读取IOPS")
+ private String readIops;
+
+ /** 写入IOPS */
+ @Excel(name = "写入IOPS")
+ private String writeIops;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setClientId(String clientId)
+ {
+ this.clientId = clientId;
+ }
+
+ public String getClientId()
+ {
+ return clientId;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setStatus(Integer status)
+ {
+ this.status = status;
+ }
+
+ public Integer getStatus()
+ {
+ return status;
+ }
+
+ public void setReadIops(String readIops)
+ {
+ this.readIops = readIops;
+ }
+
+ public String getReadIops()
+ {
+ return readIops;
+ }
+
+ public void setWriteIops(String writeIops)
+ {
+ this.writeIops = writeIops;
+ }
+
+ public String getWriteIops()
+ {
+ return writeIops;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("clientId", getClientId())
+ .append("name", getName())
+ .append("status", getStatus())
+ .append("readIops", getReadIops())
+ .append("writeIops", getWriteIops())
+ .append("createTime", getCreateTime())
+ .append("updateTime", getUpdateTime())
+ .append("createBy", getCreateBy())
+ .append("updateBy", getUpdateBy())
+ .toString();
+ }
+}
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/InitialDiskInfo.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/InitialDiskInfo.java
index dbea8db..ce9038d 100644
--- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/InitialDiskInfo.java
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/domain/InitialDiskInfo.java
@@ -4,6 +4,8 @@ import com.tongran.common.core.annotation.Excel;
import com.tongran.common.core.web.domain.BaseEntity;
import lombok.Data;
+import java.util.List;
+
/**
* 磁盘监控信息对象 initial_disk_info
*
@@ -69,5 +71,18 @@ public class InitialDiskInfo extends BaseEntity
private String readBytesStr;
/** 换算后的写入次数 */
private String writeBytesStr;
+ /** 磁盘类型 */
+ private String type;
+ /** 已用空间 */
+ private Long usedSpace;
+ /** 读IOPS */
+ private Long readIops;
+ /** 写IOPS */
+ private Long writeIops;
+ /** 表名 */
+ private String tableName;
+ /** 批量插入列表 */
+ private List list;
+
}
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/DeviceMessageHandler.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/DeviceMessageHandler.java
index a97a290..21f283f 100644
--- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/DeviceMessageHandler.java
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/DeviceMessageHandler.java
@@ -265,7 +265,7 @@ public class DeviceMessageHandler {
iface.setCreateTime(createTime);
});
// 初始磁盘数据入库
- initialDiskInfoService.batchInsertInitialDiskInfo(disks);
+ initialDiskInfoService.batchInsertInitialDiskInfo(disks, createTime);
}else{
throw new RuntimeException("磁盘data数据为空");
}
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java
index 5aa27f2..a6d8461 100644
--- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java
@@ -550,7 +550,7 @@ public class MessageHandler {
iface.setCreateTime(createTime);
});
// 初始磁盘数据入库
- initialDiskInfoService.batchInsertInitialDiskInfo(disks);
+ initialDiskInfoService.batchInsertInitialDiskInfo(disks, createTime);
}else{
throw new RuntimeException("磁盘data数据为空");
}
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/AllDiskNameMapper.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/AllDiskNameMapper.java
new file mode 100644
index 0000000..1083037
--- /dev/null
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/AllDiskNameMapper.java
@@ -0,0 +1,64 @@
+package com.tongran.rocketmq.mapper;
+
+import com.tongran.rocketmq.domain.AllDiskName;
+
+import java.util.List;
+
+/**
+ * 磁盘名称存储Mapper接口
+ *
+ * @author tongran
+ * @date 2026-01-14
+ */
+public interface AllDiskNameMapper
+{
+ /**
+ * 查询磁盘名称存储
+ *
+ * @param id 磁盘名称存储主键
+ * @return 磁盘名称存储
+ */
+ public AllDiskName selectAllDiskNameById(Long id);
+
+ /**
+ * 查询磁盘名称存储列表
+ *
+ * @param allDiskName 磁盘名称存储
+ * @return 磁盘名称存储集合
+ */
+ public List selectAllDiskNameList(AllDiskName allDiskName);
+
+ /**
+ * 新增磁盘名称存储
+ *
+ * @param allDiskName 磁盘名称存储
+ * @return 结果
+ */
+ public int insertAllDiskName(AllDiskName allDiskName);
+
+ /**
+ * 修改磁盘名称存储
+ *
+ * @param allDiskName 磁盘名称存储
+ * @return 结果
+ */
+ public int updateAllDiskName(AllDiskName allDiskName);
+
+ /**
+ * 删除磁盘名称存储
+ *
+ * @param id 磁盘名称存储主键
+ * @return 结果
+ */
+ public int deleteAllDiskNameById(Long id);
+
+ /**
+ * 批量删除磁盘名称存储
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteAllDiskNameByIds(Long[] ids);
+
+ int batchInsertAllDistName(List dataList);
+}
diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/InitialDiskInfoMapper.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/InitialDiskInfoMapper.java
index 0dd5c94..d4aa682 100644
--- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/InitialDiskInfoMapper.java
+++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/mapper/InitialDiskInfoMapper.java
@@ -1,7 +1,6 @@
package com.tongran.rocketmq.mapper;
import com.tongran.rocketmq.domain.InitialDiskInfo;
-import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Map;
@@ -65,10 +64,10 @@ public interface InitialDiskInfoMapper
/**
* 批量新增磁盘监控信息
*
- * @param list 磁盘监控信息集合
+ * @param initialDiskInfo 磁盘监控信息
* @return 结果
*/
- public int batchInsertInitialDiskInfo(@Param("list") List list);
+ public int batchInsertInitialDiskInfo(InitialDiskInfo initialDiskInfo);
/**
* 获取磁盘设备基础信息
@@ -83,4 +82,6 @@ public interface InitialDiskInfoMapper
* @return
*/
List
@@ -93,6 +116,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
read_times = #{readTimes},
write_bytes = #{writeBytes},
read_bytes = #{readBytes},
+
+ type = #{type},
+ used_space = #{usedSpace},
create_by = #{createBy},
update_by = #{updateBy},
create_time = #{createTime},
@@ -106,14 +132,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- delete from initial_disk_info where id in
+ delete from initial_disk_info where id in
#{id}
-
- INSERT IGNORE INTO initial_disk_info
+
+ INSERT IGNORE INTO ${tableName}
(
id,
client_id,
@@ -126,6 +152,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
read_times,
write_bytes,
read_bytes,
+ type,
+ used_space,
create_by,
update_by,
create_time,
@@ -145,6 +173,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item.readTimes},
#{item.writeBytes},
#{item.readBytes},
+ #{item.type},
+ #{item.usedSpace},
#{item.createBy},
#{item.updateBy},
@@ -166,14 +196,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
+
+