解决相关数据分页不生效问题,修改交换机计算95值逻辑,使其精确到接口

This commit is contained in:
gaoyutao
2025-09-03 18:26:10 +08:00
parent 4dd9324dba
commit ec3fb074e1
9 changed files with 99 additions and 71 deletions

View File

@@ -1,5 +1,6 @@
package com.ruoyi.system.controller;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
@@ -156,13 +157,13 @@ public class EpsNodeBandwidthController extends BaseController
* 相关数据
*/
@RequiresPermissions("system:bandwidth:query")
@GetMapping(value = "relatedData/{id}")
@GetMapping(value = "relatedData/traffic")
/**
* 根据ID获取相关数据
* @param id 资源ID
* @return 表格数据信息
*/
public TableDataInfo relatedData(@PathVariable("id") Long id) {
public TableDataInfo relatedData(Long id,Integer pageNum,Integer pageSize) {
// 1. 参数校验
if (id == null || id <= 0) {
throw new IllegalArgumentException("无效的资源ID");
@@ -170,6 +171,8 @@ public class EpsNodeBandwidthController extends BaseController
try {
// 2. 查询服务器信息
EpsNodeBandwidth epsNodeBandwidth = epsNodeBandwidthService.selectEpsNodeBandwidthById(id);
epsNodeBandwidth.setPageNum(pageNum);
epsNodeBandwidth.setPageSize(pageSize);
if (epsNodeBandwidth == null) {
log.warn("未找到ID为{}的服务器信息", id);
throw new NotFoundException("未找到ID为" + id + "的服务器信息");
@@ -181,11 +184,6 @@ public class EpsNodeBandwidthController extends BaseController
String dailyStartTime = timeRange.getStart();
String dailyEndTime = timeRange.getEnd();
// 4. 设置分页参数
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(epsNodeBandwidth.getPageNum());
pageDomain.setPageSize(epsNodeBandwidth.getPageSize());
startPage(pageDomain);
// 5. 根据资源类型处理不同数据
String resourceType = epsNodeBandwidth.getResourceType();
@@ -193,15 +191,19 @@ public class EpsNodeBandwidthController extends BaseController
if ("4".equals(bandwidthType) || "7".equals(bandwidthType)) {
// 处理特定带宽类型数据
List<EpsNodeBandwidth> nodeBandwidthList = epsNodeBandwidthService.getAvgDetailMsg(id);
return getDataTable(nodeBandwidthList);
PageInfo<EpsNodeBandwidth> pageInfo = epsNodeBandwidthService.getAvgDetailMsg(id,pageNum,pageSize, dailyStartTime, dailyEndTime);
return getDataTable(pageInfo.getList(),pageInfo.getTotal());
}
if ("1".equals(resourceType)) {
// 处理服务器流量数据
List<EpsInitialTrafficData> trafficList = epsNodeBandwidthService.relatedData(
epsNodeBandwidth, dailyStartTime, dailyEndTime);
return getDataTable(trafficList);
PageInfo<EpsInitialTrafficData> pageInfo = epsNodeBandwidthService.relatedData(epsNodeBandwidth, dailyStartTime, dailyEndTime);;
return getDataTable(pageInfo.getList(), pageInfo.getTotal());
} else{
// 4. 设置分页参数
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(epsNodeBandwidth.getPageNum());
pageDomain.setPageSize(epsNodeBandwidth.getPageSize());
startPage(pageDomain);
// 处理交换机信息
List<InitialSwitchInfoDetails> switchInfoDetails = initialSwitchInfoDetailsService.getRelevantSwitch(
epsNodeBandwidth, dailyStartTime, dailyEndTime);

View File

@@ -1,12 +1,10 @@
package com.ruoyi.system.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
@@ -15,7 +13,7 @@ import java.util.List;
* 支持按时间自动分表存储每月分成3个表
*/
@Data
public class EpsInitialTrafficData {
public class EpsInitialTrafficData extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -106,31 +104,6 @@ public class EpsInitialTrafficData {
/** 流量统计结束时间 */
private String endTime;
/** 数据创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/** 创建者 */
private String createBy;
/** 更新者 */
private String updateBy;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/** 当前记录起始索引 */
private Integer pageNum;
/** 每页显示记录数 */
private Integer pageSize;
/**
* 选中的属性名称
*/
private String[] properties;
/** 资源类型 */
private String resourceType;
/** 带宽类型 */

View File

@@ -1,5 +1,6 @@
package com.ruoyi.system.service;
import com.github.pagehelper.PageInfo;
import com.ruoyi.system.domain.EpsInitialTrafficData;
import com.ruoyi.system.domain.EpsNodeBandwidth;
@@ -28,7 +29,7 @@ public interface IEpsNodeBandwidthService
* @param epsNodeBandwidth
* @return
*/
public List<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime);
public PageInfo<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime);
/**
* 查询节点带宽信息列表
@@ -78,7 +79,7 @@ public interface IEpsNodeBandwidthService
*/
public int calculateAvg(EpsNodeBandwidth epsNodeBandwidth);
List<EpsNodeBandwidth> getAvgDetailMsg(Long id);
PageInfo<EpsNodeBandwidth> getAvgDetailMsg(Long id, Integer pageNum, Integer pageSize, String dailyStartTime, String dailyEndTime);
/**
* 图形分析

View File

@@ -5,6 +5,7 @@ import com.ruoyi.system.domain.*;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.service.EpsInitialTrafficDataService;
import com.ruoyi.system.util.CalculateUtil;
import com.ruoyi.system.util.DateUtil;
import com.ruoyi.system.util.TableRouterUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -15,7 +16,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -91,9 +91,9 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
@Transactional
public void save(EpsInitialTrafficData data) {
if (data.getCreateTime() == null) {
data.setCreateTime(LocalDateTime.now());
data.setCreateTime(DateUtils.getNowDate());
}
data.setTableName(TableRouterUtil.getTableName(data.getCreateTime()));
data.setTableName(TableRouterUtil.getTableName(DateUtil.dateToLocalDateTime(data.getCreateTime())));
epsInitialTrafficDataMapper.insert(data);
}
@@ -118,9 +118,9 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
EpsInitialTrafficData processed = new EpsInitialTrafficData();
BeanUtils.copyProperties(data,processed);
if (data.getCreateTime() == null) {
data.setCreateTime(LocalDateTime.now());
data.setCreateTime(DateUtils.getNowDate());
}
processed.setTableName(TableRouterUtil.getTableName(data.getCreateTime()));
processed.setTableName(TableRouterUtil.getTableName(DateUtil.dateToLocalDateTime(data.getCreateTime())));
return processed;
} catch (Exception e){
log.error("数据处理失败",e.getMessage());
@@ -171,9 +171,6 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
})
.collect(Collectors.toList());
}
/**
* 查询初始流量信息
*/
@Override
public List<EpsInitialTrafficData> getAllTraficMsg(EpsInitialTrafficData queryParam) {

View File

@@ -1,6 +1,8 @@
package com.ruoyi.system.service.impl;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.web.page.PageDomain;
import com.ruoyi.system.domain.EpsInitialTrafficData;
import com.ruoyi.system.domain.EpsNodeBandwidth;
import com.ruoyi.system.domain.EpsServerRevenueConfig;
@@ -23,6 +25,8 @@ import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
import static com.ruoyi.common.core.utils.PageUtils.startPage;
/**
* 节点带宽信息Service业务层处理
*
@@ -59,15 +63,28 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService
* @return 节点带宽信息
*/
@Override
public List<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth,String dailyStartTime, String dailyEndTime) {
public PageInfo<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime) {
// 设置查询条件
EpsInitialTrafficData queryParams = new EpsInitialTrafficData();
queryParams.setServiceSn(epsNodeBandwidth.getHardwareSn());
queryParams.setBusinessId(epsNodeBandwidth.getBusinessId());
queryParams.setStartTime(dailyStartTime);
queryParams.setEndTime(dailyEndTime);
// 查询并返回数据
return epsInitialTrafficDataService.query(queryParams);
// 获取总数
List<EpsInitialTrafficData> totalList = epsInitialTrafficDataService.query(queryParams);
// 4. 设置分页参数
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(epsNodeBandwidth.getPageNum());
pageDomain.setPageSize(epsNodeBandwidth.getPageSize());
startPage(pageDomain);
List<EpsInitialTrafficData> resultList = epsInitialTrafficDataService.query(queryParams);
PageInfo<EpsInitialTrafficData> pageInfo = new PageInfo<>();
pageInfo.setList(resultList);
pageInfo.setTotal(totalList.size());
pageInfo.setPageNum(pageDomain.getPageNum());
pageInfo.setPageSize(pageDomain.getPageSize());
pageInfo.setPages((int) Math.ceil((double) totalList.size() / pageDomain.getPageSize()));
return pageInfo;
}
/**
* 查询节点带宽信息列表
@@ -244,13 +261,28 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService
}
@Override
public List<EpsNodeBandwidth> getAvgDetailMsg(Long id) {
public PageInfo<EpsNodeBandwidth> getAvgDetailMsg(Long id, Integer pageNum, Integer pageSize, String dailyStartTime, String dailyEndTime) {
// 1. 根据ID查询服务器信息
EpsNodeBandwidth epsNodeBandwidth = epsNodeBandwidthMapper.selectEpsNodeBandwidthById(id);
if (epsNodeBandwidth == null) {
throw new NotFoundException("未找到ID为" + id + "的服务器信息");
}
return epsNodeBandwidthMapper.getAvgDetailMsg(epsNodeBandwidth);
epsNodeBandwidth.setStartTime(dailyStartTime);
epsNodeBandwidth.setEndTime(dailyEndTime);
List<EpsNodeBandwidth> totalList = epsNodeBandwidthMapper.getAvgDetailMsg(epsNodeBandwidth);
// 4. 设置分页参数
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(pageNum);
pageDomain.setPageSize(pageSize);
startPage(pageDomain);
List<EpsNodeBandwidth> nodeBandwidthList = epsNodeBandwidthMapper.getAvgDetailMsg(epsNodeBandwidth);
PageInfo<EpsNodeBandwidth> pageInfo = new PageInfo<>();
pageInfo.setList(nodeBandwidthList);
pageInfo.setTotal(totalList.size());
pageInfo.setPageNum(pageDomain.getPageNum());
pageInfo.setPageSize(pageDomain.getPageSize());
pageInfo.setPages((int) Math.ceil((double) totalList.size() / pageDomain.getPageSize()));
return pageInfo;
}
@Override
public Map graphicalAnalysis(EpsNodeBandwidth epsNodeBandwidth, String bandwidthType, ChronoUnit timeUnit){

View File

@@ -372,25 +372,29 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
// 根据交换机sn查询连接的服务器sn
RmEpsTopologyManagement management = new RmEpsTopologyManagement();
management.setSwitchSn(queryParam.getSwitchSn());
management.setSwitchIpAddress(queryParam.getSwitchIp());
List<RmEpsTopologyManagement> serverSnList = rmEpsTopologyManagementMapper.selectRmEpsTopologyManagementList(management);
if(!serverSnList.isEmpty()){
if("1".equals(serverSnList.get(0).getConnectedDeviceType())){
queryParam.setServerSn(serverSnList.get(0).getServerSn());
// 检查交换机连接的服务器是否有业务变更(如果有相关配置)
EpsServerRevenueConfig revenueConfig = new EpsServerRevenueConfig();
revenueConfig.setHardwareSn(serverSnList.get(0).getServerSn());
List<EpsServerRevenueConfig> changedList = epsServerRevenueConfigMapper
.selectEpsServerRevenueConfigList(revenueConfig);
// 根据业务变更情况选择计算方式
if (hasTrafficMethodChanged(changedList)) {
calculateChangedSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
} else {
for (RmEpsTopologyManagement rmEpsTopologyManagement : serverSnList) {
queryParam.setName(rmEpsTopologyManagement.getInterfaceName());
if("1".equals(rmEpsTopologyManagement.getConnectedDeviceType())){
queryParam.setServerSn(rmEpsTopologyManagement.getServerSn());
// 检查交换机连接的服务器是否有业务变更(如果有相关配置)
EpsServerRevenueConfig revenueConfig = new EpsServerRevenueConfig();
revenueConfig.setHardwareSn(rmEpsTopologyManagement.getServerSn());
List<EpsServerRevenueConfig> changedList = epsServerRevenueConfigMapper
.selectEpsServerRevenueConfigList(revenueConfig);
// 根据业务变更情况选择计算方式
if (hasTrafficMethodChanged(changedList)) {
calculateChangedSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
} else {
calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
}
}
if("2".equals(rmEpsTopologyManagement.getConnectedDeviceType())){
calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
}
}
if("2".equals(serverSnList.get(0).getConnectedDeviceType())){
calculateNormalSwitchBandwidth(queryParam, dailyStartTime, dailyEndTime);
}
}
}

View File

@@ -192,6 +192,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="serviceSn != '' and serviceSn != null">
and service_sn = #{serviceSn}
</if>
<if test="businessId != '' and businessId != null">
and business_id = #{businessId}
</if>
<if test="startTime != null">
and create_time &gt;= #{startTime}
</if>

View File

@@ -37,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectInitialSwitchInfoDetailsVo"/>
<where>
<if test="clientId != null and clientId != ''"> and client_id = #{clientId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="name != null and name != ''"> and name = #{name}</if>
<if test="inBytes != null "> and in_bytes = #{inBytes}</if>
<if test="outBytes != null "> and out_bytes = #{outBytes}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
@@ -53,7 +53,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="switchSn != null and switchSn != ''"> and switch_sn = #{switchSn}</if>
<if test="businessCode != null and businessCode != ''"> and business_code = #{businessCode}</if>
<if test="businessName != null and businessName != ''"> and business_name like concat('%', #{businessName}, '%')</if>
<if test="startTime != null">
and create_time &gt;= #{startTime}
</if>
<if test="endTime != null">
and create_time &lt;= #{endTime}
</if>
</where>
order by create_time desc
</select>
<select id="selectInitialSwitchInfoDetailsById" parameterType="Long" resultMap="InitialSwitchInfoDetailsResult">