优化交换机数据入库,修改bug,增加手动计算95值接口

This commit is contained in:
gaoyutao
2025-09-29 20:49:22 +08:00
parent b8548b1077
commit 8fd334b5c3
11 changed files with 349 additions and 8 deletions

View File

@@ -0,0 +1,90 @@
package com.ruoyi.system.controller;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.system.domain.EpsInitialTrafficData;
import com.ruoyi.system.domain.InitialSwitchInfoDetails;
import com.ruoyi.system.service.EpsInitialTrafficDataService;
import com.ruoyi.system.service.IInitialSwitchInfoDetailsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@Slf4j
@RestController
@RequestMapping("calculateBandwidth")
public class CalculateController extends BaseController {
private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Autowired
private EpsInitialTrafficDataService epsInitialTrafficDataService;
@Autowired
private IInitialSwitchInfoDetailsService initialSwitchInfoDetailsService;
@GetMapping("/calculate95BandwidthDaily")
public void calculate95BandwidthDaily(String day){
// 获取昨天的日期范围(北京时间)
LocalDate yesterday = LocalDate.parse(day);
String dailyStartTime = yesterday.atStartOfDay().format(TIME_FORMAT); // 00:00:00
String dailyEndTime = yesterday.atTime(23, 59, 59).format(TIME_FORMAT); // 23:59:59
// 日
String dayOrMonth = "1";
// 95带宽值/日
EpsInitialTrafficData queryParam = new EpsInitialTrafficData();
queryParam.setDayOrMonth(dayOrMonth);
InitialSwitchInfoDetails initialSwitchInfoDetails = new InitialSwitchInfoDetails();
initialSwitchInfoDetails.setDayOrMonth(dayOrMonth);
// epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, dailyStartTime, dailyEndTime, "1000");
// epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, dailyStartTime, dailyEndTime, "1024");
// initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1000");
// initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1024");
}
@GetMapping("/calculateMonthlyBandwidth")
public void calculateMonthlyBandwidth(String day){
// 获取上个月的日期范围
LocalDate lastMonth = LocalDate.parse(day);
LocalDate firstDayOfMonth = lastMonth.withDayOfMonth(1);
LocalDate lastDayOfMonth = lastMonth.withDayOfMonth(lastMonth.lengthOfMonth());
String monthlyStartTime = firstDayOfMonth.atStartOfDay().format(TIME_FORMAT);
String monthlyEndTime = lastDayOfMonth.atTime(23, 59, 59).format(TIME_FORMAT);
calculateServerMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1000");
calculateServerMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1024");
calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1000");
calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1024");
}
/**
* 计算服务器月95带宽值
*/
private void calculateServerMonthlyBandwidth(String monthlyStartTime, String monthlyEndTime, String calculationMode) {
log.info("开始计算服务器月95带宽值...");
try {
String dayOrMonth = "2";
EpsInitialTrafficData queryParam = new EpsInitialTrafficData();
queryParam.setDayOrMonth(dayOrMonth);
epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, monthlyStartTime, monthlyEndTime, calculationMode);
log.info("服务器月95带宽值计算完成");
} catch (Exception e) {
log.error("计算服务器月95带宽值失败", e);
}
}
/**
* 计算交换机月95带宽值
*/
private void calculateSwitchMonthlyBandwidth(String monthlyStartTime, String monthlyEndTime, String calculationMode) {
log.info("开始计算交换机月95带宽值...");
try {
String dayOrMonth = "2";
InitialSwitchInfoDetails queryParam = new InitialSwitchInfoDetails();
queryParam.setDayOrMonth(dayOrMonth);
initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(queryParam, monthlyStartTime, monthlyEndTime, calculationMode);
log.info("交换机月95带宽值计算完成");
} catch (Exception e) {
log.error("计算交换机月95带宽值失败", e);
}
}
}

View File

@@ -12,6 +12,8 @@ import com.ruoyi.system.service.IRmResourceRegistrationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 资源监控API
*
@@ -58,4 +60,14 @@ public class ResourceMonitorController extends BaseController
PageInfo<RmResourceRegistration> pageInfo = rmResourceGroupService.getRegisterList(rmResourceGroup);
return getDataTable(pageInfo.getList(), pageInfo.getTotal());
}
/**
* 获取资源列表
* @return
*/
@PostMapping("/getAllRegisterListByGroupId")
public AjaxResult getAllRegisterListByGroupId(@RequestBody RmResourceGroup rmResourceGroup){
// 拿到注册信息
List<RmResourceRegistration> list = rmResourceGroupService.getAllRegisterList(rmResourceGroup);
return success(list);
}
}

View File

@@ -63,6 +63,7 @@ public interface IRmResourceGroupService
public int deleteRmResourceGroupById(Long id);
PageInfo<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup);
List<RmResourceRegistration> getAllRegisterList(RmResourceGroup rmResourceGroup);
String exitsResourceById(RmResourceGroup rmResourceGroup);
}

