From 259398bfcca34f5137a075aead8438eab5ab53be Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Fri, 22 Aug 2025 18:13:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=88=9D=E5=A7=8B=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E6=95=B0=E6=8D=AE=E5=BA=93=E8=AF=BB=E5=8F=96mq?= =?UTF-8?q?=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RemoteRevenueConfigService.java | 60 ++++++++ .../domain/EpsInitialTrafficDataRemote.java | 4 + .../RemoteRevenueConfigFallbackFactory.java | 53 +++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../EpsServerRevenueConfigController.java | 5 +- .../system/domain/EpsInitialTrafficData.java | 46 +++++-- .../system/domain/EpsServerRevenueConfig.java | 130 ++---------------- .../mapper/EpsServerRevenueConfigMapper.java | 2 +- .../IEpsServerRevenueConfigService.java | 4 +- .../EpsInitialTrafficDataServiceImpl.java | 4 +- .../impl/EpsNodeBandwidthServiceImpl.java | 8 +- .../EpsServerRevenueConfigServiceImpl.java | 52 ++++--- .../RmResourceRegistrationServiceImpl.java | 6 +- .../ruoyi/system/util/TableRouterUtil.java | 45 ++++-- .../system/EpsInitialTrafficDataMapper.xml | 116 ++++++++-------- .../system/EpsServerRevenueConfigMapper.xml | 4 +- .../system/RmResourceRegistrationMapper.xml | 1 + .../rocketmq/consumer/RocketMsgListener.java | 31 ++++- .../InitialBandwidthTrafficController.java | 26 ++-- 19 files changed, 334 insertions(+), 264 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java new file mode 100644 index 0000000..0787fb6 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java @@ -0,0 +1,60 @@ +package com.ruoyi.system.api; + +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.domain.EpsInitialTrafficDataRemote; +import com.ruoyi.system.api.domain.NodeBandwidth; +import com.ruoyi.system.api.factory.RemoteRevenueConfigFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * 用户服务 + * + * @author ruoyi + */ +@FeignClient(contextId = "remoteRevenueConfigService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteRevenueConfigFallbackFactory.class) +public interface RemoteRevenueConfigService +{ + /** + * @param nodeBandwidth 服务器带宽收益 + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/bandwidth/list") + public R getBandwidth(@RequestBody NodeBandwidth nodeBandwidth, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * @param nodeBandwidth 服务器带宽收益 + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/bandwidth") + public R saveBandwidth(@RequestBody NodeBandwidth nodeBandwidth, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 查询流量数据(POST方式) + * @param queryParam 查询参数实体 + * source 请求来源 + * @return 流量数据列表 + */ + @PostMapping("/query") + public R query(@RequestBody EpsInitialTrafficDataRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 批量保存流量数据 + * @param queryParam 流量数据列表 + * @return 操作结果 + */ + @PostMapping("/batch") + public R batchInitialTraffic(@RequestBody EpsInitialTrafficDataRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + /** + * 保存流量数据 + * @param queryParam 流量数据列表 + * @return 操作结果 + */ + @PostMapping("/revenueConfig/autoSaveServiceTrafficData") + public R autoSaveServiceTrafficData(@RequestBody EpsInitialTrafficDataRemote queryParam, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java index 6104eb1..da21361 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/EpsInitialTrafficDataRemote.java @@ -54,5 +54,9 @@ public class EpsInitialTrafficDataRemote extends BaseEntity { /** 注册状态 */ @Excel(name = "注册状态") private String registrationStatus; + /** 开始时间 */ + private String startTime; + /** 结束时间 */ + private String endTime; } \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java new file mode 100644 index 0000000..479f65c --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java @@ -0,0 +1,53 @@ +package com.ruoyi.system.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.RemoteRevenueConfigService; +import com.ruoyi.system.api.domain.EpsInitialTrafficDataRemote; +import com.ruoyi.system.api.domain.NodeBandwidth; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 用户服务降级处理 + * + * @author ruoyi + */ +@Component +public class RemoteRevenueConfigFallbackFactory implements FallbackFactory +{ + private static final Logger log = LoggerFactory.getLogger(RemoteRevenueConfigFallbackFactory.class); + + @Override + public RemoteRevenueConfigService create(Throwable throwable) + { + log.error("流量业务服务调用失败:{}", throwable.getMessage()); + return new RemoteRevenueConfigService() + { + + @Override + public R getBandwidth(NodeBandwidth nodeBandwidth, String source) { + return R.fail("获取服务器带宽失败:" + throwable.getMessage()); + } + + @Override + public R saveBandwidth(NodeBandwidth nodeBandwidth, String source) { + return R.fail("新增服务器带宽失败:" + throwable.getMessage()); + } + + @Override + public R query(EpsInitialTrafficDataRemote queryParam, String source) { + return R.fail("获取初始流量数据失败:" + throwable.getMessage()); + } + @Override + public R batchInitialTraffic(EpsInitialTrafficDataRemote queryParam, String source) { + return R.fail("新增初始流量数据失败:" + throwable.getMessage()); + } + @Override + public R autoSaveServiceTrafficData(EpsInitialTrafficDataRemote queryParam, String source) { + return R.fail("保存流量数据失败:" + throwable.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 0a60da5..f34c500 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,4 @@ com.ruoyi.system.api.factory.RemoteUserFallbackFactory com.ruoyi.system.api.factory.RemoteLogFallbackFactory com.ruoyi.system.api.factory.RemoteFileFallbackFactory +com.ruoyi.system.api.factory.RemoteRevenueConfigFallbackFactory diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java index bfe0118..b99060e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/EpsServerRevenueConfigController.java @@ -1,5 +1,6 @@ package com.ruoyi.system.controller; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -77,9 +78,9 @@ public class EpsServerRevenueConfigController extends BaseController @Log(title = "流量相关数据入库", businessType = BusinessType.EXPORT) @InnerAuth @PostMapping("/autoSaveServiceTrafficData") - public void autoSaveServiceTrafficData(@RequestBody EpsServerRevenueConfig epsServerRevenueConfig) + public R autoSaveServiceTrafficData(@RequestBody EpsServerRevenueConfig epsServerRevenueConfig) { - epsServerRevenueConfigService.autoSaveServiceTrafficData(epsServerRevenueConfig); + return epsServerRevenueConfigService.autoSaveServiceTrafficData(epsServerRevenueConfig); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsInitialTrafficData.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsInitialTrafficData.java index 8591b22..d0016ad 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsInitialTrafficData.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsInitialTrafficData.java @@ -6,6 +6,7 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -23,39 +24,39 @@ public class EpsInitialTrafficData { /** 接口名称 */ @Excel(name = "接口名称") - private String interfaceName; + private String name; /** MAC地址 */ @Excel(name = "MAC地址") - private String macAddress; + private String mac; /** 运行状态 */ @Excel(name = "运行状态") - private String operationStatus; + private String status; /** 接口类型 */ @Excel(name = "接口类型") - private String interfaceType; + private String type; /** IPv4地址 */ @Excel(name = "IPv4地址") - private String ipv4Address; + private String ipV4; /** 入站丢包率(%) */ @Excel(name = "入站丢包率(%)") - private BigDecimal inboundPacketLoss; + private BigDecimal inDropped; /** 出站丢包率(%) */ @Excel(name = "出站丢包率(%)") - private BigDecimal outboundPacketLoss; + private BigDecimal outDropped; /** 接收带宽(Mbps) */ @Excel(name = "接收带宽(Mbps)") - private BigDecimal receiveBandwidth; + private String inSpeed; /** 发送带宽(Mbps) */ @Excel(name = "发送带宽(Mbps)") - private BigDecimal sendBandwidth; + private String outSpeed; /** 业务代码 */ @Excel(name = "业务代码") @@ -93,18 +94,37 @@ public class EpsInitialTrafficData { private String clientId; /** 流量统计开始时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime startTime; + private String startTime; /** 流量统计结束时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime endTime; + 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; + } \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsServerRevenueConfig.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsServerRevenueConfig.java index 0f6fc79..84aa3fa 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsServerRevenueConfig.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/EpsServerRevenueConfig.java @@ -1,10 +1,10 @@ package com.ruoyi.system.domain; -import java.math.BigDecimal; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseEntity; +import lombok.Data; + +import java.math.BigDecimal; /** * 服务器收益方式配置对象 eps_server_revenue_config @@ -12,6 +12,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity; * @author gyt * @date 2025-08-19 */ +@Data public class EpsServerRevenueConfig extends BaseEntity { private static final long serialVersionUID = 1L; @@ -55,123 +56,8 @@ public class EpsServerRevenueConfig extends BaseEntity @Excel(name = "注册状态") private String registrationStatus; - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - - public void setNodeName(String nodeName) - { - this.nodeName = nodeName; - } - - public String getNodeName() - { - return nodeName; - } - - public void setRevenueMethod(String revenueMethod) - { - this.revenueMethod = revenueMethod; - } - - public String getRevenueMethod() - { - return revenueMethod; - } - - public void setHardwareSn(String hardwareSn) - { - this.hardwareSn = hardwareSn; - } - - public String getHardwareSn() - { - return hardwareSn; - } - - public void setTrafficPort(String trafficPort) - { - this.trafficPort = trafficPort; - } - - public String getTrafficPort() - { - return trafficPort; - } - - public void setBandwidth95(BigDecimal bandwidth95) - { - this.bandwidth95 = bandwidth95; - } - - public BigDecimal getBandwidth95() - { - return bandwidth95; - } - - public void setPackageBandwidth(BigDecimal packageBandwidth) - { - this.packageBandwidth = packageBandwidth; - } - - public BigDecimal getPackageBandwidth() - { - return packageBandwidth; - } - - public void setBusinessName(String businessName) - { - this.businessName = businessName; - } - - public String getBusinessName() - { - return businessName; - } - - public void setBusinessCode(String businessCode) - { - this.businessCode = businessCode; - } - - public String getBusinessCode() - { - return businessCode; - } - - public void setRegistrationStatus(String registrationStatus) - { - this.registrationStatus = registrationStatus; - } - - public String getRegistrationStatus() - { - return registrationStatus; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("nodeName", getNodeName()) - .append("revenueMethod", getRevenueMethod()) - .append("hardwareSn", getHardwareSn()) - .append("trafficPort", getTrafficPort()) - .append("bandwidth95", getBandwidth95()) - .append("packageBandwidth", getPackageBandwidth()) - .append("updateTime", getUpdateTime()) - .append("businessName", getBusinessName()) - .append("businessCode", getBusinessCode()) - .append("registrationStatus", getRegistrationStatus()) - .append("createBy", getCreateBy()) - .append("updateBy", getUpdateBy()) - .append("createTime", getCreateTime()) - .toString(); - } + /** 开始时间 */ + private String startTime; + /** 结束时间 */ + private String endTime; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EpsServerRevenueConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EpsServerRevenueConfigMapper.java index e079a0a..7c1baa0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EpsServerRevenueConfigMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/EpsServerRevenueConfigMapper.java @@ -68,7 +68,7 @@ public interface EpsServerRevenueConfigMapper * @param hardwareSn 服务器sn * @return 数据条数 */ - public int countBySn(@Param("hardwareSn") String hardwareSn); + public EpsServerRevenueConfig countBySn(@Param("hardwareSn") String hardwareSn); /** * 查询服务器信息 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsServerRevenueConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsServerRevenueConfigService.java index 652f381..df76a57 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsServerRevenueConfigService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IEpsServerRevenueConfigService.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service; +import com.ruoyi.common.core.domain.R; import com.ruoyi.system.domain.EpsServerRevenueConfig; import java.util.List; @@ -62,8 +63,7 @@ public interface IEpsServerRevenueConfigService /** * 保存业务相关流量表 - * 每5分钟自动执行 * @param epsServerRevenueConfig */ - void autoSaveServiceTrafficData(EpsServerRevenueConfig epsServerRevenueConfig); + R autoSaveServiceTrafficData(EpsServerRevenueConfig epsServerRevenueConfig); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java index 7100ca7..e9efa34 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java @@ -168,7 +168,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe // 获取涉及的表名 Set tableNames = TableRouterUtil.getTableNamesBetweenInitial(queryParam.getStartTime(), queryParam.getEndTime()); - + log.error("initial表名:{}",tableNames); // 并行查询各表 return tableNames.parallelStream() .flatMap(tableName -> { @@ -176,7 +176,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe condition.setTableName(tableName); condition.setStartTime(queryParam.getStartTime()); condition.setEndTime(queryParam.getEndTime()); - condition.setInterfaceName(queryParam.getInterfaceName()); + condition.setName(queryParam.getName()); return epsInitialTrafficDataMapper.getAllTraficMsg(condition).stream(); }) .collect(Collectors.toList()); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java index b4bb9c4..74d9158 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsNodeBandwidthServiceImpl.java @@ -187,16 +187,16 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService case "1": case "3": case "5": // 日带宽 - data.setStartTime(baseTime.with(LocalTime.MIN)); // 00:00:00 - data.setEndTime(baseTime.with(LocalTime.MAX).withNano(0)); // 23:59:59 + data.setStartTime(baseTime.with(LocalTime.MIN) + ""); // 00:00:00 + data.setEndTime(baseTime.with(LocalTime.MAX).withNano(0) + ""); // 23:59:59 break; case "2": case "4": case "6": case "7": // 月带宽 YearMonth month = YearMonth.from(baseTime); - data.setStartTime(month.atDay(1).atStartOfDay()); // 当月第一天 00:00:00 - data.setEndTime(month.atEndOfMonth().atTime(23, 59, 59)); // 当月最后一天 23:59:59 + data.setStartTime(month.atDay(1).atStartOfDay() + ""); // 当月第一天 00:00:00 + data.setEndTime(month.atEndOfMonth().atTime(23, 59, 59) + ""); // 当月最后一天 23:59:59 break; default: throw new IllegalArgumentException("不支持的带宽类型: " + bandwidthType); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsServerRevenueConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsServerRevenueConfigServiceImpl.java index dab5ffa..02fd635 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsServerRevenueConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsServerRevenueConfigServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service.impl; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.domain.EpsInitialTrafficData; @@ -8,10 +9,11 @@ import com.ruoyi.system.domain.EpsServerRevenueConfig; import com.ruoyi.system.mapper.EpsServerRevenueConfigMapper; import com.ruoyi.system.service.EpsInitialTrafficDataService; import com.ruoyi.system.service.IEpsServerRevenueConfigService; -import com.ruoyi.system.util.DateUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -22,6 +24,7 @@ import java.util.Map; * @date 2025-08-19 */ @Service +@Slf4j public class EpsServerRevenueConfigServiceImpl implements IEpsServerRevenueConfigService { @Autowired @@ -124,17 +127,17 @@ public class EpsServerRevenueConfigServiceImpl implements IEpsServerRevenueConfi * @param epsServerRevenueConfig */ private void saveServiceTrafficData(EpsServerRevenueConfig epsServerRevenueConfig) { - // 查询初始流量数据 + // 初始流量数据 EpsInitialTrafficData epsInitialTrafficData = new EpsInitialTrafficData(); epsInitialTrafficData.setServiceSn(epsServerRevenueConfig.getHardwareSn()); epsInitialTrafficData.setBusinessId(epsServerRevenueConfig.getBusinessCode()); epsInitialTrafficData.setBusinessName(epsServerRevenueConfig.getBusinessName()); - epsInitialTrafficData.setInterfaceName(epsServerRevenueConfig.getTrafficPort()); + epsInitialTrafficData.setName(epsServerRevenueConfig.getTrafficPort()); epsInitialTrafficData.setPackageBandwidth(epsServerRevenueConfig.getPackageBandwidth()); epsInitialTrafficData.setRevenueMethod(epsServerRevenueConfig.getRevenueMethod()); epsInitialTrafficData.setNodeName(epsServerRevenueConfig.getNodeName()); - epsInitialTrafficData.setStartTime(DateUtil.dateToLocalDateTime(epsServerRevenueConfig.getCreateTime())); - epsInitialTrafficData.setEndTime(DateUtil.dateToLocalDateTime(epsServerRevenueConfig.getCreateTime())); + epsInitialTrafficData.setStartTime(epsServerRevenueConfig.getCreateTime() + ""); + epsInitialTrafficData.setEndTime(epsServerRevenueConfig.getCreateTime() + ""); epsInitialTrafficDataService.save(epsInitialTrafficData); } @@ -144,26 +147,39 @@ public class EpsServerRevenueConfigServiceImpl implements IEpsServerRevenueConfi * @param epsServerRevenueConfig */ @Override - public void autoSaveServiceTrafficData(EpsServerRevenueConfig epsServerRevenueConfig) { + public R autoSaveServiceTrafficData(EpsServerRevenueConfig epsServerRevenueConfig) { // 查询初始流量数据 EpsInitialTrafficData epsInitialTrafficData = new EpsInitialTrafficData(); - epsInitialTrafficData.setStartTime(DateUtil.dateToLocalDateTime(epsServerRevenueConfig.getCreateTime())); - epsInitialTrafficData.setEndTime(DateUtil.dateToLocalDateTime(epsServerRevenueConfig.getCreateTime())); + epsInitialTrafficData.setStartTime(epsServerRevenueConfig.getStartTime()); + epsInitialTrafficData.setEndTime(epsServerRevenueConfig.getEndTime()); List dataList = epsInitialTrafficDataService.getAllTraficMsg(epsInitialTrafficData); + List batchList = new ArrayList<>(); for (EpsInitialTrafficData initialTrafficData : dataList) { // 根据ip查询节点名称 - String ip = initialTrafficData.getIpv4Address(); + String ip = initialTrafficData.getIpV4() == null ? "" : initialTrafficData.getIpV4(); Map nodeMsg = epsServerRevenueConfigMapper.getNodeMsgByIp(ip); // 赋值 - initialTrafficData.setServiceSn(nodeMsg.get("hardwareSn") + ""); - initialTrafficData.setNodeName(nodeMsg.get("resourceName") + ""); - initialTrafficData.setRevenueMethod(nodeMsg.get("revenueMethod") + ""); - initialTrafficData.setBusinessId(nodeMsg.get("businessCode") + ""); - initialTrafficData.setBusinessName(nodeMsg.get("businessName") + ""); - initialTrafficData.setStartTime(initialTrafficData.getCreateTime()); - initialTrafficData.setEndTime(initialTrafficData.getCreateTime()); - // 流量相关数据入库 - epsInitialTrafficDataService.save(initialTrafficData); + if(nodeMsg != null){ + initialTrafficData.setServiceSn(nodeMsg.get("hardwareSn") + ""); + initialTrafficData.setNodeName(nodeMsg.get("resourceName") + ""); + initialTrafficData.setRevenueMethod(nodeMsg.get("revenueMethod") + ""); + initialTrafficData.setBusinessId(nodeMsg.get("businessCode") + ""); + initialTrafficData.setBusinessName(nodeMsg.get("businessName") + ""); + } + // id自增 + initialTrafficData.setId(null); + batchList.add(initialTrafficData); + } + epsInitialTrafficData.setDataList(batchList); + // 流量相关数据入库 + try { + epsInitialTrafficDataService.saveBatch(epsInitialTrafficData); + log.info("流量数据批量入库成功,数据量:{}", batchList.size()); + return R.ok("数据保存成功"); + } catch (Exception e) { + log.error("流量数据入库失败,数据量:{},错误原因:{}", + batchList.size(), e.getMessage(), e); + return R.fail("数据保存失败:" + e.getMessage()); } } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java index 061ece0..7694c19 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java @@ -125,10 +125,12 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio epsServerRevenueConfig.setHardwareSn(rmResourceRegistration.getHardwareSn()); epsServerRevenueConfig.setNodeName(rmResourceRegistration.getResourceName()); epsServerRevenueConfig.setCreateTime(DateUtils.getNowDate()); + epsServerRevenueConfig.setRegistrationStatus(rmResourceRegistration.getRegistrationStatus()); // 新增前判断是否存在 - int exits = epsServerRevenueConfigMapper.countBySn(epsServerRevenueConfig.getHardwareSn()); - if(exits>0){ + EpsServerRevenueConfig exits = epsServerRevenueConfigMapper.countBySn(epsServerRevenueConfig.getHardwareSn()); + if(exits != null){ // 存在 修改 + epsServerRevenueConfig.setId(exits.getId()); epsServerRevenueConfigMapper.updateEpsServerRevenueConfig(epsServerRevenueConfig); }else{ // 不存在 新增 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/TableRouterUtil.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/TableRouterUtil.java index b16f418..1636e06 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/TableRouterUtil.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/TableRouterUtil.java @@ -19,7 +19,8 @@ public class TableRouterUtil { // 日期格式 private static final DateTimeFormatter YEAR_MONTH_FORMAT = DateTimeFormatter.ofPattern("yyyy_MM"); - + private static final DateTimeFormatter DATE_TIME_FORMATTER = + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); /** * 根据创建时间获取表名 * @param createTime 记录创建时间 @@ -60,17 +61,19 @@ public class TableRouterUtil { /** * 获取时间范围内涉及的所有表名 - * @param startTime 开始时间(包含) - * @param endTime 结束时间(包含) + * @param startTime 开始时间 (格式: "yyyy-MM-dd HH:mm:ss") + * @param endTime 结束时间 (格式: "yyyy-MM-dd HH:mm:ss") * @return 按时间顺序排列的表名集合 */ - public static Set getTableNamesBetween(LocalDateTime startTime, LocalDateTime endTime) { - validateTimeRange(startTime, endTime); + public static Set getTableNamesBetween(String startTime, String endTime) { + LocalDateTime start = parseDateTime(startTime); + LocalDateTime end = parseDateTime(endTime); + validateTimeRange(start, end); Set tableNames = new LinkedHashSet<>(); - LocalDateTime current = startTime.withHour(0).withMinute(0).withSecond(0); + LocalDateTime current = start.withHour(0).withMinute(0).withSecond(0); - while (!current.isAfter(endTime)) { + while (!current.isAfter(end)) { tableNames.add(getTableName(current)); current = current.plusDays(1); } @@ -78,25 +81,37 @@ public class TableRouterUtil { return tableNames; } /** - * 获取时间范围内涉及的所有表名 - * @param startTime 开始时间(包含) - * @param endTime 结束时间(包含) + * 获取时间范围内涉及的所有初始表名 + * @param startTime 开始时间 (格式: "yyyy-MM-dd HH:mm:ss") + * @param endTime 结束时间 (格式: "yyyy-MM-dd HH:mm:ss") * @return 按时间顺序排列的表名集合 */ - public static Set getTableNamesBetweenInitial(LocalDateTime startTime, LocalDateTime endTime) { - validateTimeRange(startTime, endTime); + public static Set getTableNamesBetweenInitial(String startTime, String endTime) { + LocalDateTime start = parseDateTime(startTime); + LocalDateTime end = parseDateTime(endTime); + validateTimeRange(start, end); Set tableNames = new LinkedHashSet<>(); - LocalDateTime current = startTime.withHour(0).withMinute(0).withSecond(0); + LocalDateTime current = start.withHour(0).withMinute(0).withSecond(0); - while (!current.isAfter(endTime)) { + while (!current.isAfter(end)) { tableNames.add(getInitialTableName(current)); current = current.plusDays(1); } return tableNames; } - + // 解析字符串为LocalDateTime + private static LocalDateTime parseDateTime(String dateTimeStr) { + if (dateTimeStr == null || dateTimeStr.trim().isEmpty()) { + throw new IllegalArgumentException("时间字符串不能为空"); + } + try { + return LocalDateTime.parse(dateTimeStr, DATE_TIME_FORMATTER); + } catch (Exception e) { + throw new IllegalArgumentException("时间格式必须为: yyyy-MM-dd HH:mm:ss", e); + } + } // 获取日期区间 private static String getDayRange(int day) { diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml index 5ca46b3..06ce84b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsInitialTrafficDataMapper.xml @@ -54,18 +54,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" INDEX idx_name_time (`name`,create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='初始带宽流量表'; - + INSERT INTO ${tableName} ( - interface_name, - mac_address, - operation_status, - interface_type, - ipv4_address, - inbound_packet_loss, - outbound_packet_loss, - receive_bandwidth, - send_bandwidth, + `name`, + `mac`, + `status`, + `type`, + ipV4, + `in_dropped`, + `out_dropped`, + `in_speed`, + `out_speed`, business_id, business_name, service_sn, @@ -76,15 +76,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, client_id ) VALUES ( - #{interfaceName}, - #{macAddress}, - #{operationStatus}, - #{interfaceType}, - #{ipv4Address}, - #{inboundPacketLoss}, - #{outboundPacketLoss}, - #{receiveBandwidth}, - #{sendBandwidth}, + #{name}, + #{mac}, + #{status}, + #{type}, + #{ipV4}, + #{inDropped}, + #{outDropped}, + #{inSpeed}, + #{outSpeed}, #{businessId}, #{businessName}, #{serviceSn}, @@ -97,19 +97,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) - + INSERT INTO ${tableName} ( id, - interface_name, - mac_address, - operation_status, - interface_type, - ipv4_address, - inbound_packet_loss, - outbound_packet_loss, - receive_bandwidth, - send_bandwidth, + `name`, + `mac`, + `status`, + `type`, + ipV4, + `in_dropped`, + `out_dropped`, + `in_speed`, + `out_speed`, business_id, business_name, service_sn, @@ -122,19 +122,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, client_id ) VALUES - + ( #{data.id,jdbcType=BIGINT}, - #{data.interfaceName,jdbcType=VARCHAR}, - #{data.macAddress,jdbcType=CHAR}, - #{data.operationStatus,jdbcType=VARCHAR}, - #{data.interfaceType,jdbcType=VARCHAR}, - #{data.ipv4Address,jdbcType=VARCHAR}, - #{data.inboundPacketLoss,jdbcType=DECIMAL}, - #{data.outboundPacketLoss,jdbcType=DECIMAL}, - #{data.receiveBandwidth,jdbcType=DECIMAL}, - #{data.sendBandwidth,jdbcType=DECIMAL}, - #{data.businessId,jdbcType=CHAR}, + #{data.name,jdbcType=VARCHAR}, + #{data.mac,jdbcType=VARCHAR}, + #{data.status,jdbcType=VARCHAR}, + #{data.type,jdbcType=VARCHAR}, + #{data.ipV4,jdbcType=VARCHAR}, + #{data.inDropped,jdbcType=DECIMAL}, + #{data.outDropped,jdbcType=DECIMAL}, + #{data.inSpeed,jdbcType=VARCHAR}, + #{data.outSpeed,jdbcType=VARCHAR}, + #{data.businessId,jdbcType=VARCHAR}, #{data.businessName,jdbcType=VARCHAR}, #{data.serviceSn,jdbcType=VARCHAR}, #{data.nodeName,jdbcType=VARCHAR}, @@ -153,15 +153,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT id, - `name` AS interfaceName, - `mac` AS macAddress, - `status` AS operationStatus, - `type` AS interfaceType, - `ipV4` AS ipv4Address, - `in_dropped` AS inboundPacketLoss, - `out_dropped` AS outboundPacketLoss, - `in_speed` AS receiveBandwidth, - `out_speed` AS sendBandwidth, + `name` AS name, + `mac` AS mac, + `status` AS status, + `type` AS type, + `ipV4` AS ipV4, + `in_dropped` AS inDropped, + `out_dropped` AS outDropped, + `in_speed` AS inSpeed, + `out_speed` AS outSpeed, create_time AS createTime, update_time AS updateTime, create_by AS createBy, diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsServerRevenueConfigMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsServerRevenueConfigMapper.xml index c4df793..fecfb0b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsServerRevenueConfigMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/EpsServerRevenueConfigMapper.xml @@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -132,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" rrr.hardware_sn = esrc.hardware_sn and rrr.registration_status = '1' - and rrr.ip_address = #{ipAddress} + and rrr.ip_address = #{ipAddress} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml index 2b0ada7..5af4bf4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml @@ -64,6 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and updater_id = #{updaterId} and updater_name like concat('%', #{updaterName}, '%') + order by create_time desc