优化图形分析单位、服务器流量业务表逻辑
This commit is contained in:
@@ -49,7 +49,7 @@ public class EchartsDataUtils {
|
||||
* 微秒转秒
|
||||
*/
|
||||
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值填充)
|
||||
|
||||
@@ -2,17 +2,44 @@ package com.ruoyi.common.core.utils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class UnitChangeUtil {
|
||||
|
||||
private static final double GB = 1024.0 * 1024.0 * 1024.0;
|
||||
|
||||
/**
|
||||
* long类型字节转化为Gb
|
||||
* @param bytes
|
||||
* @return
|
||||
*/
|
||||
public static double bytesToGb(long bytes) {
|
||||
double gb = bytes / GB;
|
||||
BigDecimal bd = new BigDecimal(gb);
|
||||
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
||||
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) {
|
||||
if (kbValue == null || kbValue.trim().isEmpty()) {
|
||||
throw new IllegalArgumentException("KB值不能为空");
|
||||
@@ -26,4 +53,64 @@ public class UnitChangeUtil {
|
||||
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; // 转换失败返回原字符串
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,13 @@ public interface EpsBusinessMapper
|
||||
* @return 业务信息
|
||||
*/
|
||||
public EpsBusiness selectEpsBusinessById(String id);
|
||||
/**
|
||||
* 查询业务代码
|
||||
*
|
||||
* @param businessName 业务名称
|
||||
* @return 业务信息
|
||||
*/
|
||||
public EpsBusiness selectEpsBusinessByName(String businessName);
|
||||
|
||||
/**
|
||||
* 查询业务信息列表
|
||||
|
||||
@@ -72,6 +72,7 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService
|
||||
public PageInfo<EpsInitialTrafficData> relatedData(EpsNodeBandwidth epsNodeBandwidth, String dailyStartTime, String dailyEndTime) {
|
||||
// 设置查询条件
|
||||
EpsInitialTrafficData queryParams = new EpsInitialTrafficData();
|
||||
queryParams.setClientId(epsNodeBandwidth.getClientId());
|
||||
queryParams.setServiceSn(epsNodeBandwidth.getHardwareSn());
|
||||
queryParams.setBusinessId(epsNodeBandwidth.getBusinessId());
|
||||
queryParams.setStartTime(dailyStartTime);
|
||||
|
||||
@@ -4,13 +4,8 @@ import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.domain.AllInterfaceName;
|
||||
import com.ruoyi.system.domain.EpsInitialTrafficData;
|
||||
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.domain.*;
|
||||
import com.ruoyi.system.mapper.*;
|
||||
import com.ruoyi.system.service.EpsInitialTrafficDataService;
|
||||
import com.ruoyi.system.service.IEpsServerRevenueConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -18,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@@ -39,6 +33,10 @@ public class EpsServerRevenueConfigServiceImpl implements IEpsServerRevenueConfi
|
||||
private EpsMethodChangeRecordMapper epsMethodChangeRecordMapper;
|
||||
@Autowired
|
||||
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> batchList = new ArrayList<>();
|
||||
for (EpsInitialTrafficData initialTrafficData : dataList) {
|
||||
// 根据clientId查询节点名称
|
||||
Map nodeMsg = epsServerRevenueConfigMapper.getNodeMsgBySn(initialTrafficData.getClientId());
|
||||
// 赋值
|
||||
if(nodeMsg != null){
|
||||
initialTrafficData.setServiceSn(getNullableString(nodeMsg, "hardwareSn"));
|
||||
initialTrafficData.setNodeName(getNullableString(nodeMsg, "resourceName"));
|
||||
initialTrafficData.setRevenueMethod(getNullableString(nodeMsg, "revenueMethod"));
|
||||
initialTrafficData.setBusinessId(getNullableString(nodeMsg, "businessCode"));
|
||||
initialTrafficData.setBusinessName(getNullableString(nodeMsg, "businessName"));
|
||||
if("2".equals(nodeMsg.get("revenueMethod") + "")
|
||||
&& nodeMsg.containsKey("packageBandwidth")){
|
||||
Object bandwidth = nodeMsg.get("packageBandwidth");
|
||||
if (bandwidth instanceof BigDecimal) {
|
||||
initialTrafficData.setPackageBandwidth((BigDecimal) bandwidth);
|
||||
}
|
||||
// 根据clientId查询业务名称
|
||||
RmResourceRegistration rmResourceRegistration = new RmResourceRegistration();
|
||||
rmResourceRegistration.setClientId(initialTrafficData.getClientId());
|
||||
List<RmResourceRegistration> registerLst = rmResourceRegistrationMapper.selectRmResourceRegistrationList(rmResourceRegistration);
|
||||
if(registerLst != null && !registerLst.isEmpty()){
|
||||
RmResourceRegistration registerMsg = registerLst.get(0);
|
||||
// 赋值
|
||||
if(registerMsg != null){
|
||||
// 根据业务名称查询业务代码
|
||||
EpsBusiness epsBusiness = epsBusinessMapper.selectEpsBusinessByName(registerMsg.getBusinessName());
|
||||
initialTrafficData.setServiceSn(registerMsg.getHardwareSn());
|
||||
initialTrafficData.setRevenueMethod("1");
|
||||
initialTrafficData.setBusinessId(epsBusiness.getId());
|
||||
initialTrafficData.setBusinessName(registerMsg.getBusinessName());
|
||||
}
|
||||
}
|
||||
// id自增
|
||||
|
||||
@@ -31,6 +31,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="selectEpsBusinessByName" parameterType="String" resultMap="EpsBusinessResult">
|
||||
<include refid="selectEpsBusinessVo"/>
|
||||
where business_name = #{businessName}
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<insert id="insertEpsBusiness" parameterType="EpsBusiness">
|
||||
insert into eps_business
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
@@ -115,6 +115,19 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
||||
// 如果返回null,初始化一个空的Map
|
||||
if (map == null) {
|
||||
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数量
|
||||
InitialCpuInfo cpuInfo = initialCpuInfoMapper.getCpuInfoByClientId(initialSystemOtherCollectData.getClientId());
|
||||
@@ -168,7 +181,7 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
||||
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -184,7 +197,7 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
||||
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -223,7 +236,7 @@ public class InitialSystemOtherCollectDataServiceImpl implements IInitialSystemO
|
||||
List<InitialSystemOtherCollectData> list = initialSystemOtherCollectDataMapper.selectInitialSystemOtherCollectDataList(initialSystemOtherCollectData);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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 = 'entPhysicalSoftwareRev' THEN t.collect_value END) as entPhysicalSoftwareRev
|
||||
FROM `initial_switch_other_collect_data` t
|
||||
INNER JOIN (
|
||||
LEFT JOIN (
|
||||
SELECT client_id, MAX(create_time) as max_time
|
||||
FROM `initial_switch_other_collect_data`
|
||||
WHERE client_id = #{clientId}
|
||||
|
||||
@@ -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 = 'systemUptimeCollect' THEN t.collect_value END) as systemUptimeCollect
|
||||
FROM `initial_system_other_collect_data` t
|
||||
INNER JOIN (
|
||||
LEFT JOIN (
|
||||
SELECT client_id, MAX(create_time) as max_time
|
||||
FROM `initial_system_other_collect_data`
|
||||
WHERE client_id = #{clientId}
|
||||
|
||||
Reference in New Issue
Block a user