95值计算方式新增1024
This commit is contained in:
		@@ -3,6 +3,7 @@ package com.ruoyi.system.api;
 | 
				
			|||||||
import com.ruoyi.common.core.constant.SecurityConstants;
 | 
					import com.ruoyi.common.core.constant.SecurityConstants;
 | 
				
			||||||
import com.ruoyi.common.core.constant.ServiceNameConstants;
 | 
					import com.ruoyi.common.core.constant.ServiceNameConstants;
 | 
				
			||||||
import com.ruoyi.common.core.domain.R;
 | 
					import com.ruoyi.common.core.domain.R;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.web.page.TableDataInfo;
 | 
				
			||||||
import com.ruoyi.system.api.domain.*;
 | 
					import com.ruoyi.system.api.domain.*;
 | 
				
			||||||
import com.ruoyi.system.api.factory.RemoteRevenueConfigFallbackFactory;
 | 
					import com.ruoyi.system.api.factory.RemoteRevenueConfigFallbackFactory;
 | 
				
			||||||
import org.springframework.cloud.openfeign.FeignClient;
 | 
					import org.springframework.cloud.openfeign.FeignClient;
 | 
				
			||||||
@@ -70,5 +71,15 @@ public interface RemoteRevenueConfigService
 | 
				
			|||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @PostMapping("/registration/getRegistrationByIds")
 | 
					    @PostMapping("/registration/getRegistrationByIds")
 | 
				
			||||||
    public R<List<RmResourceRegistrationRemote>> getRegistrationByIds(String[] ids, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 | 
					    public R<List<RmResourceRegistrationRemote>> getRegistrationByIds(@RequestBody String[] ids, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取资源注册列表
 | 
				
			||||||
 | 
					     * @param rmResourceRegistrationRemote
 | 
				
			||||||
 | 
					     * @param source
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @PostMapping("/registration/list")
 | 
				
			||||||
 | 
					    public R<TableDataInfo> getRegistrationList(@RequestBody RmResourceRegistrationRemote rmResourceRegistrationRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package com.ruoyi.system.api.factory;
 | 
					package com.ruoyi.system.api.factory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.ruoyi.common.core.domain.R;
 | 
					import com.ruoyi.common.core.domain.R;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.web.page.TableDataInfo;
 | 
				
			||||||
import com.ruoyi.system.api.RemoteRevenueConfigService;
 | 
					import com.ruoyi.system.api.RemoteRevenueConfigService;
 | 
				
			||||||
import com.ruoyi.system.api.domain.*;
 | 
					import com.ruoyi.system.api.domain.*;
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
@@ -55,6 +56,11 @@ public class RemoteRevenueConfigFallbackFactory implements FallbackFactory<Remot
 | 
				
			|||||||
            public R<List<RmResourceRegistrationRemote>> getRegistrationByIds(String[] ids, String source) {
 | 
					            public R<List<RmResourceRegistrationRemote>> getRegistrationByIds(String[] ids, String source) {
 | 
				
			||||||
                return R.fail("获取资源注册信息失败:" + throwable.getMessage());
 | 
					                return R.fail("获取资源注册信息失败:" + throwable.getMessage());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public R<TableDataInfo> getRegistrationList(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) {
 | 
				
			||||||
 | 
					                return R.fail("获取资源注册列表信息失败" + throwable.getMessage());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@ import java.time.ZoneId;
 | 
				
			|||||||
import java.time.format.DateTimeFormatter;
 | 
					import java.time.format.DateTimeFormatter;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.concurrent.CompletableFuture;
 | 
				
			||||||
import java.util.stream.Collectors;
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -47,7 +48,7 @@ public class TableScheduleConfig {
 | 
				
			|||||||
        epsInitialTrafficDataService.createNextMonthTables();
 | 
					        epsInitialTrafficDataService.createNextMonthTables();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 每天12点执行 计算95带宽值/日
 | 
					    // 每天0点执行 计算95带宽值/日
 | 
				
			||||||
    @Scheduled(cron = "0 4 0 * * ?", zone = "Asia/Shanghai")
 | 
					    @Scheduled(cron = "0 4 0 * * ?", zone = "Asia/Shanghai")
 | 
				
			||||||
    public void calculate95BandwidthDaily() {
 | 
					    public void calculate95BandwidthDaily() {
 | 
				
			||||||
        // 获取昨天的日期范围(北京时间)
 | 
					        // 获取昨天的日期范围(北京时间)
 | 
				
			||||||
@@ -59,10 +60,17 @@ public class TableScheduleConfig {
 | 
				
			|||||||
        // 95带宽值/日
 | 
					        // 95带宽值/日
 | 
				
			||||||
        EpsInitialTrafficData queryParam = new EpsInitialTrafficData();
 | 
					        EpsInitialTrafficData queryParam = new EpsInitialTrafficData();
 | 
				
			||||||
        queryParam.setDayOrMonth(dayOrMonth);
 | 
					        queryParam.setDayOrMonth(dayOrMonth);
 | 
				
			||||||
        epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, dailyStartTime, dailyEndTime);
 | 
					 | 
				
			||||||
        InitialSwitchInfoDetails initialSwitchInfoDetails = new InitialSwitchInfoDetails();
 | 
					        InitialSwitchInfoDetails initialSwitchInfoDetails = new InitialSwitchInfoDetails();
 | 
				
			||||||
        initialSwitchInfoDetails.setDayOrMonth(dayOrMonth);
 | 
					        initialSwitchInfoDetails.setDayOrMonth(dayOrMonth);
 | 
				
			||||||
        initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime);
 | 
					        // 顺序执行链
 | 
				
			||||||
 | 
					        CompletableFuture.runAsync(() -> executeWithLog("业务带宽1000",
 | 
				
			||||||
 | 
					                () -> epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, dailyStartTime, dailyEndTime, "1000")))
 | 
				
			||||||
 | 
					        .thenRun(() -> executeWithLog("业务带宽1024",
 | 
				
			||||||
 | 
					                () -> epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, dailyStartTime, dailyEndTime, "1024")))
 | 
				
			||||||
 | 
					        .thenRun(() -> executeWithLog("交换机带宽1000",
 | 
				
			||||||
 | 
					                () -> initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1000")))
 | 
				
			||||||
 | 
					        .thenRun(() -> executeWithLog("交换机带宽1024",
 | 
				
			||||||
 | 
					                () -> initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1024")));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 每月1号0点执行 计算95带宽值/月
 | 
					    // 每月1号0点执行 计算95带宽值/月
 | 
				
			||||||
@@ -76,38 +84,42 @@ public class TableScheduleConfig {
 | 
				
			|||||||
        String monthlyStartTime = firstDayOfMonth.atStartOfDay().format(TIME_FORMAT);
 | 
					        String monthlyStartTime = firstDayOfMonth.atStartOfDay().format(TIME_FORMAT);
 | 
				
			||||||
        String monthlyEndTime = lastDayOfMonth.atTime(23, 59, 59).format(TIME_FORMAT);
 | 
					        String monthlyEndTime = lastDayOfMonth.atTime(23, 59, 59).format(TIME_FORMAT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 顺序执行各任务,间隔10分钟
 | 
					        // 链式顺序执行(无额外日志封装)
 | 
				
			||||||
        executeWithDelay(() -> calculateServerMonthlyBandwidth(monthlyStartTime, monthlyEndTime), 0);
 | 
					        CompletableFuture.runAsync(() -> calculateServerMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1000"))
 | 
				
			||||||
        executeWithDelay(() -> calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime), 10);
 | 
					                .thenRun(() -> calculateServerMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1024"))
 | 
				
			||||||
        executeWithDelay(() -> calculateServerAvgMonthlyBandwidth(monthlyStartTime, monthlyEndTime), 10);
 | 
					                .thenRun(() -> calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1000"))
 | 
				
			||||||
        executeWithDelay(() -> calculateSwitchAvgMonthlyBandwidth(monthlyStartTime, monthlyEndTime), 10);
 | 
					                .thenRun(() -> calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1024"))
 | 
				
			||||||
 | 
					                .thenRun(() -> calculateServerAvgMonthlyBandwidth(monthlyStartTime, monthlyEndTime))
 | 
				
			||||||
 | 
					                .thenRun(() -> calculateSwitchAvgMonthlyBandwidth(monthlyStartTime, monthlyEndTime))
 | 
				
			||||||
 | 
					                .exceptionally(e -> {
 | 
				
			||||||
 | 
					                    log.error("月度带宽计算链执行异常", e); // 仅保留最终异常捕获
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 延迟执行任务
 | 
					     * 执行任务日志
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void executeWithDelay(Runnable task, int delayMinutes) {
 | 
					    private void executeWithLog(String taskName, Runnable task) {
 | 
				
			||||||
 | 
					        log.info("开始执行: {}", taskName);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            if (delayMinutes > 0) {
 | 
					 | 
				
			||||||
                Thread.sleep(delayMinutes * 60 * 1000);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            task.run();
 | 
					            task.run();
 | 
				
			||||||
        } catch (InterruptedException e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            Thread.currentThread().interrupt();
 | 
					            log.error("{} 执行失败", taskName, e);
 | 
				
			||||||
            log.error("任务执行被中断", e);
 | 
					            throw e; // 可选:是否终止后续任务
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        log.info("{} 执行完成", taskName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算服务器月95带宽值
 | 
					     * 计算服务器月95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateServerMonthlyBandwidth(String monthlyStartTime, String monthlyEndTime) {
 | 
					    private void calculateServerMonthlyBandwidth(String monthlyStartTime, String monthlyEndTime, String calculationMode) {
 | 
				
			||||||
        log.info("开始计算服务器月95带宽值...");
 | 
					        log.info("开始计算服务器月95带宽值...");
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            String dayOrMonth = "2";
 | 
					            String dayOrMonth = "2";
 | 
				
			||||||
            EpsInitialTrafficData queryParam = new EpsInitialTrafficData();
 | 
					            EpsInitialTrafficData queryParam = new EpsInitialTrafficData();
 | 
				
			||||||
            queryParam.setDayOrMonth(dayOrMonth);
 | 
					            queryParam.setDayOrMonth(dayOrMonth);
 | 
				
			||||||
            epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, monthlyStartTime, monthlyEndTime);
 | 
					            epsInitialTrafficDataService.calculateBusiness95BandwidthDaily(queryParam, monthlyStartTime, monthlyEndTime, calculationMode);
 | 
				
			||||||
            log.info("服务器月95带宽值计算完成");
 | 
					            log.info("服务器月95带宽值计算完成");
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            log.error("计算服务器月95带宽值失败", e);
 | 
					            log.error("计算服务器月95带宽值失败", e);
 | 
				
			||||||
@@ -117,13 +129,13 @@ public class TableScheduleConfig {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算交换机月95带宽值
 | 
					     * 计算交换机月95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateSwitchMonthlyBandwidth(String monthlyStartTime, String monthlyEndTime) {
 | 
					    private void calculateSwitchMonthlyBandwidth(String monthlyStartTime, String monthlyEndTime, String calculationMode) {
 | 
				
			||||||
        log.info("开始计算交换机月95带宽值...");
 | 
					        log.info("开始计算交换机月95带宽值...");
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            String dayOrMonth = "2";
 | 
					            String dayOrMonth = "2";
 | 
				
			||||||
            InitialSwitchInfoDetails queryParam = new InitialSwitchInfoDetails();
 | 
					            InitialSwitchInfoDetails queryParam = new InitialSwitchInfoDetails();
 | 
				
			||||||
            queryParam.setDayOrMonth(dayOrMonth);
 | 
					            queryParam.setDayOrMonth(dayOrMonth);
 | 
				
			||||||
            initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(queryParam, monthlyStartTime, monthlyEndTime);
 | 
					            initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(queryParam, monthlyStartTime, monthlyEndTime, calculationMode);
 | 
				
			||||||
            log.info("交换机月95带宽值计算完成");
 | 
					            log.info("交换机月95带宽值计算完成");
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            log.error("计算交换机月95带宽值失败", e);
 | 
					            log.error("计算交换机月95带宽值失败", e);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,10 +145,10 @@ public class EpsNodeBandwidthController extends BaseController
 | 
				
			|||||||
        String dailyEndTime = timeRange.getEnd();
 | 
					        String dailyEndTime = timeRange.getEnd();
 | 
				
			||||||
        if("1".equals(epsNodeBandwidth.getResourceType())){
 | 
					        if("1".equals(epsNodeBandwidth.getResourceType())){
 | 
				
			||||||
            // 重新计算服务器95带宽值
 | 
					            // 重新计算服务器95带宽值
 | 
				
			||||||
            epsInitialTrafficDataService.recalculateServer95Bandwidth(epsNodeBandwidth, dailyStartTime, dailyEndTime);
 | 
					            epsInitialTrafficDataService.recalculateServer95Bandwidth(epsNodeBandwidth, dailyStartTime, dailyEndTime, epsNodeBandwidth.getCalculationMode());
 | 
				
			||||||
        }else{
 | 
					        }else{
 | 
				
			||||||
            // 重新计算交换机95带宽值
 | 
					            // 重新计算交换机95带宽值
 | 
				
			||||||
            initialSwitchInfoDetailsService.recalculateSwitch95Bandwidth(epsNodeBandwidth, dailyStartTime, dailyEndTime);
 | 
					            initialSwitchInfoDetailsService.recalculateSwitch95Bandwidth(epsNodeBandwidth, dailyStartTime, dailyEndTime, epsNodeBandwidth.getCalculationMode());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return success();
 | 
					        return success();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -136,5 +136,7 @@ public class EpsNodeBandwidth extends BaseEntity
 | 
				
			|||||||
    private List<String> nodeNames;
 | 
					    private List<String> nodeNames;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private List<String> switchNames;
 | 
					    private List<String> switchNames;
 | 
				
			||||||
 | 
					    /** 计算方式 */
 | 
				
			||||||
 | 
					    private String calculationMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,5 +56,9 @@ public class RmResourceGroup extends BaseEntity
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /** 修改人名称 */
 | 
					    /** 修改人名称 */
 | 
				
			||||||
    private String updaterName;
 | 
					    private String updaterName;
 | 
				
			||||||
 | 
					    /** 监控项 */
 | 
				
			||||||
 | 
					    private String monitorItems;
 | 
				
			||||||
 | 
					    /** 自动发现项 */
 | 
				
			||||||
 | 
					    private String discoveryRules;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,5 +118,9 @@ public class RmResourceRegistration extends BaseEntity
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /** 修改人名称 */
 | 
					    /** 修改人名称 */
 | 
				
			||||||
    private String updaterName;
 | 
					    private String updaterName;
 | 
				
			||||||
 | 
					    /** 监控项 */
 | 
				
			||||||
 | 
					    private String monitorItems;
 | 
				
			||||||
 | 
					    /** 自动发现项 */
 | 
				
			||||||
 | 
					    private String discoveryRules;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,9 @@
 | 
				
			|||||||
package com.ruoyi.system.mapper;
 | 
					package com.ruoyi.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import com.ruoyi.system.domain.RmResourceGroup;
 | 
					import com.ruoyi.system.domain.RmResourceGroup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 资源分组Mapper接口
 | 
					 * 资源分组Mapper接口
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
@@ -58,4 +59,11 @@ public interface RmResourceGroupMapper
 | 
				
			|||||||
     * @return 结果
 | 
					     * @return 结果
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int deleteRmResourceGroupByIds(Long[] ids);
 | 
					    public int deleteRmResourceGroupByIds(Long[] ids);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 查询资源分组信息和监控项
 | 
				
			||||||
 | 
					     * @param id
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public RmResourceGroup selectMonitorMsgAndGroupMsg(Long id);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ import com.ruoyi.system.domain.EpsNodeBandwidth;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.math.BigDecimal;
 | 
					import java.math.BigDecimal;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * EPS表创建服务接口
 | 
					 * EPS表创建服务接口
 | 
				
			||||||
@@ -46,7 +47,7 @@ public interface EpsInitialTrafficDataService {
 | 
				
			|||||||
     * @param queryParam 查询参数实体
 | 
					     * @param queryParam 查询参数实体
 | 
				
			||||||
     * @return 流量数据列表
 | 
					     * @return 流量数据列表
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void calculateBusiness95BandwidthDaily(EpsInitialTrafficData queryParam, String dailyStartTime, String dailyEndTime);
 | 
					    void calculateBusiness95BandwidthDaily(EpsInitialTrafficData queryParam, String dailyStartTime, String dailyEndTime, String calculationMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 重新计算服务器95带宽值
 | 
					     * 重新计算服务器95带宽值
 | 
				
			||||||
@@ -54,8 +55,13 @@ public interface EpsInitialTrafficDataService {
 | 
				
			|||||||
     * @param dailyStartTime 开始时间
 | 
					     * @param dailyStartTime 开始时间
 | 
				
			||||||
     * @param dailyEndTime 结束时间
 | 
					     * @param dailyEndTime 结束时间
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void recalculateServer95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime);
 | 
					    void recalculateServer95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime, String calculationMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 计算服务器流量使用率(处理带单位的数据)
 | 
				
			||||||
 | 
					     * @return 包含总带宽、发送带宽和发送占比的Map
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    Map<String, Object> trafficRateByServer();
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 当前在线服务器发送带宽总流量
 | 
					     * 当前在线服务器发送带宽总流量
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,7 +73,7 @@ public interface IInitialSwitchInfoDetailsService
 | 
				
			|||||||
     * @param queryParam 查询参数实体
 | 
					     * @param queryParam 查询参数实体
 | 
				
			||||||
     * @return 流量数据列表
 | 
					     * @return 流量数据列表
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void calculateSwitch95BandwidthDaily(InitialSwitchInfoDetails queryParam, String dailyStartTime, String dailyEndTime);
 | 
					    void calculateSwitch95BandwidthDaily(InitialSwitchInfoDetails queryParam, String dailyStartTime, String dailyEndTime, String calculationMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 重新计算交换机95带宽值
 | 
					     * 重新计算交换机95带宽值
 | 
				
			||||||
@@ -81,7 +81,7 @@ public interface IInitialSwitchInfoDetailsService
 | 
				
			|||||||
     * @param dailyStartTime 开始时间
 | 
					     * @param dailyStartTime 开始时间
 | 
				
			||||||
     * @param dailyEndTime 结束时间
 | 
					     * @param dailyEndTime 结束时间
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void recalculateSwitch95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime);
 | 
					    void recalculateSwitch95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime, String calculationMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 获取交换机相关数据
 | 
					     * 获取交换机相关数据
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,9 @@
 | 
				
			|||||||
package com.ruoyi.system.service;
 | 
					package com.ruoyi.system.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import com.ruoyi.system.domain.RmResourceGroup;
 | 
					import com.ruoyi.system.domain.RmResourceGroup;
 | 
				
			||||||
 | 
					import com.ruoyi.system.domain.RmResourceRegistration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 资源分组Service接口
 | 
					 * 资源分组Service接口
 | 
				
			||||||
@@ -58,4 +60,6 @@ public interface IRmResourceGroupService
 | 
				
			|||||||
     * @return 结果
 | 
					     * @return 结果
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int deleteRmResourceGroupById(Long id);
 | 
					    public int deleteRmResourceGroupById(Long id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    List<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			|||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
import org.springframework.transaction.annotation.Isolation;
 | 
					import org.springframework.transaction.annotation.Isolation;
 | 
				
			||||||
import org.springframework.transaction.annotation.Transactional;
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
 | 
					import org.springframework.util.CollectionUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.math.BigDecimal;
 | 
					import java.math.BigDecimal;
 | 
				
			||||||
import java.math.RoundingMode;
 | 
					import java.math.RoundingMode;
 | 
				
			||||||
@@ -215,13 +216,14 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
     * @param queryParam
 | 
					     * @param queryParam
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void calculateBusiness95BandwidthDaily(EpsInitialTrafficData queryParam, String dailyStartTime, String dailyEndTime) {
 | 
					    public void calculateBusiness95BandwidthDaily(EpsInitialTrafficData queryParam,
 | 
				
			||||||
 | 
					                                                  String dailyStartTime, String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 获取所有设备SN列表
 | 
					        // 获取所有设备SN列表
 | 
				
			||||||
        List<AllInterfaceName> snList = allInterfaceNameMapper.getAllDeviceSn(new AllInterfaceName());
 | 
					        List<AllInterfaceName> snList = allInterfaceNameMapper.getAllDeviceSn(new AllInterfaceName());
 | 
				
			||||||
        // 遍历处理每个设备
 | 
					        // 遍历处理每个设备
 | 
				
			||||||
        snList.forEach(interfaceName -> {
 | 
					        snList.forEach(interfaceName -> {
 | 
				
			||||||
            queryParam.setServiceSn(interfaceName.getDeviceSn());
 | 
					            queryParam.setServiceSn(interfaceName.getDeviceSn());
 | 
				
			||||||
            processDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					            processDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -232,7 +234,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
     * @param dailyEndTime 结束时间
 | 
					     * @param dailyEndTime 结束时间
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void recalculateServer95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime) {
 | 
					    public void recalculateServer95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime, String calculationMode ) {
 | 
				
			||||||
        EpsInitialTrafficData epsInitialTrafficData = new EpsInitialTrafficData();
 | 
					        EpsInitialTrafficData epsInitialTrafficData = new EpsInitialTrafficData();
 | 
				
			||||||
        epsInitialTrafficData.setStartTime(dailyStartTime);
 | 
					        epsInitialTrafficData.setStartTime(dailyStartTime);
 | 
				
			||||||
        epsInitialTrafficData.setEndTime(dailyEndTime);
 | 
					        epsInitialTrafficData.setEndTime(dailyEndTime);
 | 
				
			||||||
@@ -244,7 +246,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
        if(!dataList.isEmpty()){
 | 
					        if(!dataList.isEmpty()){
 | 
				
			||||||
            // 1. 提取并转换带宽值
 | 
					            // 1. 提取并转换带宽值
 | 
				
			||||||
            List<BigDecimal> speedsInMbps = dataList.stream()
 | 
					            List<BigDecimal> speedsInMbps = dataList.stream()
 | 
				
			||||||
                    .map(data -> CalculateUtil.parseSpeedToMbps(data.getOutSpeed()))
 | 
					                    .map(data -> CalculateUtil.parseSpeedToMbps(data.getOutSpeed(), calculationMode))
 | 
				
			||||||
                    .sorted()
 | 
					                    .sorted()
 | 
				
			||||||
                    .collect(Collectors.toList());
 | 
					                    .collect(Collectors.toList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -255,16 +257,97 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
            EpsInitialTrafficData initialTrafficData = dataList.get(0);
 | 
					            EpsInitialTrafficData initialTrafficData = dataList.get(0);
 | 
				
			||||||
            initialTrafficData.setResourceType("1");
 | 
					            initialTrafficData.setResourceType("1");
 | 
				
			||||||
            initialTrafficData.setBandwidthType(epsNodeBandwidth.getBandwidthType());
 | 
					            initialTrafficData.setBandwidthType(epsNodeBandwidth.getBandwidthType());
 | 
				
			||||||
            saveBandwidthResult(initialTrafficData, percentile95, dailyStartTime);
 | 
					            saveBandwidthResult(initialTrafficData, percentile95, dailyStartTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 计算服务器流量使用率(处理带单位的数据)
 | 
				
			||||||
 | 
					     * @return 包含总带宽、发送带宽和发送占比的Map
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Map<String, Object> trafficRateByServer() {
 | 
				
			||||||
 | 
					        Map<String, Object> resultMap = new HashMap<>(3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 初始化默认值
 | 
				
			||||||
 | 
					        resultMap.put("outSpeedTotal", BigDecimal.ZERO);
 | 
				
			||||||
 | 
					        resultMap.put("speedTotal", BigDecimal.ZERO);
 | 
				
			||||||
 | 
					        resultMap.put("outSpeedRate", BigDecimal.ZERO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 获取近5分钟的流量数据
 | 
				
			||||||
 | 
					        List<EpsInitialTrafficData> dataList = getTrafficData();
 | 
				
			||||||
 | 
					        if (CollectionUtils.isEmpty(dataList)) {
 | 
				
			||||||
 | 
					            return resultMap;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BigDecimal total = BigDecimal.ZERO;
 | 
				
			||||||
 | 
					        BigDecimal outTotal = BigDecimal.ZERO;
 | 
				
			||||||
 | 
					        boolean hasValidData = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 计算总带宽和发送带宽
 | 
				
			||||||
 | 
					        for (EpsInitialTrafficData data : dataList) {
 | 
				
			||||||
 | 
					            // 处理发送带宽(假设outSpeed已经是标准单位)
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                BigDecimal outSpeed = CalculateUtil.parseSpeedToMbps(data.getOutSpeed(), "1000");
 | 
				
			||||||
 | 
					                outTotal = outTotal.add(outSpeed);
 | 
				
			||||||
 | 
					            } catch (Exception e) {
 | 
				
			||||||
 | 
					                log.warn("Invalid outSpeed value: {}", data.getOutSpeed());
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 处理总带宽(带单位的值如"10000Mb/s")
 | 
				
			||||||
 | 
					            String speedWithUnit = data.getSpeed();
 | 
				
			||||||
 | 
					            if (speedWithUnit != null && !"Unknown!".equalsIgnoreCase(speedWithUnit)) {
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    // 移除单位部分(如"Mb/s")
 | 
				
			||||||
 | 
					                    String numericPart = speedWithUnit.replaceAll("[^0-9.]", "");
 | 
				
			||||||
 | 
					                    BigDecimal speedValue = new BigDecimal(numericPart);
 | 
				
			||||||
 | 
					                    total = total.add(speedValue);
 | 
				
			||||||
 | 
					                    hasValidData = true;
 | 
				
			||||||
 | 
					                } catch (NumberFormatException e) {
 | 
				
			||||||
 | 
					                    log.warn("Invalid speed value format: {}", speedWithUnit);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 存储计算结果
 | 
				
			||||||
 | 
					        resultMap.put("outSpeedTotal", outTotal.setScale(2, RoundingMode.HALF_UP));
 | 
				
			||||||
 | 
					        resultMap.put("speedTotal", total.setScale(2, RoundingMode.HALF_UP));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 计算发送带宽占比(只有存在有效数据时才计算)
 | 
				
			||||||
 | 
					        if (hasValidData && total.compareTo(BigDecimal.ZERO) != 0) {
 | 
				
			||||||
 | 
					            BigDecimal outSpeedRate = outTotal.divide(total, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
 | 
				
			||||||
 | 
					            resultMap.put("outSpeedRate", outSpeedRate);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return resultMap;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 当前在线服务器发送带宽总流量
 | 
					     * 当前在线服务器发送带宽总流量
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public BigDecimal sumTrafficByServer() {
 | 
					    public BigDecimal sumTrafficByServer() {
 | 
				
			||||||
 | 
					        // 总带宽
 | 
				
			||||||
 | 
					        BigDecimal total = BigDecimal.ZERO;
 | 
				
			||||||
 | 
					        // 近5分钟的带宽明细
 | 
				
			||||||
 | 
					        List<EpsInitialTrafficData> dataList = getTrafficData();
 | 
				
			||||||
 | 
					        if(!dataList.isEmpty()){
 | 
				
			||||||
 | 
					            for (EpsInitialTrafficData initialTrafficData : dataList) {
 | 
				
			||||||
 | 
					                // 服务器发送带宽流量
 | 
				
			||||||
 | 
					                BigDecimal outSpeed = CalculateUtil.parseSpeedToMbps(initialTrafficData.getOutSpeed(), "1000");
 | 
				
			||||||
 | 
					                total = total.add(outSpeed);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return total.setScale(0, RoundingMode.HALF_UP);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 提取公共方法
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private List<EpsInitialTrafficData> getTrafficData(){
 | 
				
			||||||
        // 获取当前时间
 | 
					        // 获取当前时间
 | 
				
			||||||
        LocalDateTime now = LocalDateTime.now();
 | 
					        LocalDateTime now = LocalDateTime.now();
 | 
				
			||||||
        // 结束时间
 | 
					        // 结束时间
 | 
				
			||||||
@@ -276,19 +359,11 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
        // 格式化为字符串
 | 
					        // 格式化为字符串
 | 
				
			||||||
        String dailyStartTime = startTime.format(formatter);
 | 
					        String dailyStartTime = startTime.format(formatter);
 | 
				
			||||||
        String dailyEndTime = endTime.format(formatter);
 | 
					        String dailyEndTime = endTime.format(formatter);
 | 
				
			||||||
        BigDecimal total = BigDecimal.ZERO;
 | 
					 | 
				
			||||||
        EpsInitialTrafficData epsInitialTrafficData = new EpsInitialTrafficData();
 | 
					        EpsInitialTrafficData epsInitialTrafficData = new EpsInitialTrafficData();
 | 
				
			||||||
        epsInitialTrafficData.setStartTime(dailyStartTime);
 | 
					        epsInitialTrafficData.setStartTime(dailyStartTime);
 | 
				
			||||||
        epsInitialTrafficData.setEndTime(dailyEndTime);
 | 
					        epsInitialTrafficData.setEndTime(dailyEndTime);
 | 
				
			||||||
        List<EpsInitialTrafficData> dataList = query(epsInitialTrafficData);
 | 
					        List<EpsInitialTrafficData> dataList = query(epsInitialTrafficData);
 | 
				
			||||||
        if(!dataList.isEmpty()){
 | 
					        return dataList;
 | 
				
			||||||
            for (EpsInitialTrafficData initialTrafficData : dataList) {
 | 
					 | 
				
			||||||
                // 服务器发送带宽流量
 | 
					 | 
				
			||||||
                BigDecimal outSpeed = CalculateUtil.parseSpeedToMbps(initialTrafficData.getOutSpeed());
 | 
					 | 
				
			||||||
                total = total.add(outSpeed);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return total.setScale(0, RoundingMode.HALF_UP);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -296,7 +371,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void processDeviceBandwidth(EpsInitialTrafficData queryParam,
 | 
					    private void processDeviceBandwidth(EpsInitialTrafficData queryParam,
 | 
				
			||||||
                                        String dailyStartTime,
 | 
					                                        String dailyStartTime,
 | 
				
			||||||
                                        String dailyEndTime) {
 | 
					                                        String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 1. 检查设备是否有业务变更
 | 
					        // 1. 检查设备是否有业务变更
 | 
				
			||||||
        EpsServerRevenueConfig revenueConfig = new EpsServerRevenueConfig();
 | 
					        EpsServerRevenueConfig revenueConfig = new EpsServerRevenueConfig();
 | 
				
			||||||
        revenueConfig.setHardwareSn(queryParam.getServiceSn());
 | 
					        revenueConfig.setHardwareSn(queryParam.getServiceSn());
 | 
				
			||||||
@@ -305,9 +380,9 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // 2. 根据业务变更情况选择计算方式
 | 
					        // 2. 根据业务变更情况选择计算方式
 | 
				
			||||||
        if (hasTrafficMethodChanged(changedList)) {
 | 
					        if (hasTrafficMethodChanged(changedList)) {
 | 
				
			||||||
            calculateChangedDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					            calculateChangedDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            calculateNormalDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					            calculateNormalDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -323,7 +398,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateChangedDeviceBandwidth(EpsInitialTrafficData queryParam,
 | 
					    private void calculateChangedDeviceBandwidth(EpsInitialTrafficData queryParam,
 | 
				
			||||||
                                                 String dailyStartTime,
 | 
					                                                 String dailyStartTime,
 | 
				
			||||||
                                                 String dailyEndTime) {
 | 
					                                                 String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 1. 获取业务变更记录(按时间降序)
 | 
					        // 1. 获取业务变更记录(按时间降序)
 | 
				
			||||||
        EpsMethodChangeRecord changeQuery = new EpsMethodChangeRecord();
 | 
					        EpsMethodChangeRecord changeQuery = new EpsMethodChangeRecord();
 | 
				
			||||||
        changeQuery.setHardwareSn(queryParam.getServiceSn());
 | 
					        changeQuery.setHardwareSn(queryParam.getServiceSn());
 | 
				
			||||||
@@ -337,9 +412,9 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
            records.sort((r1, r2) -> r2.getCreateTime().compareTo(r1.getCreateTime()));
 | 
					            records.sort((r1, r2) -> r2.getCreateTime().compareTo(r1.getCreateTime()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 3. 计算各时间段95值
 | 
					            // 3. 计算各时间段95值
 | 
				
			||||||
            calculateTimeSegments95(queryParam, records, dailyStartTime, dailyEndTime);
 | 
					            calculateTimeSegments95(queryParam, records, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        }else{
 | 
					        }else{
 | 
				
			||||||
            calculateNormalDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					            calculateNormalDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -347,19 +422,19 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateNormalDeviceBandwidth(EpsInitialTrafficData queryParam,
 | 
					    private void calculateNormalDeviceBandwidth(EpsInitialTrafficData queryParam,
 | 
				
			||||||
                                                String dailyStartTime,
 | 
					                                                String dailyStartTime,
 | 
				
			||||||
                                                String dailyEndTime) {
 | 
					                                                String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        queryParam.setStartTime(dailyStartTime);
 | 
					        queryParam.setStartTime(dailyStartTime);
 | 
				
			||||||
        queryParam.setEndTime(dailyEndTime);
 | 
					        queryParam.setEndTime(dailyEndTime);
 | 
				
			||||||
        List<EpsInitialTrafficData> dataList = query(queryParam);
 | 
					        List<EpsInitialTrafficData> dataList = query(queryParam);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!dataList.isEmpty()) {
 | 
					        if (!dataList.isEmpty()) {
 | 
				
			||||||
            calculateAndSave95Bandwidth(dataList, dailyStartTime, queryParam.getDayOrMonth());
 | 
					            calculateAndSave95Bandwidth(dataList, dailyStartTime, queryParam.getDayOrMonth(), calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算并保存95带宽值
 | 
					     * 计算并保存95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateAndSave95Bandwidth(List<EpsInitialTrafficData> dataList, String dateTime, String dayOrMonth) {
 | 
					    private void calculateAndSave95Bandwidth(List<EpsInitialTrafficData> dataList, String dateTime, String dayOrMonth, String calculationMode) {
 | 
				
			||||||
        boolean eff = false;
 | 
					        boolean eff = false;
 | 
				
			||||||
        if(!dataList.isEmpty()){
 | 
					        if(!dataList.isEmpty()){
 | 
				
			||||||
            if(dataList.size()<288){
 | 
					            if(dataList.size()<288){
 | 
				
			||||||
@@ -367,7 +442,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            // 1. 提取并转换带宽值
 | 
					            // 1. 提取并转换带宽值
 | 
				
			||||||
            List<BigDecimal> speedsInMbps = dataList.stream()
 | 
					            List<BigDecimal> speedsInMbps = dataList.stream()
 | 
				
			||||||
                    .map(data -> CalculateUtil.parseSpeedToMbps(data.getOutSpeed()))
 | 
					                    .map(data -> CalculateUtil.parseSpeedToMbps(data.getOutSpeed(), calculationMode))
 | 
				
			||||||
                    .sorted()
 | 
					                    .sorted()
 | 
				
			||||||
                    .collect(Collectors.toList());
 | 
					                    .collect(Collectors.toList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -396,7 +471,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            saveBandwidthResult(epsInitialTrafficData, percentile95, dateTime);
 | 
					            saveBandwidthResult(epsInitialTrafficData, percentile95, dateTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -406,32 +481,32 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
    private void calculateTimeSegments95(EpsInitialTrafficData queryParam,
 | 
					    private void calculateTimeSegments95(EpsInitialTrafficData queryParam,
 | 
				
			||||||
                                         List<EpsMethodChangeRecord> records,
 | 
					                                         List<EpsMethodChangeRecord> records,
 | 
				
			||||||
                                         String dailyStartTime,
 | 
					                                         String dailyStartTime,
 | 
				
			||||||
                                         String dailyEndTime) {
 | 
					                                         String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 1. 处理变更时间段(从最新到最早)
 | 
					        // 1. 处理变更时间段(从最新到最早)
 | 
				
			||||||
        String endTime = records.get(0).getCreateTime() + "";
 | 
					        String endTime = records.get(0).getCreateTime() + "";
 | 
				
			||||||
        for (int i = 1; i < records.size(); i++) {
 | 
					        for (int i = 1; i < records.size(); i++) {
 | 
				
			||||||
            String startTime = records.get(i).getCreateTime() + "";
 | 
					            String startTime = records.get(i).getCreateTime() + "";
 | 
				
			||||||
            calculateSegment95(queryParam, startTime, endTime);
 | 
					            calculateSegment95(queryParam, startTime, endTime, calculationMode);
 | 
				
			||||||
            endTime = startTime; // 移动时间窗口
 | 
					            endTime = startTime; // 移动时间窗口
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 2. 处理最早变更前的时间段(昨天00:00:00 ~ 最早变更时间)
 | 
					        // 2. 处理最早变更前的时间段(昨天00:00:00 ~ 最早变更时间)
 | 
				
			||||||
        String earliestChangeTime = records.get(records.size()-1).getCreateTime() + "";
 | 
					        String earliestChangeTime = records.get(records.size()-1).getCreateTime() + "";
 | 
				
			||||||
        calculateSegment95(queryParam, dailyStartTime, earliestChangeTime);
 | 
					        calculateSegment95(queryParam, dailyStartTime, earliestChangeTime, calculationMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 3. 处理最后变更后的时间段(最新变更时间 ~ 昨天23:59:59)
 | 
					        // 3. 处理最后变更后的时间段(最新变更时间 ~ 昨天23:59:59)
 | 
				
			||||||
        calculateSegment95(queryParam, endTime, dailyEndTime);
 | 
					        calculateSegment95(queryParam, endTime, dailyEndTime, calculationMode);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算单个时间段的95带宽值
 | 
					     * 计算单个时间段的95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateSegment95(EpsInitialTrafficData queryParam, String startTime, String endTime) {
 | 
					    private void calculateSegment95(EpsInitialTrafficData queryParam, String startTime, String endTime, String calculationMode) {
 | 
				
			||||||
        queryParam.setStartTime(startTime);
 | 
					        queryParam.setStartTime(startTime);
 | 
				
			||||||
        queryParam.setEndTime(endTime);
 | 
					        queryParam.setEndTime(endTime);
 | 
				
			||||||
        List<EpsInitialTrafficData> dataList = query(queryParam);
 | 
					        List<EpsInitialTrafficData> dataList = query(queryParam);
 | 
				
			||||||
        if (!dataList.isEmpty()) {
 | 
					        if (!dataList.isEmpty()) {
 | 
				
			||||||
            calculate95BandwidthDaily(dataList, startTime, queryParam.getDayOrMonth());
 | 
					            calculate95BandwidthDaily(dataList, startTime, queryParam.getDayOrMonth(), calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -439,10 +514,10 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
     * 计算日95带宽值
 | 
					     * 计算日95带宽值
 | 
				
			||||||
     * @param dataList
 | 
					     * @param dataList
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculate95BandwidthDaily(List<EpsInitialTrafficData> dataList, String startTime, String dayOrMonth){
 | 
					    private void calculate95BandwidthDaily(List<EpsInitialTrafficData> dataList, String startTime, String dayOrMonth, String calculationMode){
 | 
				
			||||||
        // 1. 提取 outSpeed 并转换为 Mbps
 | 
					        // 1. 提取 outSpeed 并转换为 Mbps
 | 
				
			||||||
        List<BigDecimal> speedsInMbps = dataList.stream()
 | 
					        List<BigDecimal> speedsInMbps = dataList.stream()
 | 
				
			||||||
                .map(data -> CalculateUtil.parseSpeedToMbps(data.getOutSpeed()))
 | 
					                .map(data -> CalculateUtil.parseSpeedToMbps(data.getOutSpeed(), calculationMode))
 | 
				
			||||||
                .sorted()
 | 
					                .sorted()
 | 
				
			||||||
                .collect(Collectors.toList());
 | 
					                .collect(Collectors.toList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -482,16 +557,17 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        saveBandwidthResult(epsInitialTrafficData, dailyResult, startTime);
 | 
					        saveBandwidthResult(epsInitialTrafficData, dailyResult, startTime, calculationMode);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 保存带宽结果
 | 
					     * 保存带宽结果
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void saveBandwidthResult(EpsInitialTrafficData data,
 | 
					    private void saveBandwidthResult(EpsInitialTrafficData data,
 | 
				
			||||||
                                     BigDecimal result,
 | 
					                                     BigDecimal result,
 | 
				
			||||||
                                     String dateTime) {
 | 
					                                     String dateTime, String calculationMode) {
 | 
				
			||||||
        EpsNodeBandwidth bandwidth = new EpsNodeBandwidth();
 | 
					        EpsNodeBandwidth bandwidth = new EpsNodeBandwidth();
 | 
				
			||||||
        bandwidth.setHardwareSn(data.getServiceSn());
 | 
					        bandwidth.setHardwareSn(data.getServiceSn());
 | 
				
			||||||
 | 
					        bandwidth.setCalculationMode(calculationMode);
 | 
				
			||||||
        bandwidth.setNodeName(data.getNodeName());
 | 
					        bandwidth.setNodeName(data.getNodeName());
 | 
				
			||||||
        bandwidth.setBusinessId(data.getBusinessId());
 | 
					        bandwidth.setBusinessId(data.getBusinessId());
 | 
				
			||||||
        bandwidth.setBusinessName(data.getBusinessName());
 | 
					        bandwidth.setBusinessName(data.getBusinessName());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -306,7 +306,8 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                !Objects.equals(oldRecord.getSwitchIp(), newRecord.getSwitchIp());
 | 
					                !Objects.equals(oldRecord.getSwitchIp(), newRecord.getSwitchIp());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void calculateSwitch95BandwidthDaily(InitialSwitchInfoDetails queryParam, String dailyStartTime, String dailyEndTime) {
 | 
					    public void calculateSwitch95BandwidthDaily(InitialSwitchInfoDetails queryParam, String dailyStartTime,
 | 
				
			||||||
 | 
					                                                String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 查询所有的交换机SN列表
 | 
					        // 查询所有的交换机SN列表
 | 
				
			||||||
        AllInterfaceName allInterfaceName = new AllInterfaceName();
 | 
					        AllInterfaceName allInterfaceName = new AllInterfaceName();
 | 
				
			||||||
        List<AllInterfaceName> switchSnList = allInterfaceNameMapper.getAllSwitchSn(allInterfaceName);
 | 
					        List<AllInterfaceName> switchSnList = allInterfaceNameMapper.getAllSwitchSn(allInterfaceName);
 | 
				
			||||||
@@ -315,7 +316,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
        switchSnList.forEach(interfaceName -> {
 | 
					        switchSnList.forEach(interfaceName -> {
 | 
				
			||||||
            queryParam.setSwitchSn(interfaceName.getSwitchSn());
 | 
					            queryParam.setSwitchSn(interfaceName.getSwitchSn());
 | 
				
			||||||
            queryParam.setSwitchIp(interfaceName.getSwitchIp());
 | 
					            queryParam.setSwitchIp(interfaceName.getSwitchIp());
 | 
				
			||||||
            processSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					            processSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -326,7 +327,8 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
     * @param dailyEndTime 结束时间
 | 
					     * @param dailyEndTime 结束时间
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void recalculateSwitch95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime) {
 | 
					    public void recalculateSwitch95Bandwidth(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime,
 | 
				
			||||||
 | 
					                                             String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        InitialSwitchInfoDetails switchInfoDetails = new InitialSwitchInfoDetails();
 | 
					        InitialSwitchInfoDetails switchInfoDetails = new InitialSwitchInfoDetails();
 | 
				
			||||||
        switchInfoDetails.setStartTime(dailyStartTime);
 | 
					        switchInfoDetails.setStartTime(dailyStartTime);
 | 
				
			||||||
        switchInfoDetails.setEndTime(dailyEndTime);
 | 
					        switchInfoDetails.setEndTime(dailyEndTime);
 | 
				
			||||||
@@ -351,7 +353,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                        if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
					                        if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
				
			||||||
                            speed += " B/S";
 | 
					                            speed += " B/S";
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        return CalculateUtil.parseSpeedToMbps(speed);
 | 
					                        return CalculateUtil.parseSpeedToMbps(speed, calculationMode);
 | 
				
			||||||
                    })
 | 
					                    })
 | 
				
			||||||
                    .sorted()
 | 
					                    .sorted()
 | 
				
			||||||
                    .collect(Collectors.toList());
 | 
					                    .collect(Collectors.toList());
 | 
				
			||||||
@@ -363,7 +365,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
            InitialSwitchInfoDetails switchInfo = dataList.get(0);
 | 
					            InitialSwitchInfoDetails switchInfo = dataList.get(0);
 | 
				
			||||||
            switchInfo.setResourceType("2");
 | 
					            switchInfo.setResourceType("2");
 | 
				
			||||||
            switchInfo.setBandwidthType(epsNodeBandwidth.getBandwidthType());
 | 
					            switchInfo.setBandwidthType(epsNodeBandwidth.getBandwidthType());
 | 
				
			||||||
            saveSwitchBandwidthResult(switchInfo, percentile95, dailyStartTime);
 | 
					            saveSwitchBandwidthResult(switchInfo, percentile95, dailyStartTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -418,7 +420,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
					                if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
				
			||||||
                    speed += " B/S";
 | 
					                    speed += " B/S";
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                BigDecimal inSpeed = CalculateUtil.parseSpeedToMbps(speed);
 | 
					                BigDecimal inSpeed = CalculateUtil.parseSpeedToMbps(speed, "1000");
 | 
				
			||||||
                total = total.add(inSpeed);
 | 
					                total = total.add(inSpeed);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -431,7 +433,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void processSwitchBandwidth(InitialSwitchInfoDetails queryParam,
 | 
					    private void processSwitchBandwidth(InitialSwitchInfoDetails queryParam,
 | 
				
			||||||
                                        String dailyStartTime,
 | 
					                                        String dailyStartTime,
 | 
				
			||||||
                                        String dailyEndTime) {
 | 
					                                        String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 根据交换机sn查询连接的服务器sn
 | 
					        // 根据交换机sn查询连接的服务器sn
 | 
				
			||||||
        RmEpsTopologyManagement management = new RmEpsTopologyManagement();
 | 
					        RmEpsTopologyManagement management = new RmEpsTopologyManagement();
 | 
				
			||||||
        management.setSwitchSn(queryParam.getSwitchSn());
 | 
					        management.setSwitchSn(queryParam.getSwitchSn());
 | 
				
			||||||
@@ -449,13 +451,13 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                            .selectEpsServerRevenueConfigList(revenueConfig);
 | 
					                            .selectEpsServerRevenueConfigList(revenueConfig);
 | 
				
			||||||
                    // 根据业务变更情况选择计算方式
 | 
					                    // 根据业务变更情况选择计算方式
 | 
				
			||||||
                    if (hasTrafficMethodChanged(changedList)) {
 | 
					                    if (hasTrafficMethodChanged(changedList)) {
 | 
				
			||||||
                        calculateChangedSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					                        calculateChangedSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					                        calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if("2".equals(rmEpsTopologyManagement.getConnectedDeviceType())){
 | 
					                if("2".equals(rmEpsTopologyManagement.getConnectedDeviceType())){
 | 
				
			||||||
                    calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					                    calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -474,7 +476,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateChangedSwitchBandwidth(InitialSwitchInfoDetails queryParam,
 | 
					    private void calculateChangedSwitchBandwidth(InitialSwitchInfoDetails queryParam,
 | 
				
			||||||
                                                 String dailyStartTime,
 | 
					                                                 String dailyStartTime,
 | 
				
			||||||
                                                 String dailyEndTime) {
 | 
					                                                 String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 获取业务变更记录(按时间降序)
 | 
					        // 获取业务变更记录(按时间降序)
 | 
				
			||||||
        EpsMethodChangeRecord changeQuery = new EpsMethodChangeRecord();
 | 
					        EpsMethodChangeRecord changeQuery = new EpsMethodChangeRecord();
 | 
				
			||||||
        changeQuery.setHardwareSn(queryParam.getServerSn());
 | 
					        changeQuery.setHardwareSn(queryParam.getServerSn());
 | 
				
			||||||
@@ -488,9 +490,9 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
            records.sort((r1, r2) -> r2.getCreateTime().compareTo(r1.getCreateTime()));
 | 
					            records.sort((r1, r2) -> r2.getCreateTime().compareTo(r1.getCreateTime()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 计算各时间段95值
 | 
					            // 计算各时间段95值
 | 
				
			||||||
            calculateSwitchTimeSegments95(queryParam, records, dailyStartTime, dailyEndTime);
 | 
					            calculateSwitchTimeSegments95(queryParam, records, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        }else {
 | 
					        }else {
 | 
				
			||||||
            calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
 | 
					            calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -499,21 +501,22 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateNormalSwitchBandwidth(InitialSwitchInfoDetails queryParam,
 | 
					    private void calculateNormalSwitchBandwidth(InitialSwitchInfoDetails queryParam,
 | 
				
			||||||
                                                String dailyStartTime,
 | 
					                                                String dailyStartTime,
 | 
				
			||||||
                                                String dailyEndTime) {
 | 
					                                                String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        queryParam.setStartTime(dailyStartTime);
 | 
					        queryParam.setStartTime(dailyStartTime);
 | 
				
			||||||
        queryParam.setEndTime(dailyEndTime);
 | 
					        queryParam.setEndTime(dailyEndTime);
 | 
				
			||||||
        List<InitialSwitchInfoDetails> dataList = initialSwitchInfoDetailsMapper
 | 
					        List<InitialSwitchInfoDetails> dataList = initialSwitchInfoDetailsMapper
 | 
				
			||||||
                .selectInitialSwitchInfoDetailsList(queryParam);
 | 
					                .selectInitialSwitchInfoDetailsList(queryParam);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!dataList.isEmpty()) {
 | 
					        if (!dataList.isEmpty()) {
 | 
				
			||||||
            calculateAndSaveSwitch95Bandwidth(dataList, dailyStartTime, queryParam.getDayOrMonth());
 | 
					            calculateAndSaveSwitch95Bandwidth(dataList, dailyStartTime, queryParam.getDayOrMonth(), calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算并保存交换机95带宽值
 | 
					     * 计算并保存交换机95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateAndSaveSwitch95Bandwidth(List<InitialSwitchInfoDetails> dataList, String dateTime, String dayOrMonth) {
 | 
					    private void calculateAndSaveSwitch95Bandwidth(List<InitialSwitchInfoDetails> dataList, String dateTime,
 | 
				
			||||||
 | 
					                                                   String dayOrMonth, String calculationMode) {
 | 
				
			||||||
        boolean eff = false;
 | 
					        boolean eff = false;
 | 
				
			||||||
        if(!dataList.isEmpty()){
 | 
					        if(!dataList.isEmpty()){
 | 
				
			||||||
            if(dataList.size()<288){
 | 
					            if(dataList.size()<288){
 | 
				
			||||||
@@ -530,7 +533,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                        if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
					                        if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
				
			||||||
                            speed += " B/S";
 | 
					                            speed += " B/S";
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        return CalculateUtil.parseSpeedToMbps(speed);
 | 
					                        return CalculateUtil.parseSpeedToMbps(speed, calculationMode);
 | 
				
			||||||
                    })
 | 
					                    })
 | 
				
			||||||
                    .sorted()
 | 
					                    .sorted()
 | 
				
			||||||
                    .collect(Collectors.toList());
 | 
					                    .collect(Collectors.toList());
 | 
				
			||||||
@@ -555,7 +558,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                    switchInfo.setBandwidthType("2");
 | 
					                    switchInfo.setBandwidthType("2");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            saveSwitchBandwidthResult(switchInfo, percentile95, dateTime);
 | 
					            saveSwitchBandwidthResult(switchInfo, percentile95, dateTime, calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -565,40 +568,41 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
    private void calculateSwitchTimeSegments95(InitialSwitchInfoDetails queryParam,
 | 
					    private void calculateSwitchTimeSegments95(InitialSwitchInfoDetails queryParam,
 | 
				
			||||||
                                               List<EpsMethodChangeRecord> records,
 | 
					                                               List<EpsMethodChangeRecord> records,
 | 
				
			||||||
                                               String dailyStartTime,
 | 
					                                               String dailyStartTime,
 | 
				
			||||||
                                               String dailyEndTime) {
 | 
					                                               String dailyEndTime, String calculationMode) {
 | 
				
			||||||
        // 1. 处理变更时间段(从最新到最早)
 | 
					        // 1. 处理变更时间段(从最新到最早)
 | 
				
			||||||
        String endTime = records.get(0).getCreateTime() + "";
 | 
					        String endTime = records.get(0).getCreateTime() + "";
 | 
				
			||||||
        for (int i = 1; i < records.size(); i++) {
 | 
					        for (int i = 1; i < records.size(); i++) {
 | 
				
			||||||
            String startTime = records.get(i).getCreateTime() + "";
 | 
					            String startTime = records.get(i).getCreateTime() + "";
 | 
				
			||||||
            calculateSwitchSegment95(queryParam, startTime, endTime);
 | 
					            calculateSwitchSegment95(queryParam, startTime, endTime, calculationMode);
 | 
				
			||||||
            endTime = startTime; // 移动时间窗口
 | 
					            endTime = startTime; // 移动时间窗口
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 2. 处理最早变更前的时间段(昨天00:00:00 ~ 最早变更时间)
 | 
					        // 2. 处理最早变更前的时间段(昨天00:00:00 ~ 最早变更时间)
 | 
				
			||||||
        String earliestChangeTime = records.get(records.size()-1).getCreateTime() + "";
 | 
					        String earliestChangeTime = records.get(records.size()-1).getCreateTime() + "";
 | 
				
			||||||
        calculateSwitchSegment95(queryParam, dailyStartTime, earliestChangeTime);
 | 
					        calculateSwitchSegment95(queryParam, dailyStartTime, earliestChangeTime, calculationMode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 3. 处理最后变更后的时间段(最新变更时间 ~ 昨天23:59:59)
 | 
					        // 3. 处理最后变更后的时间段(最新变更时间 ~ 昨天23:59:59)
 | 
				
			||||||
        calculateSwitchSegment95(queryParam, endTime, dailyEndTime);
 | 
					        calculateSwitchSegment95(queryParam, endTime, dailyEndTime, calculationMode);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算交换机单个时间段的95带宽值
 | 
					     * 计算交换机单个时间段的95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateSwitchSegment95(InitialSwitchInfoDetails queryParam, String startTime, String endTime) {
 | 
					    private void calculateSwitchSegment95(InitialSwitchInfoDetails queryParam, String startTime, String endTime, String calculationMode) {
 | 
				
			||||||
        queryParam.setStartTime(startTime);
 | 
					        queryParam.setStartTime(startTime);
 | 
				
			||||||
        queryParam.setEndTime(endTime);
 | 
					        queryParam.setEndTime(endTime);
 | 
				
			||||||
        List<InitialSwitchInfoDetails> dataList = initialSwitchInfoDetailsMapper
 | 
					        List<InitialSwitchInfoDetails> dataList = initialSwitchInfoDetailsMapper
 | 
				
			||||||
                .selectInitialSwitchInfoDetailsList(queryParam);
 | 
					                .selectInitialSwitchInfoDetailsList(queryParam);
 | 
				
			||||||
        if (!dataList.isEmpty()) {
 | 
					        if (!dataList.isEmpty()) {
 | 
				
			||||||
            calculateSwitch95BandwidthDaily(dataList, startTime, queryParam.getDayOrMonth());
 | 
					            calculateSwitch95BandwidthDaily(dataList, startTime, queryParam.getDayOrMonth(), calculationMode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算交换机日95带宽值
 | 
					     * 计算交换机日95带宽值
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateSwitch95BandwidthDaily(List<InitialSwitchInfoDetails> dataList, String startTime, String dayOrMonth) {
 | 
					    private void calculateSwitch95BandwidthDaily(List<InitialSwitchInfoDetails> dataList,
 | 
				
			||||||
 | 
					                                                 String startTime, String dayOrMonth, String calculationMode) {
 | 
				
			||||||
        // 1. 提取并转换带宽值
 | 
					        // 1. 提取并转换带宽值
 | 
				
			||||||
        List<BigDecimal> speedsInMbps = dataList.stream()
 | 
					        List<BigDecimal> speedsInMbps = dataList.stream()
 | 
				
			||||||
                .map(data -> {
 | 
					                .map(data -> {
 | 
				
			||||||
@@ -609,7 +613,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                    if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
					                    if (speed.matches("^\\d+(\\.\\d+)?$")) {
 | 
				
			||||||
                        speed += " B/S";
 | 
					                        speed += " B/S";
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    return CalculateUtil.parseSpeedToMbps(speed);
 | 
					                    return CalculateUtil.parseSpeedToMbps(speed, calculationMode);
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
                .sorted()
 | 
					                .sorted()
 | 
				
			||||||
                .collect(Collectors.toList());
 | 
					                .collect(Collectors.toList());
 | 
				
			||||||
@@ -636,7 +640,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
                switchInfo.setBandwidthType("2");
 | 
					                switchInfo.setBandwidthType("2");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        saveSwitchBandwidthResult(switchInfo, dailyResult, startTime);
 | 
					        saveSwitchBandwidthResult(switchInfo, dailyResult, startTime, calculationMode);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -644,11 +648,12 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private void saveSwitchBandwidthResult(InitialSwitchInfoDetails data,
 | 
					    private void saveSwitchBandwidthResult(InitialSwitchInfoDetails data,
 | 
				
			||||||
                                           BigDecimal result,
 | 
					                                           BigDecimal result,
 | 
				
			||||||
                                           String dateTime) {
 | 
					                                           String dateTime, String calculationMode) {
 | 
				
			||||||
        EpsNodeBandwidth bandwidth = new EpsNodeBandwidth();
 | 
					        EpsNodeBandwidth bandwidth = new EpsNodeBandwidth();
 | 
				
			||||||
        bandwidth.setBusinessName(data.getBusinessName());
 | 
					        bandwidth.setBusinessName(data.getBusinessName());
 | 
				
			||||||
        bandwidth.setBusinessId(data.getBusinessCode());
 | 
					        bandwidth.setBusinessId(data.getBusinessCode());
 | 
				
			||||||
        bandwidth.setHardwareSn(data.getServerSn());
 | 
					        bandwidth.setHardwareSn(data.getServerSn());
 | 
				
			||||||
 | 
					        bandwidth.setCalculationMode(calculationMode);
 | 
				
			||||||
        bandwidth.setSwitchSn(data.getSwitchSn());
 | 
					        bandwidth.setSwitchSn(data.getSwitchSn());
 | 
				
			||||||
        bandwidth.setNodeName(data.getServerName());
 | 
					        bandwidth.setNodeName(data.getServerName());
 | 
				
			||||||
        bandwidth.setUplinkSwitch(data.getSwitchName());
 | 
					        bandwidth.setUplinkSwitch(data.getSwitchName());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,15 @@
 | 
				
			|||||||
package com.ruoyi.system.service.impl;
 | 
					package com.ruoyi.system.service.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import com.ruoyi.common.core.utils.DateUtils;
 | 
					import com.ruoyi.common.core.utils.DateUtils;
 | 
				
			||||||
 | 
					import com.ruoyi.system.domain.RmResourceGroup;
 | 
				
			||||||
 | 
					import com.ruoyi.system.domain.RmResourceRegistration;
 | 
				
			||||||
 | 
					import com.ruoyi.system.mapper.RmResourceGroupMapper;
 | 
				
			||||||
 | 
					import com.ruoyi.system.mapper.RmResourceRegistrationMapper;
 | 
				
			||||||
 | 
					import com.ruoyi.system.service.IRmResourceGroupService;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
import com.ruoyi.system.mapper.RmResourceGroupMapper;
 | 
					
 | 
				
			||||||
import com.ruoyi.system.domain.RmResourceGroup;
 | 
					import java.util.List;
 | 
				
			||||||
import com.ruoyi.system.service.IRmResourceGroupService;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 资源分组Service业务层处理
 | 
					 * 资源分组Service业务层处理
 | 
				
			||||||
@@ -19,6 +22,8 @@ public class RmResourceGroupServiceImpl implements IRmResourceGroupService
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private RmResourceGroupMapper rmResourceGroupMapper;
 | 
					    private RmResourceGroupMapper rmResourceGroupMapper;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private RmResourceRegistrationMapper rmResourceRegistrationMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 查询资源分组
 | 
					     * 查询资源分组
 | 
				
			||||||
@@ -93,4 +98,30 @@ public class RmResourceGroupServiceImpl implements IRmResourceGroupService
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return rmResourceGroupMapper.deleteRmResourceGroupById(id);
 | 
					        return rmResourceGroupMapper.deleteRmResourceGroupById(id);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup) {
 | 
				
			||||||
 | 
					        if(rmResourceGroup.getId() == null){
 | 
				
			||||||
 | 
					            RmResourceRegistration queryParam = new RmResourceRegistration();
 | 
				
			||||||
 | 
					            List<RmResourceRegistration> rmResourceRegistrationList = rmResourceRegistrationMapper.selectRmResourceRegistrationList(queryParam);
 | 
				
			||||||
 | 
					            for (RmResourceRegistration rmResourceRegistration : rmResourceRegistrationList) {
 | 
				
			||||||
 | 
					                RmResourceGroup item = rmResourceGroupMapper.selectMonitorMsgAndGroupMsg(rmResourceRegistration.getId());
 | 
				
			||||||
 | 
					                rmResourceRegistration.setMonitorItems(item.getMonitorItems());
 | 
				
			||||||
 | 
					                rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return rmResourceRegistrationList;
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            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());
 | 
				
			||||||
 | 
					                rmResourceRegistration.setMonitorItems(item.getMonitorItems());
 | 
				
			||||||
 | 
					                rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return rmResourceRegistrationList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ public class CalculateUtil {
 | 
				
			|||||||
     * @param speedWithUnit
 | 
					     * @param speedWithUnit
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static BigDecimal parseSpeedToMbps(String speedWithUnit) {
 | 
					    public static BigDecimal parseSpeedToMbps(String speedWithUnit, String mode) {
 | 
				
			||||||
        if (speedWithUnit == null || speedWithUnit.trim().isEmpty()) {
 | 
					        if (speedWithUnit == null || speedWithUnit.trim().isEmpty()) {
 | 
				
			||||||
            return BigDecimal.ZERO;
 | 
					            return BigDecimal.ZERO;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -31,31 +31,56 @@ public class CalculateUtil {
 | 
				
			|||||||
        if (unit.isEmpty()) {
 | 
					        if (unit.isEmpty()) {
 | 
				
			||||||
            unit = "B/S"; // 默认单位: Bytes/s
 | 
					            unit = "B/S"; // 默认单位: Bytes/s
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        switch (mode) {
 | 
				
			||||||
        // 单位换算逻辑(保持不变)
 | 
					            case "1000":
 | 
				
			||||||
 | 
					                return convertWithDecimalCoefficients(value, unit);
 | 
				
			||||||
 | 
					            case "1024":
 | 
				
			||||||
 | 
					                return convertWithBinaryCoefficients(value, unit);
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                throw new UnsupportedOperationException("Unknown mode: " + mode);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // 1000进制换算
 | 
				
			||||||
 | 
					    private static BigDecimal convertWithDecimalCoefficients(BigDecimal value, String unit) {
 | 
				
			||||||
        switch (unit) {
 | 
					        switch (unit) {
 | 
				
			||||||
            case "B/S":
 | 
					            case "B/S":
 | 
				
			||||||
                return value.multiply(new BigDecimal("0.000008"));
 | 
					                return value.multiply(new BigDecimal("0.000008"))  // 8/1000000
 | 
				
			||||||
            case "KBPS":
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
            case "KB/S":
 | 
					            case "KB/S":
 | 
				
			||||||
                return value.divide(new BigDecimal("1000"), 10, RoundingMode.HALF_UP);
 | 
					                return value.multiply(new BigDecimal("0.008"))     // 8/1000
 | 
				
			||||||
            case "MBPS":
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
            case "MB/S":
 | 
					            case "MB/S":
 | 
				
			||||||
                return value;
 | 
					                return value.setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
            case "GBPS":
 | 
					 | 
				
			||||||
            case "GB/S":
 | 
					            case "GB/S":
 | 
				
			||||||
                return value.multiply(new BigDecimal("1000"));
 | 
					                return value.multiply(new BigDecimal("8000"))      // 1000 * 8
 | 
				
			||||||
            case "TBPS":
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
            case "TB/S":
 | 
					            case "TB/S":
 | 
				
			||||||
                return value.multiply(new BigDecimal("1000000"));
 | 
					                return value.multiply(new BigDecimal("8000000"))  // 1000 * 1000 * 8
 | 
				
			||||||
            case "KIB/S":
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
                return value.multiply(new BigDecimal("0.008192"));
 | 
					 | 
				
			||||||
            case "MIB/S":
 | 
					 | 
				
			||||||
                return value.multiply(new BigDecimal("8.388608"));
 | 
					 | 
				
			||||||
            case "GIB/S":
 | 
					 | 
				
			||||||
                return value.multiply(new BigDecimal("8589.934592"));
 | 
					 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                throw new IllegalArgumentException("Unknown speed unit: " + unit);
 | 
					                throw new IllegalArgumentException("Unsupported DECIMAL unit: " + unit);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 1024进制换算
 | 
				
			||||||
 | 
					    private static BigDecimal convertWithBinaryCoefficients(BigDecimal value, String unit) {
 | 
				
			||||||
 | 
					        switch (unit) {
 | 
				
			||||||
 | 
					            case "B/S":
 | 
				
			||||||
 | 
					                return value.multiply(new BigDecimal("0.00000762939"))  // 8/1048576
 | 
				
			||||||
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
 | 
					            case "KB/S":
 | 
				
			||||||
 | 
					                return value.multiply(new BigDecimal("0.0078125"))     // 8/1024
 | 
				
			||||||
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
 | 
					            case "MB/S":
 | 
				
			||||||
 | 
					                return value.setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
 | 
					            case "GB/S":
 | 
				
			||||||
 | 
					                return value.multiply(new BigDecimal("8192"))          // 1024 * 8
 | 
				
			||||||
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
 | 
					            case "TB/S":
 | 
				
			||||||
 | 
					                return value.multiply(new BigDecimal("8388608"))       // 1024 * 1024 * 8
 | 
				
			||||||
 | 
					                        .setScale(2, RoundingMode.HALF_UP);
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                throw new IllegalArgumentException("Unsupported BINARY unit: " + unit);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
        <result property="id"    column="id"    />
 | 
					        <result property="id"    column="id"    />
 | 
				
			||||||
        <result property="nodeName"    column="node_name"    />
 | 
					        <result property="nodeName"    column="node_name"    />
 | 
				
			||||||
        <result property="hardwareSn"    column="hardware_sn"    />
 | 
					        <result property="hardwareSn"    column="hardware_sn"    />
 | 
				
			||||||
 | 
					        <result property="calculationMode"    column="calculation_mode"    />
 | 
				
			||||||
        <result property="bandwidthType"    column="bandwidth_type"    />
 | 
					        <result property="bandwidthType"    column="bandwidth_type"    />
 | 
				
			||||||
        <result property="bandwidthResult"    column="bandwidth_result"    />
 | 
					        <result property="bandwidthResult"    column="bandwidth_result"    />
 | 
				
			||||||
        <result property="bandwidth95Daily"    column="bandwidth_95_daily"    />
 | 
					        <result property="bandwidth95Daily"    column="bandwidth_95_daily"    />
 | 
				
			||||||
@@ -36,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
    </resultMap>
 | 
					    </resultMap>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <sql id="selectEpsNodeBandwidthVo">
 | 
					    <sql id="selectEpsNodeBandwidthVo">
 | 
				
			||||||
        select id, node_name, hardware_sn, bandwidth_type, bandwidth_result, bandwidth_95_daily, bandwidth_95_monthly, avg_monthly_bandwidth_95, package_bandwidth_daily, customer_id, customer_name, service_number, uplink_switch, create_time, update_time, creator_id, creator_name, switch_sn, interface_name, resource_type, interface_link_device_type, effective_bandwidth_95_daily, effective_bandwidth_95_monthly, effective_avg_monthly_bandwidth_95, business_name, business_id, remark1, create_datetime from eps_node_bandwidth
 | 
					        select id, node_name, hardware_sn, calculation_mode, bandwidth_type, bandwidth_result, bandwidth_95_daily, bandwidth_95_monthly, avg_monthly_bandwidth_95, package_bandwidth_daily, customer_id, customer_name, service_number, uplink_switch, create_time, update_time, creator_id, creator_name, switch_sn, interface_name, resource_type, interface_link_device_type, effective_bandwidth_95_daily, effective_bandwidth_95_monthly, effective_avg_monthly_bandwidth_95, business_name, business_id, remark1, create_datetime from eps_node_bandwidth
 | 
				
			||||||
    </sql>
 | 
					    </sql>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <select id="selectEpsNodeBandwidthList" parameterType="EpsNodeBandwidth" resultMap="EpsNodeBandwidthResult">
 | 
					    <select id="selectEpsNodeBandwidthList" parameterType="EpsNodeBandwidth" resultMap="EpsNodeBandwidthResult">
 | 
				
			||||||
@@ -44,6 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
        <where>
 | 
					        <where>
 | 
				
			||||||
            <if test="nodeName != null  and nodeName != ''"> and node_name like concat('%', #{nodeName}, '%')</if>
 | 
					            <if test="nodeName != null  and nodeName != ''"> and node_name like concat('%', #{nodeName}, '%')</if>
 | 
				
			||||||
            <if test="hardwareSn != null  and hardwareSn != ''"> and hardware_sn = #{hardwareSn}</if>
 | 
					            <if test="hardwareSn != null  and hardwareSn != ''"> and hardware_sn = #{hardwareSn}</if>
 | 
				
			||||||
 | 
					            <if test="calculationMode != null  and calculationMode != ''"> and calculation_mode = #{calculationMode}</if>
 | 
				
			||||||
            <if test="bandwidthType != null  and bandwidthType != ''"> and bandwidth_type = #{bandwidthType}</if>
 | 
					            <if test="bandwidthType != null  and bandwidthType != ''"> and bandwidth_type = #{bandwidthType}</if>
 | 
				
			||||||
            <if test="bandwidthResult != null "> and bandwidth_result = #{bandwidthResult}</if>
 | 
					            <if test="bandwidthResult != null "> and bandwidth_result = #{bandwidthResult}</if>
 | 
				
			||||||
            <if test="bandwidth95Daily != null "> and bandwidth_95_daily = #{bandwidth95Daily}</if>
 | 
					            <if test="bandwidth95Daily != null "> and bandwidth_95_daily = #{bandwidth95Daily}</if>
 | 
				
			||||||
@@ -95,6 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
        <trim prefix="(" suffix=")" suffixOverrides=",">
 | 
					        <trim prefix="(" suffix=")" suffixOverrides=",">
 | 
				
			||||||
            <if test="nodeName != null">node_name,</if>
 | 
					            <if test="nodeName != null">node_name,</if>
 | 
				
			||||||
            <if test="hardwareSn != null">hardware_sn,</if>
 | 
					            <if test="hardwareSn != null">hardware_sn,</if>
 | 
				
			||||||
 | 
					            <if test="calculationMode != null">calculation_mode,</if>
 | 
				
			||||||
            <if test="bandwidthType != null">bandwidth_type,</if>
 | 
					            <if test="bandwidthType != null">bandwidth_type,</if>
 | 
				
			||||||
            <if test="bandwidthResult != null">bandwidth_result,</if>
 | 
					            <if test="bandwidthResult != null">bandwidth_result,</if>
 | 
				
			||||||
            <if test="bandwidth95Daily != null">bandwidth_95_daily,</if>
 | 
					            <if test="bandwidth95Daily != null">bandwidth_95_daily,</if>
 | 
				
			||||||
@@ -124,6 +127,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
        <trim prefix="values (" suffix=")" suffixOverrides=",">
 | 
					        <trim prefix="values (" suffix=")" suffixOverrides=",">
 | 
				
			||||||
            <if test="nodeName != null">#{nodeName},</if>
 | 
					            <if test="nodeName != null">#{nodeName},</if>
 | 
				
			||||||
            <if test="hardwareSn != null">#{hardwareSn},</if>
 | 
					            <if test="hardwareSn != null">#{hardwareSn},</if>
 | 
				
			||||||
 | 
					            <if test="calculationMode != null">#{calculationMode},</if>
 | 
				
			||||||
            <if test="bandwidthType != null">#{bandwidthType},</if>
 | 
					            <if test="bandwidthType != null">#{bandwidthType},</if>
 | 
				
			||||||
            <if test="bandwidthResult != null">#{bandwidthResult},</if>
 | 
					            <if test="bandwidthResult != null">#{bandwidthResult},</if>
 | 
				
			||||||
            <if test="bandwidth95Daily != null">#{bandwidth95Daily},</if>
 | 
					            <if test="bandwidth95Daily != null">#{bandwidth95Daily},</if>
 | 
				
			||||||
@@ -157,6 +161,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
        <trim prefix="SET" suffixOverrides=",">
 | 
					        <trim prefix="SET" suffixOverrides=",">
 | 
				
			||||||
            <if test="nodeName != null">node_name = #{nodeName},</if>
 | 
					            <if test="nodeName != null">node_name = #{nodeName},</if>
 | 
				
			||||||
            <if test="hardwareSn != null">hardware_sn = #{hardwareSn},</if>
 | 
					            <if test="hardwareSn != null">hardware_sn = #{hardwareSn},</if>
 | 
				
			||||||
 | 
					            <if test="calculationMode != null">calculation_mode = #{calculationMode},</if>
 | 
				
			||||||
            <if test="bandwidthType != null">bandwidth_type = #{bandwidthType},</if>
 | 
					            <if test="bandwidthType != null">bandwidth_type = #{bandwidthType},</if>
 | 
				
			||||||
            <if test="bandwidthResult != null">bandwidth_result = #{bandwidthResult},</if>
 | 
					            <if test="bandwidthResult != null">bandwidth_result = #{bandwidthResult},</if>
 | 
				
			||||||
            <if test="bandwidth95Daily != null">bandwidth_95_daily = #{bandwidth95Daily},</if>
 | 
					            <if test="bandwidth95Daily != null">bandwidth_95_daily = #{bandwidth95Daily},</if>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -96,4 +96,9 @@
 | 
				
			|||||||
            #{id}
 | 
					            #{id}
 | 
				
			||||||
        </foreach>
 | 
					        </foreach>
 | 
				
			||||||
    </delete>
 | 
					    </delete>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="selectMonitorMsgAndGroupMsg" parameterType="Long" resultType="RmResourceGroup">
 | 
				
			||||||
 | 
					        select b.monitor_items monitorItems,b.discovery_rules discoveryRules from rm_resource_group a left join rm_monitor_template b on a.id=b.resource_group_id
 | 
				
			||||||
 | 
					        where FIND_IN_SET(#{id}, a.included_devices_id) > 0
 | 
				
			||||||
 | 
					    </select>
 | 
				
			||||||
</mapper>
 | 
					</mapper>
 | 
				
			||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.ruoyi.rocketmq.controller;
 | 
					package com.ruoyi.rocketmq.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.utils.DateUtils;
 | 
				
			||||||
import com.ruoyi.common.core.utils.poi.ExcelUtil;
 | 
					import com.ruoyi.common.core.utils.poi.ExcelUtil;
 | 
				
			||||||
import com.ruoyi.common.core.web.controller.BaseController;
 | 
					import com.ruoyi.common.core.web.controller.BaseController;
 | 
				
			||||||
import com.ruoyi.common.core.web.domain.AjaxResult;
 | 
					import com.ruoyi.common.core.web.domain.AjaxResult;
 | 
				
			||||||
@@ -14,7 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			|||||||
import org.springframework.web.bind.annotation.*;
 | 
					import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.servlet.http.HttpServletResponse;
 | 
					import javax.servlet.http.HttpServletResponse;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * CPU监控信息Controller
 | 
					 * CPU监控信息Controller
 | 
				
			||||||
@@ -99,4 +101,47 @@ public class InitialCpuInfoController extends BaseController
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return toAjax(initialCpuInfoService.deleteInitialCpuInfoByIds(ids));
 | 
					        return toAjax(initialCpuInfoService.deleteInitialCpuInfoByIds(ids));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 查询CPU监控信息列表并封装为多折线ECharts图表数据
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @RequiresPermissions("rocketmq:cpuInfo:list")
 | 
				
			||||||
 | 
					    @PostMapping("/cpuLoadEcharts")
 | 
				
			||||||
 | 
					    public AjaxResult cpuLoadEcharts(@RequestBody InitialCpuInfo initialCpuInfo) {
 | 
				
			||||||
 | 
					        // 1. 查询原始CPU监控数据并按时间排序
 | 
				
			||||||
 | 
					        List<InitialCpuInfo> list = initialCpuInfoService.selectInitialCpuInfoList(initialCpuInfo)
 | 
				
			||||||
 | 
					                .stream()
 | 
				
			||||||
 | 
					                .sorted(Comparator.comparing(InitialCpuInfo::getCreateTime))
 | 
				
			||||||
 | 
					                .collect(Collectors.toList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 2. 封装为ECharts图表数据格式
 | 
				
			||||||
 | 
					        Map<String, Object> echartsData = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 确保X轴和Y轴数据顺序一致的处理
 | 
				
			||||||
 | 
					        List<String> xAxisData = new ArrayList<>();
 | 
				
			||||||
 | 
					        List<Long> load1Data = new ArrayList<>();
 | 
				
			||||||
 | 
					        List<Long> load5Data = new ArrayList<>();
 | 
				
			||||||
 | 
					        List<Long> load15Data = new ArrayList<>();
 | 
				
			||||||
 | 
					        List<Long> utiData = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (InitialCpuInfo info : list) {
 | 
				
			||||||
 | 
					            xAxisData.add(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", info.getCreateTime()));
 | 
				
			||||||
 | 
					            load1Data.add(info.getAvg1());
 | 
				
			||||||
 | 
					            load5Data.add(info.getAvg5());
 | 
				
			||||||
 | 
					            load15Data.add(info.getAvg15());
 | 
				
			||||||
 | 
					            utiData.add(info.getUti());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 构建Y轴数据
 | 
				
			||||||
 | 
					        Map<String, Object> yData = new HashMap<>();
 | 
				
			||||||
 | 
					        yData.put("load1Data", load1Data);
 | 
				
			||||||
 | 
					        yData.put("load5Data", load5Data);
 | 
				
			||||||
 | 
					        yData.put("load15Data", load15Data);
 | 
				
			||||||
 | 
					        yData.put("utiData", utiData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        echartsData.put("xData", xAxisData);
 | 
				
			||||||
 | 
					        echartsData.put("yData", yData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return success(echartsData);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,4 +69,8 @@ public class InitialCpuInfo extends BaseEntity
 | 
				
			|||||||
    /** CPU用户进程所花费的时间(秒) */
 | 
					    /** CPU用户进程所花费的时间(秒) */
 | 
				
			||||||
    @Excel(name = "CPU用户进程所花费的时间")
 | 
					    @Excel(name = "CPU用户进程所花费的时间")
 | 
				
			||||||
    private Long user;
 | 
					    private Long user;
 | 
				
			||||||
 | 
					    /** 开始时间 */
 | 
				
			||||||
 | 
					    private String startTime;
 | 
				
			||||||
 | 
					    /** 结束时间 */
 | 
				
			||||||
 | 
					    private String endTime;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,11 @@
 | 
				
			|||||||
package com.ruoyi.rocketmq.service.impl;
 | 
					package com.ruoyi.rocketmq.service.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.pagehelper.PageInfo;
 | 
				
			||||||
 | 
					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.DateUtils;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.web.page.PageDomain;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.web.page.TableDataInfo;
 | 
				
			||||||
import com.ruoyi.rocketmq.domain.RmInitialMonitorItem;
 | 
					import com.ruoyi.rocketmq.domain.RmInitialMonitorItem;
 | 
				
			||||||
import com.ruoyi.rocketmq.domain.RmMonitorTemplate;
 | 
					import com.ruoyi.rocketmq.domain.RmMonitorTemplate;
 | 
				
			||||||
import com.ruoyi.rocketmq.domain.RmTemplateLinux;
 | 
					import com.ruoyi.rocketmq.domain.RmTemplateLinux;
 | 
				
			||||||
@@ -12,6 +17,8 @@ import com.ruoyi.rocketmq.mapper.RmTemplateLinuxMapper;
 | 
				
			|||||||
import com.ruoyi.rocketmq.mapper.RmTemplateSwitchMapper;
 | 
					import com.ruoyi.rocketmq.mapper.RmTemplateSwitchMapper;
 | 
				
			||||||
import com.ruoyi.rocketmq.service.IRmMonitorTemplateService;
 | 
					import com.ruoyi.rocketmq.service.IRmMonitorTemplateService;
 | 
				
			||||||
import com.ruoyi.rocketmq.utils.DataProcessUtil;
 | 
					import com.ruoyi.rocketmq.utils.DataProcessUtil;
 | 
				
			||||||
 | 
					import com.ruoyi.system.api.RemoteRevenueConfigService;
 | 
				
			||||||
 | 
					import com.ruoyi.system.api.domain.RmResourceRegistrationRemote;
 | 
				
			||||||
import org.springframework.beans.BeanUtils;
 | 
					import org.springframework.beans.BeanUtils;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
@@ -22,6 +29,7 @@ import java.util.List;
 | 
				
			|||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.stream.Collectors;
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.ruoyi.common.core.utils.PageUtils.startPage;
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 监控模板Service业务层处理
 | 
					 * 监控模板Service业务层处理
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
@@ -39,6 +47,8 @@ public class RmMonitorTemplateServiceImpl implements IRmMonitorTemplateService
 | 
				
			|||||||
    private RmTemplateSwitchMapper rmTemplateSwitchMapper;
 | 
					    private RmTemplateSwitchMapper rmTemplateSwitchMapper;
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private RmInitialMonitorItemMapper rmInitialMonitorItemMapper;
 | 
					    private RmInitialMonitorItemMapper rmInitialMonitorItemMapper;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private RemoteRevenueConfigService remoteRevenueConfigService;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 查询监控模板
 | 
					     * 查询监控模板
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
@@ -210,5 +220,4 @@ public class RmMonitorTemplateServiceImpl implements IRmMonitorTemplateService
 | 
				
			|||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,6 +33,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			|||||||
        <include refid="selectInitialCpuInfoVo"/>
 | 
					        <include refid="selectInitialCpuInfoVo"/>
 | 
				
			||||||
        <where>  
 | 
					        <where>  
 | 
				
			||||||
            <if test="clientId != null  and clientId != ''"> and client_id = #{clientId}</if>
 | 
					            <if test="clientId != null  and clientId != ''"> and client_id = #{clientId}</if>
 | 
				
			||||||
 | 
					            <if test="startTime != null  and startTime != ''"> and create_time >= #{startTime}</if>
 | 
				
			||||||
 | 
					            <if test="endTime != null  and endTime != ''"> and create_time <= #{endTime}</if>
 | 
				
			||||||
        </where>
 | 
					        </where>
 | 
				
			||||||
        order by create_time desc
 | 
					        order by create_time desc
 | 
				
			||||||
    </select>
 | 
					    </select>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user