优化监控看板、初始化mtr模块
This commit is contained in:
+6
-71
@@ -1,7 +1,6 @@
|
||||
package com.ruoyi.system.config;
|
||||
|
||||
import com.ruoyi.system.domain.*;
|
||||
import com.ruoyi.system.mapper.RmResourceRegistrationMapper;
|
||||
import com.ruoyi.system.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -9,7 +8,6 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
@@ -36,17 +34,11 @@ public class TableScheduleConfig {
|
||||
@Autowired
|
||||
private IAllInterfaceNameService allInterfaceNameService;
|
||||
@Autowired
|
||||
private IEpsServerRevenueConfigService epsServerRevenueConfigService;
|
||||
@Autowired
|
||||
private IRmEpsTopologyManagementService rmEpsTopologyManagementService;
|
||||
@Autowired
|
||||
private IEpsMethodChangeRecordService epsMethodChangeRecordService;
|
||||
@Autowired
|
||||
private IRmMonitorConfigService rmMonitorConfigService;
|
||||
@Autowired
|
||||
private IRmMonitorConfigDetailsService rmMonitorConfigDetailsService;
|
||||
@Autowired
|
||||
private RmResourceRegistrationMapper rmResourceRegistrationMapper;
|
||||
|
||||
// 每月25号创建下月表
|
||||
@Scheduled(cron = "0 0 0 25 * ?")
|
||||
@@ -54,70 +46,13 @@ public class TableScheduleConfig {
|
||||
public void createNextMonthTables() {
|
||||
epsInitialTrafficDataService.createNextMonthTables();
|
||||
}
|
||||
|
||||
/**
|
||||
* 每5分钟计算配置好的总流量
|
||||
*/
|
||||
@Scheduled(cron = "0 1/5 * * * ?")
|
||||
public void sumTrafficMyMonitorConfig() {
|
||||
// 查询所有配置
|
||||
List<RmMonitorConfig> rmMonitorConfigList = rmMonitorConfigService.selectRmMonitorConfigList(new RmMonitorConfig());
|
||||
if (rmMonitorConfigList == null || rmMonitorConfigList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
for (RmMonitorConfig rmMonitorConfig : rmMonitorConfigList) {
|
||||
// 判断资源类型
|
||||
if("1".equals(rmMonitorConfig.getResourceType()) || "3".equals(rmMonitorConfig.getResourceType())){
|
||||
if("3".equals(rmMonitorConfig.getResourceType())){
|
||||
if(rmMonitorConfig.getBusinessName() == null){
|
||||
log.warn("不存在业务");
|
||||
continue;
|
||||
}
|
||||
// 根据业务代码查询服务器clientId
|
||||
RmResourceRegistration queryRegist = new RmResourceRegistration();
|
||||
queryRegist.setBusinessName(rmMonitorConfig.getBusinessName());
|
||||
List<RmResourceRegistration> registrationList = rmResourceRegistrationMapper.getRegistrationTableInfoList(queryRegist);
|
||||
StringBuilder clientIds = new StringBuilder();
|
||||
if (registrationList != null && !registrationList.isEmpty()) {
|
||||
for (RmResourceRegistration registration : registrationList) {
|
||||
if (registration.getClientId() != null) {
|
||||
if (clientIds.length() > 0) {
|
||||
clientIds.append("\n");
|
||||
}
|
||||
clientIds.append(registration.getClientId());
|
||||
}
|
||||
}
|
||||
}
|
||||
rmMonitorConfig.setDeployDevice(clientIds.toString());
|
||||
}
|
||||
List<EpsInitialTrafficData> serverTrafficList = epsInitialTrafficDataService.getServerTrafficByMonitorView(rmMonitorConfig);
|
||||
// 计算结果落入临时表
|
||||
for (EpsInitialTrafficData epsInitialTrafficData : serverTrafficList) {
|
||||
RmMonitorConfigDetails configDetails = new RmMonitorConfigDetails();
|
||||
configDetails.setMonitorId(rmMonitorConfig.getId());
|
||||
configDetails.setCreateTime(epsInitialTrafficData.getCreateTime());
|
||||
// 查询该数据是否存在
|
||||
List<RmMonitorConfigDetails> exitsList = rmMonitorConfigDetailsService.selectRmMonitorConfigDetailsList(configDetails);
|
||||
if(exitsList == null || exitsList.isEmpty()){
|
||||
configDetails.setInSpeed(new BigDecimal(epsInitialTrafficData.getInSpeed() == null ? "0" : epsInitialTrafficData.getInSpeed()));
|
||||
configDetails.setOutSpeed(new BigDecimal(epsInitialTrafficData.getOutSpeed() == null ? "0" : epsInitialTrafficData.getOutSpeed()));
|
||||
configDetails.setDeployDevice(rmMonitorConfig.getDeployDevice());
|
||||
rmMonitorConfigDetailsService.insertRmMonitorConfigDetails(configDetails);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
List<InitialSwitchInfoDetails> switchInfoDetailsList = initialSwitchInfoDetailsService.getMonitorViewDetails(rmMonitorConfig);
|
||||
for (InitialSwitchInfoDetails initialSwitchInfoDetails : switchInfoDetailsList) {
|
||||
RmMonitorConfigDetails configDetails = new RmMonitorConfigDetails();
|
||||
configDetails.setMonitorId(rmMonitorConfig.getId());
|
||||
configDetails.setCreateTime(initialSwitchInfoDetails.getCreateTime());
|
||||
// 查询该数据是否存在
|
||||
List<RmMonitorConfigDetails> exitsList = rmMonitorConfigDetailsService.selectRmMonitorConfigDetailsList(configDetails);
|
||||
if(exitsList == null || exitsList.isEmpty()){
|
||||
configDetails.setInSpeed(initialSwitchInfoDetails.getInSpeed());
|
||||
configDetails.setOutSpeed(initialSwitchInfoDetails.getOutSpeed());
|
||||
configDetails.setDeployDevice(rmMonitorConfig.getDeployDevice());
|
||||
rmMonitorConfigDetailsService.insertRmMonitorConfigDetails(configDetails);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void sumTrafficMyMonitorConfigScheduled() {
|
||||
rmMonitorConfigService.sumTrafficMyMonitorConfig(null);
|
||||
}
|
||||
|
||||
// 每天0点执行 计算95带宽值/日
|
||||
|
||||
+5
-74
@@ -1,18 +1,16 @@
|
||||
package com.ruoyi.system.controller;
|
||||
|
||||
import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||
import com.ruoyi.common.log.annotation.Log;
|
||||
import com.ruoyi.common.log.enums.BusinessType;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.domain.RmMonitorConfigDetails;
|
||||
import com.ruoyi.system.service.IRmMonitorConfigDetailsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -29,73 +27,6 @@ public class RmMonitorConfigDetailsController extends BaseController
|
||||
@Autowired
|
||||
private IRmMonitorConfigDetailsService rmMonitorConfigDetailsService;
|
||||
|
||||
/**
|
||||
* 查询监控看板详情列表
|
||||
*/
|
||||
@RequiresPermissions("system:monitorConfigDetails:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(RmMonitorConfigDetails rmMonitorConfigDetails)
|
||||
{
|
||||
startPage();
|
||||
List<RmMonitorConfigDetails> list = rmMonitorConfigDetailsService.selectRmMonitorConfigDetailsList(rmMonitorConfigDetails);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出监控看板详情列表
|
||||
*/
|
||||
@RequiresPermissions("system:monitorConfigDetails:export")
|
||||
@Log(title = "监控看板详情", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, RmMonitorConfigDetails rmMonitorConfigDetails)
|
||||
{
|
||||
List<RmMonitorConfigDetails> list = rmMonitorConfigDetailsService.selectRmMonitorConfigDetailsList(rmMonitorConfigDetails);
|
||||
ExcelUtil<RmMonitorConfigDetails> util = new ExcelUtil<RmMonitorConfigDetails>(RmMonitorConfigDetails.class);
|
||||
util.exportExcel(response, list, "监控看板详情数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监控看板详情详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:monitorConfigDetails:query")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return success(rmMonitorConfigDetailsService.selectRmMonitorConfigDetailsById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增监控看板详情
|
||||
*/
|
||||
@RequiresPermissions("system:monitorConfigDetails:add")
|
||||
@Log(title = "监控看板详情", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody RmMonitorConfigDetails rmMonitorConfigDetails)
|
||||
{
|
||||
return toAjax(rmMonitorConfigDetailsService.insertRmMonitorConfigDetails(rmMonitorConfigDetails));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改监控看板详情
|
||||
*/
|
||||
@RequiresPermissions("system:monitorConfigDetails:edit")
|
||||
@Log(title = "监控看板详情", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody RmMonitorConfigDetails rmMonitorConfigDetails)
|
||||
{
|
||||
return toAjax(rmMonitorConfigDetailsService.updateRmMonitorConfigDetails(rmMonitorConfigDetails));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除监控看板详情
|
||||
*/
|
||||
@RequiresPermissions("system:monitorConfigDetails:remove")
|
||||
@Log(title = "监控看板详情", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(rmMonitorConfigDetailsService.deleteRmMonitorConfigDetailsByIds(ids));
|
||||
}
|
||||
/**
|
||||
* 监控看板-详情视图 出入流量
|
||||
*/
|
||||
@@ -103,7 +34,7 @@ public class RmMonitorConfigDetailsController extends BaseController
|
||||
@PostMapping("/getTrafficByMonitorView")
|
||||
public AjaxResult getTrafficByMonitorView(@RequestBody RmMonitorConfigDetails queryParam)
|
||||
{
|
||||
Map<String, Object> echartsData = rmMonitorConfigDetailsService.getTrafficByMonitorView(queryParam);
|
||||
List<Map<String, Object>> echartsData = rmMonitorConfigDetailsService.getTrafficByMonitorView(queryParam);
|
||||
return success(echartsData);
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -25,8 +25,8 @@ public class InitialSwitchInfoDetails extends BaseEntity
|
||||
@Excel(name = "客户端ID")
|
||||
private String clientId;
|
||||
|
||||
/** 网络接口名称(如eth0、ens33等) */
|
||||
@Excel(name = "网络接口名称(如eth0、ens33等)")
|
||||
/** 接口名称 */
|
||||
@Excel(name = "接口名称")
|
||||
private String name;
|
||||
|
||||
/** 接收流量(字节) */
|
||||
@@ -41,16 +41,16 @@ public class InitialSwitchInfoDetails extends BaseEntity
|
||||
@Excel(name = "接口状态(up/down等)")
|
||||
private String status;
|
||||
|
||||
/** 接口类型(ethernet/wireless等) */
|
||||
@Excel(name = "接口类型(ethernet/wireless等)")
|
||||
/** 接口类型*/
|
||||
@Excel(name = "接口类型")
|
||||
private String type;
|
||||
|
||||
/** 接收流量(bytes/s) */
|
||||
@Excel(name = "接收流量", readConverterExp = "b=ytes/s")
|
||||
/** 接收流量(bits/s) */
|
||||
@Excel(name = "接收流量")
|
||||
private BigDecimal inSpeed;
|
||||
|
||||
/** 发送流量(bytes/s) */
|
||||
@Excel(name = "发送流量", readConverterExp = "b=ytes/s")
|
||||
/** 发送流量(bits/s) */
|
||||
@Excel(name = "发送流量")
|
||||
private BigDecimal outSpeed;
|
||||
/** 发送或接收流量的最大值 */
|
||||
private BigDecimal maxSpeed;
|
||||
|
||||
+2
-2
@@ -37,11 +37,11 @@ public class RmMonitorConfigDetails extends BaseEntity
|
||||
private BigDecimal outBytes;
|
||||
|
||||
/** 接收流量(bit/s) */
|
||||
@Excel(name = "接收流量", readConverterExp = "b=it/s")
|
||||
@Excel(name = "接收流量bit/s")
|
||||
private BigDecimal inSpeed;
|
||||
|
||||
/** 发送流量(bit/s) */
|
||||
@Excel(name = "发送流量", readConverterExp = "b=it/s")
|
||||
@Excel(name = "发送流量bit/s")
|
||||
private BigDecimal outSpeed;
|
||||
/** 开始时间 */
|
||||
private String startTime;
|
||||
|
||||
+8
-1
@@ -1,7 +1,9 @@
|
||||
package com.ruoyi.system.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.RmMonitorConfigDetails;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 监控看板详情Mapper接口
|
||||
@@ -51,6 +53,8 @@ public interface RmMonitorConfigDetailsMapper
|
||||
*/
|
||||
public int deleteRmMonitorConfigDetailsById(Long id);
|
||||
|
||||
public int deleteRmMonitorConfigDetailsByMonitorIds(Long[] monitorId);
|
||||
|
||||
/**
|
||||
* 批量删除监控看板详情
|
||||
*
|
||||
@@ -58,4 +62,7 @@ public interface RmMonitorConfigDetailsMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRmMonitorConfigDetailsByIds(Long[] ids);
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
int batchInsertRmMonitorConfigDetails(List<RmMonitorConfigDetails> batchInsertList);
|
||||
}
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ public interface IInitialSwitchInfoDetailsService
|
||||
|
||||
/**
|
||||
* 监控看板-详情视图 出入流量
|
||||
* @param initialSwitchInfoDetails
|
||||
* @param rmMonitorConfig
|
||||
* @return
|
||||
*/
|
||||
List<InitialSwitchInfoDetails> getMonitorViewDetails(RmMonitorConfig rmMonitorConfig);
|
||||
|
||||
+3
-1
@@ -66,5 +66,7 @@ public interface IRmMonitorConfigDetailsService
|
||||
* @param queryParam
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> getTrafficByMonitorView(RmMonitorConfigDetails queryParam);
|
||||
List<Map<String, Object>> getTrafficByMonitorView(RmMonitorConfigDetails queryParam);
|
||||
|
||||
int batchInsertRmMonitorConfigDetails(List<RmMonitorConfigDetails> batchInsertList);
|
||||
}
|
||||
|
||||
+6
-1
@@ -1,8 +1,9 @@
|
||||
package com.ruoyi.system.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.system.domain.RmMonitorConfig;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 监控配置Service接口
|
||||
*
|
||||
@@ -58,4 +59,8 @@ public interface IRmMonitorConfigService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRmMonitorConfigById(Long id);
|
||||
|
||||
public void sumTrafficMyMonitorConfig(Long id);
|
||||
|
||||
void asyncAfterInsert(Long id);
|
||||
}
|
||||
|
||||
-3
@@ -7,7 +7,6 @@ import com.ruoyi.system.domain.*;
|
||||
import com.ruoyi.system.enums.ReviewEnum;
|
||||
import com.ruoyi.system.mapper.*;
|
||||
import com.ruoyi.system.service.EpsInitialTrafficDataService;
|
||||
import com.ruoyi.system.service.IRmMonitorConfigService;
|
||||
import com.ruoyi.system.util.CalculateUtil;
|
||||
import com.ruoyi.system.util.DateUtil;
|
||||
import com.ruoyi.system.util.TableRouterUtil;
|
||||
@@ -53,8 +52,6 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
|
||||
@Autowired
|
||||
private RmRegistrationMachineMapper rmRegistrationMachineMapper;
|
||||
@Autowired
|
||||
private IRmMonitorConfigService rmMonitorConfigService;
|
||||
@Autowired
|
||||
private RmResourceRegistrationMapper rmResourceRegistrationMapper;
|
||||
@Override
|
||||
public void createNextMonthTables() {
|
||||
|
||||
+20
-26
@@ -5,7 +5,6 @@ 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.RmMonitorConfig;
|
||||
import com.ruoyi.system.domain.RmSwitchManagement;
|
||||
import com.ruoyi.system.mapper.EpsNodeBandwidthMapper;
|
||||
import com.ruoyi.system.mapper.RmSwitchManagementMapper;
|
||||
@@ -334,32 +333,27 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService
|
||||
*/
|
||||
@Override
|
||||
public List<EpsNodeBandwidth> getListByMonitorView(EpsNodeBandwidth epsNodeBandwidth) {
|
||||
// 查询概览配置内容
|
||||
RmMonitorConfig rmMonitorConfig = rmMonitorConfigService.selectRmMonitorConfigById(epsNodeBandwidth.getMonitorId());
|
||||
if(rmMonitorConfig != null){
|
||||
// 拿到部署设备
|
||||
String deoloyDevice = rmMonitorConfig.getDeployDevice();
|
||||
if(deoloyDevice == null){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
String clientIds = deoloyDevice.replace("\n",",");
|
||||
epsNodeBandwidth.setClientIds(clientIds);
|
||||
if(epsNodeBandwidth.getCalculationMode() == null){
|
||||
// 计算方式 默认1000
|
||||
epsNodeBandwidth.setCalculationMode("1000");
|
||||
}
|
||||
if(epsNodeBandwidth.getResourceType() == null){
|
||||
// 资源类型 默认服务器
|
||||
epsNodeBandwidth.setResourceType("1");
|
||||
}
|
||||
if(epsNodeBandwidth.getBandwidthType() == null){
|
||||
// 默认日95值
|
||||
epsNodeBandwidth.setBandwidthType("1");
|
||||
}
|
||||
List<EpsNodeBandwidth> list = epsNodeBandwidthMapper.getListByMonitorView(epsNodeBandwidth);
|
||||
return list;
|
||||
// 拿到部署设备
|
||||
String deoloyDevice = epsNodeBandwidth.getClientIds();
|
||||
if(deoloyDevice == null){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
String clientIds = deoloyDevice.replace("\n",",");
|
||||
epsNodeBandwidth.setClientIds(clientIds);
|
||||
if(epsNodeBandwidth.getCalculationMode() == null){
|
||||
// 计算方式 默认1000
|
||||
epsNodeBandwidth.setCalculationMode("1000");
|
||||
}
|
||||
if(epsNodeBandwidth.getResourceType() == null){
|
||||
// 资源类型 默认服务器
|
||||
epsNodeBandwidth.setResourceType("1");
|
||||
}
|
||||
if(epsNodeBandwidth.getBandwidthType() == null){
|
||||
// 默认日95值
|
||||
epsNodeBandwidth.setBandwidthType("1");
|
||||
}
|
||||
List<EpsNodeBandwidth> list = epsNodeBandwidthMapper.getListByMonitorView(epsNodeBandwidth);
|
||||
return list;
|
||||
}
|
||||
|
||||
// 动态生成复合键
|
||||
|
||||
+22
-28
@@ -10,7 +10,6 @@ import com.ruoyi.system.domain.*;
|
||||
import com.ruoyi.system.enums.ReviewEnum;
|
||||
import com.ruoyi.system.mapper.*;
|
||||
import com.ruoyi.system.service.IInitialSwitchInfoDetailsService;
|
||||
import com.ruoyi.system.service.IRmMonitorConfigService;
|
||||
import com.ruoyi.system.util.CalculateUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -61,7 +60,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
||||
@Autowired
|
||||
private EpsBusinessDeployMapper epsBusinessDeployMapper;
|
||||
@Autowired
|
||||
private IRmMonitorConfigService rmMonitorConfigService;
|
||||
private RmMonitorConfigMapper rmMonitorConfigMapper;
|
||||
|
||||
private static final String DATE_TIME_FORMATTER = "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
@@ -965,32 +964,27 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
||||
*/
|
||||
@Override
|
||||
public List<InitialSwitchInfoDetails> geSwitchListByMonitorView(InitialSwitchInfoDetails initialSwitchInfoDetails) {
|
||||
// 查询概览配置内容
|
||||
RmMonitorConfig rmMonitorConfig = rmMonitorConfigService.selectRmMonitorConfigById(initialSwitchInfoDetails.getMonitorId());
|
||||
if(rmMonitorConfig != null){
|
||||
// 拿到选中的交换机
|
||||
String resources = rmMonitorConfig.getDeployDevice();
|
||||
String clientIds = Arrays.stream(resources.split(","))
|
||||
.map(msg -> msg.split(";"))
|
||||
.filter(resource -> resource.length >= 3)
|
||||
.map(resource -> resource[1])
|
||||
.collect(Collectors.joining(","));
|
||||
String interfaceNames = Arrays.stream(resources.split(","))
|
||||
.map(msg -> msg.split(";"))
|
||||
.filter(resource -> resource.length >= 3)
|
||||
.map(resource -> resource[2])
|
||||
.collect(Collectors.joining(","));
|
||||
// 查询流量信息
|
||||
initialSwitchInfoDetails.setClientIds(clientIds);
|
||||
initialSwitchInfoDetails.setInterfaceNames(interfaceNames);
|
||||
PageDomain pageDomain = new PageDomain();
|
||||
pageDomain.setPageNum(initialSwitchInfoDetails.getPageNum());
|
||||
pageDomain.setPageSize(initialSwitchInfoDetails.getPageSize());
|
||||
startPage(pageDomain);
|
||||
List<InitialSwitchInfoDetails> list = initialSwitchInfoDetailsMapper.geSwitchListByMonitorView(initialSwitchInfoDetails);
|
||||
return list;
|
||||
}
|
||||
return new ArrayList<>();
|
||||
// 拿到选中的交换机
|
||||
String resources = initialSwitchInfoDetails.getClientIds();
|
||||
String clientIds = Arrays.stream(resources.split(","))
|
||||
.map(msg -> msg.split(";"))
|
||||
.filter(resource -> resource.length >= 3)
|
||||
.map(resource -> resource[1])
|
||||
.collect(Collectors.joining(","));
|
||||
String interfaceNames = Arrays.stream(resources.split(","))
|
||||
.map(msg -> msg.split(";"))
|
||||
.filter(resource -> resource.length >= 3)
|
||||
.map(resource -> resource[2])
|
||||
.collect(Collectors.joining(","));
|
||||
// 查询流量信息
|
||||
initialSwitchInfoDetails.setClientIds(clientIds);
|
||||
initialSwitchInfoDetails.setInterfaceNames(interfaceNames);
|
||||
PageDomain pageDomain = new PageDomain();
|
||||
pageDomain.setPageNum(initialSwitchInfoDetails.getPageNum());
|
||||
pageDomain.setPageSize(initialSwitchInfoDetails.getPageSize());
|
||||
startPage(pageDomain);
|
||||
List<InitialSwitchInfoDetails> list = initialSwitchInfoDetailsMapper.geSwitchListByMonitorView(initialSwitchInfoDetails);
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+40
-6
@@ -8,15 +8,13 @@ import com.ruoyi.system.domain.RmMonitorConfigDetails;
|
||||
import com.ruoyi.system.mapper.RmMonitorConfigDetailsMapper;
|
||||
import com.ruoyi.system.mapper.RmMonitorConfigMapper;
|
||||
import com.ruoyi.system.service.IRmMonitorConfigDetailsService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
@@ -113,14 +111,41 @@ public class RmMonitorConfigDetailsServiceImpl implements IRmMonitorConfigDetail
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> getTrafficByMonitorView(RmMonitorConfigDetails queryParam) {
|
||||
public List<Map<String, Object>> getTrafficByMonitorView(RmMonitorConfigDetails queryParam) {
|
||||
List<Map<String, Object>> resultMapList = new ArrayList<>();
|
||||
if(queryParam.getMonitorId() != null){
|
||||
// 根据id查询配置信息
|
||||
RmMonitorConfig rmMonitorConfig = rmMonitorConfigMapper.selectRmMonitorConfigById(queryParam.getMonitorId());
|
||||
Map<String, Object> map = processViewData(queryParam);
|
||||
map.put("rmMonitorConfig", rmMonitorConfig);
|
||||
resultMapList.add(map);
|
||||
}else{
|
||||
// 查询所有配置
|
||||
List<RmMonitorConfig> rmMonitorConfigs = rmMonitorConfigMapper.selectRmMonitorConfigList(new RmMonitorConfig());
|
||||
if (rmMonitorConfigs != null && !rmMonitorConfigs.isEmpty()) {
|
||||
for (RmMonitorConfig rmMonitorConfig : rmMonitorConfigs) {
|
||||
RmMonitorConfigDetails rmMonitorConfigDetails = new RmMonitorConfigDetails();
|
||||
BeanUtils.copyProperties(queryParam, rmMonitorConfigDetails);
|
||||
rmMonitorConfigDetails.setMonitorId(rmMonitorConfig.getId());
|
||||
Map<String, Object> map = processViewData(rmMonitorConfigDetails);
|
||||
map.put("rmMonitorConfig", rmMonitorConfig);
|
||||
resultMapList.add(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
return resultMapList;
|
||||
}
|
||||
|
||||
public Map<String, Object> processViewData(RmMonitorConfigDetails queryParam){
|
||||
// 查询概览配置内容
|
||||
RmMonitorConfig rmMonitorConfig = rmMonitorConfigMapper.selectRmMonitorConfigById(queryParam.getMonitorId());
|
||||
if(rmMonitorConfig != null){
|
||||
// 拿到开始时间
|
||||
String startTime = rmMonitorConfig.getMonitorStartTime();
|
||||
queryParam.setStartTime(startTime);
|
||||
if(queryParam.getEndTime() == null){
|
||||
queryParam.setEndTime(DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss"));
|
||||
}
|
||||
List<RmMonitorConfigDetails> list = rmMonitorConfigDetailsMapper.selectRmMonitorConfigDetailsList(queryParam);
|
||||
if(list == null){
|
||||
list = new ArrayList<>();
|
||||
@@ -141,6 +166,10 @@ public class RmMonitorConfigDetailsServiceImpl implements IRmMonitorConfigDetail
|
||||
info != null && info.getInSpeed() != null ?
|
||||
info.getInSpeed().divide(divisor, 2, RoundingMode.HALF_UP) :
|
||||
0);
|
||||
extractors.put("deployDevice", info ->
|
||||
info != null && info.getDeployDevice() != null ?
|
||||
info.getDeployDevice() :
|
||||
null);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, RmMonitorConfigDetails::getCreateTime, extractors, queryParam.getStartTime(), queryParam.getEndTime()
|
||||
);
|
||||
@@ -150,6 +179,11 @@ public class RmMonitorConfigDetailsServiceImpl implements IRmMonitorConfigDetail
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int batchInsertRmMonitorConfigDetails(List<RmMonitorConfigDetails> batchInsertList) {
|
||||
return rmMonitorConfigDetailsMapper.batchInsertRmMonitorConfigDetails(batchInsertList);
|
||||
}
|
||||
}
|
||||
|
||||
+151
-8
@@ -1,12 +1,22 @@
|
||||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.system.domain.*;
|
||||
import com.ruoyi.system.mapper.RmMonitorConfigDetailsMapper;
|
||||
import com.ruoyi.system.mapper.RmMonitorConfigMapper;
|
||||
import com.ruoyi.system.domain.RmMonitorConfig;
|
||||
import com.ruoyi.system.mapper.RmResourceRegistrationMapper;
|
||||
import com.ruoyi.system.service.EpsInitialTrafficDataService;
|
||||
import com.ruoyi.system.service.IInitialSwitchInfoDetailsService;
|
||||
import com.ruoyi.system.service.IRmMonitorConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 监控配置Service业务层处理
|
||||
@@ -15,10 +25,22 @@ import com.ruoyi.system.service.IRmMonitorConfigService;
|
||||
* @date 2025-11-12
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class RmMonitorConfigServiceImpl implements IRmMonitorConfigService
|
||||
{
|
||||
@Autowired
|
||||
private RmMonitorConfigMapper rmMonitorConfigMapper;
|
||||
@Autowired
|
||||
private RmMonitorConfigDetailsMapper rmMonitorConfigDetailsMapper;
|
||||
@Autowired
|
||||
private EpsInitialTrafficDataService epsInitialTrafficDataService;
|
||||
@Autowired
|
||||
private IInitialSwitchInfoDetailsService initialSwitchInfoDetailsService;
|
||||
@Autowired
|
||||
private RmResourceRegistrationMapper rmResourceRegistrationMapper;
|
||||
@Autowired
|
||||
@Lazy
|
||||
private IRmMonitorConfigService self;
|
||||
|
||||
/**
|
||||
* 查询监控配置
|
||||
@@ -29,7 +51,8 @@ public class RmMonitorConfigServiceImpl implements IRmMonitorConfigService
|
||||
@Override
|
||||
public RmMonitorConfig selectRmMonitorConfigById(Long id)
|
||||
{
|
||||
return rmMonitorConfigMapper.selectRmMonitorConfigById(id);
|
||||
RmMonitorConfig rmMonitorConfig = rmMonitorConfigMapper.selectRmMonitorConfigById(id);
|
||||
return rmMonitorConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -41,7 +64,8 @@ public class RmMonitorConfigServiceImpl implements IRmMonitorConfigService
|
||||
@Override
|
||||
public List<RmMonitorConfig> selectRmMonitorConfigList(RmMonitorConfig rmMonitorConfig)
|
||||
{
|
||||
return rmMonitorConfigMapper.selectRmMonitorConfigList(rmMonitorConfig);
|
||||
List<RmMonitorConfig> list = rmMonitorConfigMapper.selectRmMonitorConfigList(rmMonitorConfig);
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,7 +78,21 @@ public class RmMonitorConfigServiceImpl implements IRmMonitorConfigService
|
||||
public int insertRmMonitorConfig(RmMonitorConfig rmMonitorConfig)
|
||||
{
|
||||
rmMonitorConfig.setCreateTime(DateUtils.getNowDate());
|
||||
return rmMonitorConfigMapper.insertRmMonitorConfig(rmMonitorConfig);
|
||||
rmMonitorConfigMapper.insertRmMonitorConfig(rmMonitorConfig);
|
||||
// 异步触发流量汇总
|
||||
self.asyncAfterInsert(rmMonitorConfig.getId());
|
||||
return 1;
|
||||
}
|
||||
@Async
|
||||
@Override
|
||||
public void asyncAfterInsert(Long monitorConfigId) {
|
||||
try {
|
||||
log.info("开始异步处理监控配置 {} 的流量汇总", monitorConfigId);
|
||||
sumTrafficMyMonitorConfig(monitorConfigId);
|
||||
log.info("监控配置 {} 流量汇总完成", monitorConfigId);
|
||||
} catch (Exception e) {
|
||||
log.error("监控配置 {} 流量汇总异常", monitorConfigId, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,7 +117,10 @@ public class RmMonitorConfigServiceImpl implements IRmMonitorConfigService
|
||||
@Override
|
||||
public int deleteRmMonitorConfigByIds(Long[] ids)
|
||||
{
|
||||
return rmMonitorConfigMapper.deleteRmMonitorConfigByIds(ids);
|
||||
int configRows = rmMonitorConfigMapper.deleteRmMonitorConfigByIds(ids);
|
||||
// 删除详情
|
||||
rmMonitorConfigDetailsMapper.deleteRmMonitorConfigDetailsByMonitorIds(ids);
|
||||
return configRows;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,4 +134,106 @@ public class RmMonitorConfigServiceImpl implements IRmMonitorConfigService
|
||||
{
|
||||
return rmMonitorConfigMapper.deleteRmMonitorConfigById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置好的数据求和
|
||||
*/
|
||||
@Override
|
||||
public void sumTrafficMyMonitorConfig(Long id) {
|
||||
List<RmMonitorConfig> rmMonitorConfigList = new ArrayList<>();
|
||||
if(id != null){
|
||||
RmMonitorConfig rmMonitorConfig = rmMonitorConfigMapper.selectRmMonitorConfigById(id);
|
||||
rmMonitorConfigList.add(rmMonitorConfig);
|
||||
}else{
|
||||
// 查询所有配置
|
||||
rmMonitorConfigList = rmMonitorConfigMapper.selectRmMonitorConfigList(new RmMonitorConfig());
|
||||
}
|
||||
if (rmMonitorConfigList == null || rmMonitorConfigList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
for (RmMonitorConfig rmMonitorConfig : rmMonitorConfigList) {
|
||||
// 判断资源类型
|
||||
if("1".equals(rmMonitorConfig.getResourceType()) || "3".equals(rmMonitorConfig.getResourceType())){
|
||||
if("3".equals(rmMonitorConfig.getResourceType())){
|
||||
if(rmMonitorConfig.getBusinessName() == null){
|
||||
log.warn("不存在业务");
|
||||
continue;
|
||||
}
|
||||
// 根据业务代码查询服务器clientId
|
||||
RmResourceRegistration queryRegist = new RmResourceRegistration();
|
||||
queryRegist.setBusinessName(rmMonitorConfig.getBusinessName());
|
||||
List<RmResourceRegistration> registrationList = rmResourceRegistrationMapper.getRegistrationTableInfoList(queryRegist);
|
||||
StringBuilder clientIds = new StringBuilder();
|
||||
if (registrationList != null && !registrationList.isEmpty()) {
|
||||
for (RmResourceRegistration registration : registrationList) {
|
||||
if (registration.getClientId() != null) {
|
||||
if (clientIds.length() > 0) {
|
||||
clientIds.append("\n");
|
||||
}
|
||||
clientIds.append(registration.getClientId());
|
||||
}
|
||||
}
|
||||
}
|
||||
rmMonitorConfig.setDeployDevice(clientIds.toString());
|
||||
}
|
||||
List<EpsInitialTrafficData> serverTrafficList = epsInitialTrafficDataService.getServerTrafficByMonitorView(rmMonitorConfig);
|
||||
RmMonitorConfigDetails configDetailsQuery = new RmMonitorConfigDetails();
|
||||
configDetailsQuery.setMonitorId(rmMonitorConfig.getId());
|
||||
// 查询该数据是否存在
|
||||
List<RmMonitorConfigDetails> exitsList = rmMonitorConfigDetailsMapper.selectRmMonitorConfigDetailsList(configDetailsQuery);
|
||||
// 将已存在记录的时间转换为Set便于快速查找
|
||||
Set<Date> existingTimeSet = exitsList.stream()
|
||||
.map(RmMonitorConfigDetails::getCreateTime)
|
||||
.collect(Collectors.toSet());
|
||||
// 批量准备插入数据
|
||||
List<RmMonitorConfigDetails> batchInsertList = new ArrayList<>();
|
||||
// 计算结果落入临时表
|
||||
for (EpsInitialTrafficData epsInitialTrafficData : serverTrafficList) {
|
||||
// 使用Set快速判断是否存在,替代数据库查询
|
||||
if (!existingTimeSet.contains(epsInitialTrafficData.getCreateTime())) {
|
||||
RmMonitorConfigDetails configDetails = new RmMonitorConfigDetails();
|
||||
configDetails.setMonitorId(rmMonitorConfig.getId());
|
||||
configDetails.setCreateTime(epsInitialTrafficData.getCreateTime());
|
||||
configDetails.setInSpeed(new BigDecimal(epsInitialTrafficData.getInSpeed() == null ? "0" : epsInitialTrafficData.getInSpeed()));
|
||||
configDetails.setOutSpeed(new BigDecimal(epsInitialTrafficData.getOutSpeed() == null ? "0" : epsInitialTrafficData.getOutSpeed()));
|
||||
configDetails.setDeployDevice(rmMonitorConfig.getDeployDevice());
|
||||
batchInsertList.add(configDetails);
|
||||
}
|
||||
}
|
||||
// 批量插入
|
||||
if(!batchInsertList.isEmpty()){
|
||||
rmMonitorConfigDetailsMapper.batchInsertRmMonitorConfigDetails(batchInsertList);
|
||||
}
|
||||
}else{
|
||||
List<InitialSwitchInfoDetails> switchInfoDetailsList = initialSwitchInfoDetailsService.getMonitorViewDetails(rmMonitorConfig);
|
||||
RmMonitorConfigDetails configDetailsQuery = new RmMonitorConfigDetails();
|
||||
configDetailsQuery.setMonitorId(rmMonitorConfig.getId());
|
||||
// 查询该数据是否存在
|
||||
List<RmMonitorConfigDetails> exitsList = rmMonitorConfigDetailsMapper.selectRmMonitorConfigDetailsList(configDetailsQuery);
|
||||
// 将已存在记录的时间转换为Set便于快速查找
|
||||
Set<Date> existingTimeSet = exitsList.stream()
|
||||
.map(RmMonitorConfigDetails::getCreateTime)
|
||||
.collect(Collectors.toSet());
|
||||
// 批量准备插入数据
|
||||
List<RmMonitorConfigDetails> batchInsertList = new ArrayList<>();
|
||||
for (InitialSwitchInfoDetails initialSwitchInfoDetails : switchInfoDetailsList) {
|
||||
// 使用Set快速判断是否存在,替代数据库查询
|
||||
if (!existingTimeSet.contains(initialSwitchInfoDetails.getCreateTime())) {
|
||||
RmMonitorConfigDetails configDetails = new RmMonitorConfigDetails();
|
||||
configDetails.setMonitorId(rmMonitorConfig.getId());
|
||||
configDetails.setCreateTime(initialSwitchInfoDetails.getCreateTime());
|
||||
configDetails.setInSpeed(initialSwitchInfoDetails.getInSpeed());
|
||||
configDetails.setOutSpeed(initialSwitchInfoDetails.getOutSpeed());
|
||||
configDetails.setDeployDevice(rmMonitorConfig.getDeployDevice());
|
||||
batchInsertList.add(configDetails);
|
||||
}
|
||||
// 批量插入
|
||||
if(!batchInsertList.isEmpty()){
|
||||
rmMonitorConfigDetailsMapper.batchInsertRmMonitorConfigDetails(batchInsertList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ public class RmSwitchManagementServiceImpl implements IRmSwitchManagementService
|
||||
interfaceName.getId().toString(),
|
||||
clientId,
|
||||
interfaceName.getInterfaceName(),
|
||||
switchName
|
||||
switchName, switchManagement.getId().toString()
|
||||
);
|
||||
interfaceName.setValue(valueStr);
|
||||
interfaceName.setLabel(interfaceName.getInterfaceName());
|
||||
|
||||
+25
@@ -94,4 +94,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
<delete id="deleteRmMonitorConfigDetailsByMonitorIds" parameterType="Long">
|
||||
delete from rm_monitor_config_details where monitor_id in
|
||||
<foreach item="monitorId" collection="array" open="(" separator="," close=")">
|
||||
#{monitorId}
|
||||
</foreach>
|
||||
</delete>
|
||||
<insert id="batchInsertRmMonitorConfigDetails" parameterType="java.util.List">
|
||||
insert IGNORE into rm_monitor_config_details
|
||||
(monitor_id, deploy_device, in_bytes, out_bytes, in_speed, out_speed, create_by, update_by, create_time, update_time)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.monitorId},
|
||||
#{item.deployDevice},
|
||||
#{item.inBytes},
|
||||
#{item.outBytes},
|
||||
#{item.inSpeed},
|
||||
#{item.outSpeed},
|
||||
#{item.createBy},
|
||||
#{item.updateBy},
|
||||
#{item.createTime},
|
||||
#{item.updateTime}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user