优化图形分析单位、服务器流量业务表逻辑
This commit is contained in:
+1
-1
@@ -49,7 +49,7 @@ public class EchartsDataUtils {
|
|||||||
* 微秒转秒
|
* 微秒转秒
|
||||||
*/
|
*/
|
||||||
public static double convertMicrosecondsToSeconds(long microseconds) {
|
public static double convertMicrosecondsToSeconds(long microseconds) {
|
||||||
return microseconds / 1_000_000.0;
|
return Math.round(microseconds / 1_000_000.0 * 100.0) / 100.0;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 构建ECharts图表数据(带时间补全和0值填充)
|
* 构建ECharts图表数据(带时间补全和0值填充)
|
||||||
|
|||||||
+87
@@ -2,17 +2,44 @@ package com.ruoyi.common.core.utils;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class UnitChangeUtil {
|
public class UnitChangeUtil {
|
||||||
|
|
||||||
private static final double GB = 1024.0 * 1024.0 * 1024.0;
|
private static final double GB = 1024.0 * 1024.0 * 1024.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* long类型字节转化为Gb
|
||||||
|
* @param bytes
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static double bytesToGb(long bytes) {
|
public static double bytesToGb(long bytes) {
|
||||||
double gb = bytes / GB;
|
double gb = bytes / GB;
|
||||||
BigDecimal bd = new BigDecimal(gb);
|
BigDecimal bd = new BigDecimal(gb);
|
||||||
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
||||||
return bd.doubleValue();
|
return bd.doubleValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String类型字节转化为Gb
|
||||||
|
* @param bytes
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static BigDecimal bytesToGb(String bytes) {
|
||||||
|
// 参数校验
|
||||||
|
if (bytes == null || bytes.trim().isEmpty()) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
BigDecimal bytesValue = new BigDecimal(bytes);
|
||||||
|
BigDecimal bd = bytesValue.divide(BigDecimal.valueOf(GB), 2, RoundingMode.HALF_UP);
|
||||||
|
return bd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Kb转化为Gb
|
||||||
|
* @param kbValue
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static double convertKbToGb(String kbValue) {
|
public static double convertKbToGb(String kbValue) {
|
||||||
if (kbValue == null || kbValue.trim().isEmpty()) {
|
if (kbValue == null || kbValue.trim().isEmpty()) {
|
||||||
throw new IllegalArgumentException("KB值不能为空");
|
throw new IllegalArgumentException("KB值不能为空");
|
||||||
@@ -26,4 +53,64 @@ public class UnitChangeUtil {
|
|||||||
return bd.doubleValue();
|
return bd.doubleValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工具方法:将毫秒值转换为运行时长
|
||||||
|
* @param uptimeMillis
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String formatUptime(long uptimeMillis) {
|
||||||
|
if (uptimeMillis <= 0) {
|
||||||
|
return "0秒";
|
||||||
|
}
|
||||||
|
|
||||||
|
long days = TimeUnit.MILLISECONDS.toDays(uptimeMillis);
|
||||||
|
long hours = TimeUnit.MILLISECONDS.toHours(uptimeMillis) % 24;
|
||||||
|
long minutes = TimeUnit.MILLISECONDS.toMinutes(uptimeMillis) % 60;
|
||||||
|
long seconds = TimeUnit.MILLISECONDS.toSeconds(uptimeMillis) % 60;
|
||||||
|
|
||||||
|
long months = days / 30;
|
||||||
|
days = days % 30;
|
||||||
|
|
||||||
|
return String.format("%d个月%d天%d小时%d分%d秒", months, days, hours, minutes, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工具方法- 将秒值转换为运行时长
|
||||||
|
* @param uptimeSeconds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String formatUptimeSeconds(long uptimeSeconds) {
|
||||||
|
if (uptimeSeconds <= 0) {
|
||||||
|
return "0秒";
|
||||||
|
}
|
||||||
|
|
||||||
|
long days = TimeUnit.SECONDS.toDays(uptimeSeconds);
|
||||||
|
long hours = TimeUnit.SECONDS.toHours(uptimeSeconds) % 24;
|
||||||
|
long minutes = TimeUnit.SECONDS.toMinutes(uptimeSeconds) % 60;
|
||||||
|
long seconds = uptimeSeconds % 60;
|
||||||
|
|
||||||
|
long months = days / 30;
|
||||||
|
days = days % 30;
|
||||||
|
|
||||||
|
return String.format("%d个月%d天%d小时%d分%d秒", months, days, hours, minutes, seconds);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 将字符串小数值格式化为保留两位小数(高精度)
|
||||||
|
* @param numberStr 数字字符串
|
||||||
|
* @return 保留两位小数的字符串,如果转换失败返回原字符串
|
||||||
|
*/
|
||||||
|
public static String formatDecimal(String numberStr) {
|
||||||
|
if (numberStr == null || numberStr.trim().isEmpty()) {
|
||||||
|
return numberStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
BigDecimal number = new BigDecimal(numberStr);
|
||||||
|
return number.setScale(1, RoundingMode.HALF_UP).toString();
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return numberStr; // 转换失败返回原字符串
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -19,6 +19,13 @@ public interface EpsBusinessMapper
|
|||||||
* @return 业务信息
|
* @return 业务信息
|
||||||
*/
|
*/
|
||||||
public EpsBusiness selectEpsBusinessById(String id);
|
public EpsBusiness selectEpsBusinessById(String id);
|
||||||
|
/**
|
||||||
|
* 查询业务代码
|
||||||
|
*
|
||||||
|
* @param businessName 业务名称
|
||||||
|
* @return 业务信息
|
||||||
|
*/
|
||||||
|
public EpsBusiness selectEpsBusinessByName(String businessName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询业务信息列表
|
* 查询业务信息列表
|
||||||
|
|||||||
+1
@@ -72,6 +72,7 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService
|
|||||||
public PageInfo<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime) {
|
public PageInfo<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime) {
|
||||||
// 设置查询条件
|
// 设置查询条件
|
||||||
EpsInitialTrafficData queryParams = new EpsInitialTrafficData();
|
EpsInitialTrafficData queryParams = new EpsInitialTrafficData();
|
||||||
|
queryParams.setClientId(epsNodeBandwidth.getClientId());
|
||||||
queryParams.setServiceSn(epsNodeBandwidth.getHardwareSn());
|
queryParams.setServiceSn(epsNodeBandwidth.getHardwareSn());
|
||||||
queryParams.setBusinessId(epsNodeBandwidth.getBusinessId());
|
queryParams.setBusinessId(epsNodeBandwidth.getBusinessId());
|
||||||
queryParams.setStartTime(dailyStartTime);
|
queryParams.setStartTime(dailyStartTime);
|
||||||
|
|||||||
+20
-23
@@ -4,13 +4,8 @@ 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.utils.StringUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||||
import com.ruoyi.system.domain.AllInterfaceName;
|
import com.ruoyi.system.domain.*;
|
||||||
import com.ruoyi.system.domain.EpsInitialTrafficData;
|
import com.ruoyi.system.mapper.*;
|
||||||
import com.ruoyi.system.domain.EpsMethodChangeRecord;
|
|
||||||
import com.ruoyi.system.domain.EpsServerRevenueConfig;
|
|
||||||
import com.ruoyi.system.mapper.AllInterfaceNameMapper;
|
|
||||||
import com.ruoyi.system.mapper.EpsMethodChangeRecordMapper;
|
|
||||||
import com.ruoyi.system.mapper.EpsServerRevenueConfigMapper;
|
|
||||||
import com.ruoyi.system.service.EpsInitialTrafficDataService;
|
import com.ruoyi.system.service.EpsInitialTrafficDataService;
|
||||||
import com.ruoyi.system.service.IEpsServerRevenueConfigService;
|
import com.ruoyi.system.service.IEpsServerRevenueConfigService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -18,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.dao.DuplicateKeyException;
|
import org.springframework.dao.DuplicateKeyException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,6 +33,10 @@ public class EpsServerRevenueConfigServiceImpl implements IEpsServerRevenueConfi
|
|||||||
private EpsMethodChangeRecordMapper epsMethodChangeRecordMapper;
|
private EpsMethodChangeRecordMapper epsMethodChangeRecordMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AllInterfaceNameMapper allInterfaceNameMapper;
|
private AllInterfaceNameMapper allInterfaceNameMapper;
|
||||||
|
@Autowired
|
||||||
|
private RmResourceRegistrationMapper rmResourceRegistrationMapper;
|
||||||
|
@Autowired
|
||||||
|
private EpsBusinessMapper epsBusinessMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询服务器收益方式配置
|
* 查询服务器收益方式配置
|
||||||
@@ -173,21 +171,20 @@ public class EpsServerRevenueConfigServiceImpl implements IEpsServerRevenueConfi
|
|||||||
List<EpsInitialTrafficData> dataList = epsInitialTrafficDataService.getAllTraficMsg(epsInitialTrafficData);
|
List<EpsInitialTrafficData> dataList = epsInitialTrafficDataService.getAllTraficMsg(epsInitialTrafficData);
|
||||||
List<EpsInitialTrafficData> batchList = new ArrayList<>();
|
List<EpsInitialTrafficData> batchList = new ArrayList<>();
|
||||||
for (EpsInitialTrafficData initialTrafficData : dataList) {
|
for (EpsInitialTrafficData initialTrafficData : dataList) {
|
||||||
// 根据clientId查询节点名称
|
// 根据clientId查询业务名称
|
||||||
Map nodeMsg = epsServerRevenueConfigMapper.getNodeMsgBySn(initialTrafficData.getClientId());
|
RmResourceRegistration rmResourceRegistration = new RmResourceRegistration();
|
||||||
// 赋值
|
rmResourceRegistration.setClientId(initialTrafficData.getClientId());
|
||||||
if(nodeMsg != null){
|
List<RmResourceRegistration> registerLst = rmResourceRegistrationMapper.selectRmResourceRegistrationList(rmResourceRegistration);
|
||||||
initialTrafficData.setServiceSn(getNullableString(nodeMsg, "hardwareSn"));
|
if(registerLst != null && !registerLst.isEmpty()){
|
||||||
initialTrafficData.setNodeName(getNullableString(nodeMsg, "resourceName"));
|
RmResourceRegistration registerMsg = registerLst.get(0);
|
||||||
initialTrafficData.setRevenueMethod(getNullableString(nodeMsg, "revenueMethod"));
|
// 赋值
|
||||||
initialTrafficData.setBusinessId(getNullableString(nodeMsg, "businessCode"));
|
if(registerMsg != null){
|
||||||
initialTrafficData.setBusinessName(getNullableString(nodeMsg, "businessName"));
|
// 根据业务名称查询业务代码
|
||||||
if("2".equals(nodeMsg.get("revenueMethod") + "")
|
EpsBusiness epsBusiness = epsBusinessMapper.selectEpsBusinessByName(registerMsg.getBusinessName());
|
||||||
&& nodeMsg.containsKey("packageBandwidth")){
|
initialTrafficData.setServiceSn(registerMsg.getHardwareSn());
|
||||||
Object bandwidth = nodeMsg.get("packageBandwidth");
|
initialTrafficData.setRevenueMethod("1");
|
||||||
if (bandwidth instanceof BigDecimal) {
|
initialTrafficData.setBusinessId(epsBusiness.getId());
|
||||||
initialTrafficData.setPackageBandwidth((BigDecimal) bandwidth);
|
initialTrafficData.setBusinessName(registerMsg.getBusinessName());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// id自增
|
// id自增
|
||||||
|
|||||||
@@ -31,6 +31,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where id = #{id}
|
where id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectEpsBusinessByName" parameterType="String" resultMap="EpsBusinessResult">
|
||||||
|
<include refid="selectEpsBusinessVo"/>
|
||||||
|
where business_name = #{businessName}
|
||||||
|
limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertEpsBusiness" parameterType="EpsBusiness">
|
<insert id="insertEpsBusiness" parameterType="EpsBusiness">
|
||||||
insert into eps_business
|
insert into eps_business
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|||||||
+16
-3
@@ -115,6 +115,19 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
|||||||
// 如果返回null,初始化一个空的Map
|
// 如果返回null,初始化一个空的Map
|
||||||
if (map == null) {
|
if (map == null) {
|
||||||
map = new HashMap<>();
|
map = new HashMap<>();
|
||||||
|
}else{
|
||||||
|
String totalMem = String.valueOf(map.getOrDefault("memorySizeTotalCollect", "0"));
|
||||||
|
map.put("memorySizeTotalCollect",
|
||||||
|
"0".equals(totalMem) ? null : UnitChangeUtil.convertKbToGb(totalMem));
|
||||||
|
String freeMem = String.valueOf(map.getOrDefault("systemDiskSizeTotalCollect", "0"));
|
||||||
|
map.put("systemDiskSizeTotalCollect",
|
||||||
|
"0".equals(freeMem) ? null : UnitChangeUtil.bytesToGb(freeMem));
|
||||||
|
String boottime = String.valueOf(map.getOrDefault("systemBoottimeCollect", "0"));
|
||||||
|
map.put("systemBoottimeCollect",
|
||||||
|
"0".equals(boottime) ? null : UnitChangeUtil.formatUptime(Long.parseLong(boottime)));
|
||||||
|
String uptime = String.valueOf(map.getOrDefault("systemUptimeCollect", "0"));
|
||||||
|
map.put("systemUptimeCollect",
|
||||||
|
"0".equals(uptime) ? null : UnitChangeUtil.formatUptimeSeconds(Long.parseLong(uptime)));
|
||||||
}
|
}
|
||||||
// 获取cpu数量
|
// 获取cpu数量
|
||||||
InitialCpuInfo cpuInfo = initialCpuInfoMapper.getCpuInfoByClientId(initialSystemOtherCollectData.getClientId());
|
InitialCpuInfo cpuInfo = initialCpuInfoMapper.getCpuInfoByClientId(initialSystemOtherCollectData.getClientId());
|
||||||
@@ -168,7 +181,7 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
|||||||
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
||||||
|
|
||||||
Map<String, Function<InitialSystemOtherCollectData, ?>> extractors = new LinkedHashMap<>();
|
Map<String, Function<InitialSystemOtherCollectData, ?>> extractors = new LinkedHashMap<>();
|
||||||
extractors.put("memoryUtilizationData", InitialSystemOtherCollectData::getCollectValue);
|
extractors.put("memoryUtilizationData", info -> UnitChangeUtil.formatDecimal(info.getCollectValue()));
|
||||||
|
|
||||||
return EchartsDataUtils.buildEchartsData(list, InitialSystemOtherCollectData::getCreateTime, extractors);
|
return EchartsDataUtils.buildEchartsData(list, InitialSystemOtherCollectData::getCreateTime, extractors);
|
||||||
}
|
}
|
||||||
@@ -184,7 +197,7 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
|||||||
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
||||||
|
|
||||||
Map<String, Function<InitialSystemOtherCollectData, ?>> extractors = new LinkedHashMap<>();
|
Map<String, Function<InitialSystemOtherCollectData, ?>> extractors = new LinkedHashMap<>();
|
||||||
extractors.put("swapSizePercentData", InitialSystemOtherCollectData::getCollectValue);
|
extractors.put("swapSizePercentData", info -> UnitChangeUtil.formatDecimal(info.getCollectValue()));
|
||||||
|
|
||||||
return EchartsDataUtils.buildEchartsData(list, InitialSystemOtherCollectData::getCreateTime, extractors);
|
return EchartsDataUtils.buildEchartsData(list, InitialSystemOtherCollectData::getCreateTime, extractors);
|
||||||
}
|
}
|
||||||
@@ -223,7 +236,7 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
|||||||
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
||||||
|
|
||||||
Map<String, Function<InitialSystemOtherCollectData, ?>> extractors = new LinkedHashMap<>();
|
Map<String, Function<InitialSystemOtherCollectData, ?>> extractors = new LinkedHashMap<>();
|
||||||
extractors.put("memorySizePercentData", InitialSystemOtherCollectData::getCollectValue);
|
extractors.put("memorySizePercentData", info -> UnitChangeUtil.formatDecimal(info.getCollectValue()));
|
||||||
|
|
||||||
return EchartsDataUtils.buildEchartsData(list, InitialSystemOtherCollectData::getCreateTime, extractors);
|
return EchartsDataUtils.buildEchartsData(list, InitialSystemOtherCollectData::getCreateTime, extractors);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -94,7 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
MAX(CASE WHEN t.collect_type = 'entPhysicalName' THEN t.collect_value END) as entPhysicalName,
|
MAX(CASE WHEN t.collect_type = 'entPhysicalName' THEN t.collect_value END) as entPhysicalName,
|
||||||
MAX(CASE WHEN t.collect_type = 'entPhysicalSoftwareRev' THEN t.collect_value END) as entPhysicalSoftwareRev
|
MAX(CASE WHEN t.collect_type = 'entPhysicalSoftwareRev' THEN t.collect_value END) as entPhysicalSoftwareRev
|
||||||
FROM `initial_switch_other_collect_data` t
|
FROM `initial_switch_other_collect_data` t
|
||||||
INNER JOIN (
|
LEFT JOIN (
|
||||||
SELECT client_id, MAX(create_time) as max_time
|
SELECT client_id, MAX(create_time) as max_time
|
||||||
FROM `initial_switch_other_collect_data`
|
FROM `initial_switch_other_collect_data`
|
||||||
WHERE client_id = #{clientId}
|
WHERE client_id = #{clientId}
|
||||||
|
|||||||
+1
-1
@@ -93,7 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
MAX(CASE WHEN t.collect_type = 'systemLocaltimeCollect' THEN t.collect_value END) as systemLocaltimeCollect,
|
MAX(CASE WHEN t.collect_type = 'systemLocaltimeCollect' THEN t.collect_value END) as systemLocaltimeCollect,
|
||||||
MAX(CASE WHEN t.collect_type = 'systemUptimeCollect' THEN t.collect_value END) as systemUptimeCollect
|
MAX(CASE WHEN t.collect_type = 'systemUptimeCollect' THEN t.collect_value END) as systemUptimeCollect
|
||||||
FROM `initial_system_other_collect_data` t
|
FROM `initial_system_other_collect_data` t
|
||||||
INNER JOIN (
|
LEFT JOIN (
|
||||||
SELECT client_id, MAX(create_time) as max_time
|
SELECT client_id, MAX(create_time) as max_time
|
||||||
FROM `initial_system_other_collect_data`
|
FROM `initial_system_other_collect_data`
|
||||||
WHERE client_id = #{clientId}
|
WHERE client_id = #{clientId}
|
||||||
|
|||||||
Reference in New Issue
Block a user