增加日志控制、优化金山95值自动计算方法

This commit is contained in:
gaoyutao
2025-11-03 18:51:00 +08:00
parent 841dd84a99
commit d1db8a5865
4 changed files with 138 additions and 24 deletions

View File

@@ -1,8 +1,9 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.RmRegistrationMachine;
import java.util.List;
/**
* 绑定金山machinecodeMapper接口
*
@@ -58,4 +59,10 @@ public interface RmRegistrationMachineMapper
* @return 结果
*/
public int deleteRmRegistrationMachineByIds(Long[] ids);
/**
* 获取绑定的clientId
* @return
*/
List<RmRegistrationMachine> getAllMachineClientId();
}

View File

@@ -49,6 +49,8 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
private EpsBusinessDeployMapper epsBusinessDeployMapper;
@Autowired
private RmEpsTopologyManagementMapper rmEpsTopologyManagementMapper;
@Autowired
private RmRegistrationMachineMapper rmRegistrationMachineMapper;
@Override
public void createNextMonthTables() {
LocalDate nextMonth = LocalDate.now().plusMonths(1);
@@ -271,32 +273,34 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
@Override
public void calculate95ByJinShan(EpsInitialTrafficData queryParam,
String dailyStartTime, String dailyEndTime, String calculationMode) {
// 获取所有设备SN列表
List<AllInterfaceName> snList = allInterfaceNameMapper.getAllDeviceSn(new AllInterfaceName());
// 遍历处理每个设备
snList.forEach(interfaceName -> {
queryParam.setServiceSn(interfaceName.getDeviceSn());
queryParam.setStartTime(dailyStartTime);
queryParam.setEndTime(dailyEndTime);
List<EpsInitialTrafficData> dataList = query(queryParam);
// 获取已绑定金山Code的clientId列表
List<RmRegistrationMachine> rmRegistrationMachineList = rmRegistrationMachineMapper.getAllMachineClientId();
if(rmRegistrationMachineList != null && !rmRegistrationMachineList.isEmpty()){
// 遍历处理每个设备
rmRegistrationMachineList.forEach(interfaceName -> {
queryParam.setClientId(interfaceName.getClientId());
queryParam.setStartTime(dailyStartTime);
queryParam.setEndTime(dailyEndTime);
List<EpsInitialTrafficData> dataList = query(queryParam);
if (!dataList.isEmpty()) {
// 1. 提取并转换带宽值
List<BigDecimal> speedsInMbps = dataList.stream()
.map(data -> CalculateUtil.parseSpeedToMbps(data.getMachineFlow(), calculationMode))
.sorted()
.collect(Collectors.toList());
if (!dataList.isEmpty()) {
// 1. 提取并转换带宽值
List<BigDecimal> speedsInMbps = dataList.stream()
.map(data -> CalculateUtil.parseSpeedToMbps(data.getMachineFlow(), calculationMode))
.sorted()
.collect(Collectors.toList());
// 2. 计算95百分位
BigDecimal percentile95 = CalculateUtil.calculatePercentile(speedsInMbps, 0.95);
// 2. 计算95百分位
BigDecimal percentile95 = CalculateUtil.calculatePercentile(speedsInMbps, 0.95);
// 3. 保存结果
EpsInitialTrafficData epsInitialTrafficData = dataList.get(0);
epsInitialTrafficData.setResourceType("1");
epsInitialTrafficData.setBandwidthType("8");
saveBandwidthResult(epsInitialTrafficData, percentile95, dailyStartTime, calculationMode);
}
});
// 3. 保存结果
EpsInitialTrafficData epsInitialTrafficData = dataList.get(0);
epsInitialTrafficData.setResourceType("1");
epsInitialTrafficData.setBandwidthType("8");
saveBandwidthResult(epsInitialTrafficData, percentile95, dailyStartTime, calculationMode);
}
});
}
}
/**

View File

@@ -74,4 +74,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
</foreach>
</delete>
<select id="getAllMachineClientId" resultType="RmRegistrationMachine">
select client_id clientId from rm_registration_machine
<where>
and client_id != ''
</where>
group by client_id
</select>
</mapper>

View File

@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/ruoyi-rocketmq" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- RocketMQ业务日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- RocketMQ错误日志输出 -->
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- RocketMQ消息追踪日志 -->
<appender name="file_trace" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/trace.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/trace.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<!-- RocketMQ模块日志级别控制 -->
<logger name="com.ruoyi.rocketmq" level="info" additivity="false">
<appender-ref ref="file_trace" />
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</logger>
<!-- Apache RocketMQ客户端日志控制 -->
<logger name="org.apache.rocketmq" level="warn" />
<!-- Spring RocketMQ相关日志 -->
<logger name="org.springframework.messaging" level="warn" />
<!-- 根日志配置 -->
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
</configuration>