package com.zc.business.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.utils.DateUtils; import com.zc.business.enums.NetworkQuality; import com.zc.business.enums.UniversalEnum; import com.zc.business.utils.MathUtil; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Arrays; import java.util.Date; public class OnlineLog implements Serializable { private static final long serialVersionUID = 1L; private long id; private Long deviceId; private String deviceIp; private String deviceName; private String stakeMark; private String direction;//方向 private String deviceType;//设备类型 private String deviceStatus; private String networkQuality;//网络质量 private int sendCount;//发送数 private int receiveCount;//返回数 private int lossCount;//丢包数 private double lossRate;//丢包率 private double rttAvg;//平均往返时延 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime monitorTime; public long getId() { return id; } public void setId(long id) { this.id = id; } public Long getDeviceId() { return deviceId; } public void setDeviceId(Long deviceId) { this.deviceId = deviceId; } public String getDeviceIp() { return deviceIp; } public void setDeviceIp(String deviceIp) { this.deviceIp = deviceIp; } public String getDeviceName() { return deviceName; } public void setDeviceName(String deviceName) { this.deviceName = deviceName; } public String getStakeMark() { return stakeMark; } public void setStakeMark(String stakeMark) { this.stakeMark = stakeMark; } public String getDeviceStatus() { return deviceStatus; } public void setDeviceStatus(String deviceStatus) { this.deviceStatus = deviceStatus; } public String getNetworkQuality() { return networkQuality; } public void setNetworkQuality(String networkQuality) { this.networkQuality = networkQuality; } public int getSendCount() { return sendCount; } public void setSendCount(int sendCount) { this.sendCount = sendCount; } public int getReceiveCount() { return receiveCount; } public void setReceiveCount(int receiveCount) { this.receiveCount = receiveCount; } public int getLossCount() { return lossCount; } public void setLossCount(int lossCount) { this.lossCount = lossCount; } public double getLossRate() { return lossRate; } public void setLossRate(double lossRate) { this.lossRate = lossRate; } public double getRttAvg() { return rttAvg; } public void setRttAvg(double rttAvg) { this.rttAvg = rttAvg; } public LocalDateTime getMonitorTime() { return monitorTime; } public void setMonitorTime(LocalDateTime monitorTime) { this.monitorTime = monitorTime; } public String getDirection() { return direction; } public void setDirection(String direction) { this.direction = direction; } public String getDeviceType() { return deviceType; } public void setDeviceType(String deviceType) { this.deviceType = deviceType; } @Override public String toString() { return "OnlineLog{" + "id=" + id + ", deviceId=" + deviceId + ", deviceIp='" + deviceIp + '\'' + ", deviceName='" + deviceName + '\'' + ", stakeMark='" + stakeMark + '\'' + ", direction='" + direction + '\'' + ", deviceType='" + deviceType + '\'' + ", deviceStatus='" + deviceStatus + '\'' + ", networkQuality='" + networkQuality + '\'' + ", sendCount=" + sendCount + ", receiveCount=" + receiveCount + ", lossCount=" + lossCount + ", lossRate='" + lossRate + '\'' + ", rttAvg=" + rttAvg + ", monitorTime=" + monitorTime + '}'; } public static class LogBuilder{ OnlineLog onlineLog = new OnlineLog(); public LogBuilder setDeviceStatus(String deviceStatus) { onlineLog.setDeviceStatus(deviceStatus); return this; } public LogBuilder setSendCount(int sendCount) { onlineLog.setSendCount(sendCount); return this; } public LogBuilder setReceiveCount(int receiveCount) { onlineLog.setReceiveCount(receiveCount); return this; } public LogBuilder setRttAvg(double rttAvg) { onlineLog.setRttAvg(rttAvg); return this; } public OnlineLog build(DcDevice device) { onlineLog.setDeviceId(device.getId()); onlineLog.setDeviceIp(device.getDeviceIp()); onlineLog.setDeviceName(device.getDeviceName()); onlineLog.setDirection(device.getDirection()); onlineLog.setDeviceType(device.getDeviceType()); onlineLog.setStakeMark(device.getStakeMark()); onlineLog.setLossCount(onlineLog.getSendCount() - onlineLog.getReceiveCount()); double lossRate = onlineLog.getSendCount()==0?0:(double) onlineLog.getLossCount() / onlineLog.getSendCount() * 100; onlineLog.setLossRate(lossRate); double rttAvg = onlineLog.getRttAvg(); if(rttAvg > 0 && rttAvg <= 30){ onlineLog.setNetworkQuality(NetworkQuality.GOOD.getValue()); }else if(rttAvg >30 && rttAvg <= 100){ onlineLog.setNetworkQuality(NetworkQuality.NORMAL.getValue()); }else { onlineLog.setNetworkQuality(NetworkQuality.BAD.getValue()); } onlineLog.setNetworkQuality(NetworkQuality.ofNetworkQuality(onlineLog.getLossRate(),onlineLog.getRttAvg())); onlineLog.setMonitorTime(LocalDateTime.now()); return onlineLog; } public OnlineLog buildBad(DcDevice device){ onlineLog.setDeviceId(device.getId()); onlineLog.setDeviceIp(device.getDeviceIp()); onlineLog.setDeviceName(device.getDeviceName()); onlineLog.setStakeMark(device.getStakeMark()); onlineLog.setDirection(device.getDirection()); onlineLog.setDeviceType(device.getDeviceType()); onlineLog.setNetworkQuality(NetworkQuality.BAD.getValue()); onlineLog.setMonitorTime(LocalDateTime.now()); onlineLog.setSendCount(4); onlineLog.setReceiveCount(0); onlineLog.setLossCount(4); onlineLog.setLossRate(MathUtil.doubleTwoDecimal(100)); onlineLog.setRttAvg(0); onlineLog.setDeviceStatus(UniversalEnum.ZERO.getValue()); return onlineLog; } public OnlineLog buildGood(DcDevice device){ onlineLog.setDeviceId(device.getId()); onlineLog.setDeviceIp(device.getDeviceIp()); onlineLog.setDeviceName(device.getDeviceName()); onlineLog.setStakeMark(device.getStakeMark()); onlineLog.setDirection(device.getDirection()); onlineLog.setDeviceType(device.getDeviceType()); onlineLog.setNetworkQuality(NetworkQuality.GOOD.getValue()); onlineLog.setMonitorTime(LocalDateTime.now()); onlineLog.setSendCount(4); onlineLog.setReceiveCount(4); onlineLog.setLossCount(0); onlineLog.setLossRate(MathUtil.doubleTwoDecimal(0)); onlineLog.setRttAvg(30); onlineLog.setDeviceStatus(UniversalEnum.ONE.getValue()); return onlineLog; } } }