View File

@@ -11,6 +11,7 @@ import com.ruoyi.system.service.IRmResourceGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import static com.ruoyi.common.core.utils.PageUtils.startPage;
@@ -168,6 +169,34 @@ public class RmResourceGroupServiceImpl implements IRmResourceGroupService
return new PageInfo<>(rmResourceRegistrationList);
}
}
/**
* 根据资源分组获取所欲资源列表
* @param rmResourceGroup
* @return
*/
@Override
public List<RmResourceRegistration> getAllRegisterList(RmResourceGroup rmResourceGroup) {
if(rmResourceGroup.getId() == null){
return new ArrayList<>();
}
RmResourceGroup group = rmResourceGroupMapper.selectRmResourceGroupById(rmResourceGroup.getId());
String ids = group.getIncludedDevicesId();
String[] resourceIds = ids.split(",");
// 拿到资源信息
List<RmResourceRegistration> rmResourceRegistrationList = rmResourceRegistrationMapper.getRegistrationByIds(resourceIds);
// 监控项赋值-暂时不需要
for (RmResourceRegistration rmResourceRegistration : rmResourceRegistrationList) {
RmResourceGroup item = rmResourceGroupMapper.selectMonitorMsgAndGroupMsg(rmResourceRegistration.getId());
if(item != null){
rmResourceRegistration.setMonitorItems(item.getMonitorItems());
rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
}else{
rmResourceRegistration.setMonitorItems("0");
rmResourceRegistration.setDiscoveryRules("0");
}
}
return rmResourceRegistrationList;
}
@Override
public String exitsResourceById(RmResourceGroup rmResourceGroup) {

View File

@@ -40,9 +40,49 @@ public class CalculateUtil {
throw new UnsupportedOperationException("Unknown mode: " + mode);
}
}
// 1000进制换算
// 1000进制换算最小单位为bit
// private static BigDecimal convertWithDecimalCoefficients(BigDecimal value, String unit) {
// switch (unit) {
// case "B/S": // bit per second
// return value.divide(new BigDecimal("1000000000"), 2, RoundingMode.HALF_UP); // 10^9
// case "KB/S": // Kilobit per second
// return value.divide(new BigDecimal("1000000"), 2, RoundingMode.HALF_UP); // 10^6
// case "MB/S": // Megabit per second
// return value.divide(new BigDecimal("1000"), 2, RoundingMode.HALF_UP); // 10^3
// case "GB/S": // Gigabit per second
// return value.setScale(2, RoundingMode.HALF_UP); // 10^0
// case "TB/S": // Terabit per second
// return value.multiply(new BigDecimal("1000")) // 10^3
// .setScale(2, RoundingMode.HALF_UP);
// default:
// throw new IllegalArgumentException("Unsupported DECIMAL unit: " + unit);
// }
// }
// // 1024进制换算最小单位为bit
// private static BigDecimal convertWithBinaryCoefficients(BigDecimal value, String unit) {
// BigDecimal base1024 = new BigDecimal(1024);
// BigDecimal base1048576 = base1024.multiply(base1024); // 1024^2 = 1048576
// BigDecimal base1073741824 = base1048576.multiply(base1024); // 1024^3 = 1073741824
//
// switch (unit) {
// case "B/S": // bit per second
// return value.divide(base1073741824, 2, RoundingMode.HALF_UP); // 1024^3
// case "KB/S": // Kilobit per second
// return value.divide(base1048576, 2, RoundingMode.HALF_UP); // 1024^2
// case "MB/S": // Megabit per second
// return value.divide(base1024, 2, RoundingMode.HALF_UP); // 1024^1
// case "GB/S": // Gigabit per second
// return value.setScale(2, RoundingMode.HALF_UP); // 1024^0
// case "TB/S": // Terabit per second
// return value.multiply(base1024) // 1024^1
// .setScale(2, RoundingMode.HALF_UP);
// default:
// throw new IllegalArgumentException("Unsupported BINARY unit: " + unit);
// }
// }
// 字节1000进制换算
private static BigDecimal convertWithDecimalCoefficients(BigDecimal value, String unit) {
switch (unit) {
switch (unit.toUpperCase()) {
case "B/S":
return value.multiply(new BigDecimal("0.000008")) // 8/1000000
.setScale(2, RoundingMode.HALF_UP);
@@ -62,9 +102,9 @@ public class CalculateUtil {
}
}
// 1024进制换算
// 字节1024进制换算
private static BigDecimal convertWithBinaryCoefficients(BigDecimal value, String unit) {
switch (unit) {
switch (unit.toUpperCase()) {
case "B/S":
return value.multiply(new BigDecimal("0.00000762939")) // 8/1048576
.setScale(2, RoundingMode.HALF_UP);