package com.mes.device.vo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * 设备配置视图对象 * * @author mes * @since 2024-10-30 */ public class DeviceConfigVO { /** * 设备配置信息 */ @Data @NoArgsConstructor @AllArgsConstructor public static class DeviceInfo { private Long id; private String deviceCode; private String deviceName; private String deviceType; private String deviceModel; private String manufacturer; private String location; private String status; private String deviceStatus; private String plcIp; private Integer plcPort; private String plcType; private String moduleName; private Boolean isPrimary; private Boolean enabled; private String protocol; private String connectionType; private String description; private Boolean isEnabled; private Date lastHeartbeat; private Date createdTime; private Date updatedTime; private String extraParams; private Long projectId; } /** * 设备树节点 */ @Data @NoArgsConstructor @AllArgsConstructor public static class DeviceTreeNode { private Long id; private String label; private String type; private String icon; private String status; private Boolean disabled; private Boolean isGroup; private List children; private Object data; } /** * 设备健康检查结果 */ @Data @NoArgsConstructor @AllArgsConstructor public static class HealthCheckResult { private Boolean isHealthy; private String overallStatus; private LocalDateTime checkTime; private Integer responseTime; private Integer connectionTimeout; private String lastError; private List checkItems; private String summary; } /** * 健康检查项目 */ @Data @NoArgsConstructor @AllArgsConstructor public static class HealthCheckItem { private String itemName; private String status; private String message; private Integer responseTime; private String details; } /** * 设备监控信息 */ @Data @NoArgsConstructor @AllArgsConstructor public static class DeviceMonitoring { private Long deviceId; private String deviceName; private String status; private Boolean isOnline; private LocalDateTime lastHeartbeat; private Double cpuUsage; private Double memoryUsage; private Double networkTraffic; private Integer activeConnections; private List metrics; } /** * 设备指标 */ @Data @NoArgsConstructor @AllArgsConstructor public static class DeviceMetric { private String metricName; private String metricValue; private String metricUnit; private LocalDateTime timestamp; private String status; } /** * 设备配置详情(用于编辑表单) */ @Data @NoArgsConstructor @AllArgsConstructor public static class DeviceConfigDetail { private Long id; private String deviceCode; private String deviceName; private String deviceType; private String deviceModel; private String manufacturer; private String location; private String status; private String ipAddress; private Integer port; private String protocol; private String connectionType; private String username; private String password; private String description; private Boolean isEnabled; private String extraParams; private LocalDateTime createdTime; private LocalDateTime updatedTime; } /** * 设备连接测试结果 */ @Data @NoArgsConstructor @AllArgsConstructor public static class ConnectionTestResult { private Boolean isSuccess; private String message; private Integer responseTime; private LocalDateTime testTime; private String errorMessage; private List testDetails; } /** * 设备批量操作结果 */ @Data @NoArgsConstructor @AllArgsConstructor public static class BatchOperationResult { private Integer totalCount; private Integer successCount; private Integer failureCount; private List successIds; private List failureIds; private List errorMessages; } /** * 设备性能统计 */ @Data @NoArgsConstructor @AllArgsConstructor public static class DevicePerformanceStats { private Long deviceId; private String deviceName; private Double averageCpuUsage; private Double averageMemoryUsage; private Double averageNetworkTraffic; private Integer totalConnections; private Integer totalRequests; private Integer successRequests; private Integer failureRequests; private Double successRate; private LocalDateTime statsTime; } }