using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using CellularManagement.Domain.Entities.Common; namespace CellularManagement.Domain.Entities.Device; /// /// 蜂窝设备实体 /// public class CellularDevice : AuditableEntity { private CellularDevice() { } /// /// 设备ID /// [Key] public string Id { get; private set; } /// /// 设备名称 /// [Required] [MaxLength(100)] public string Name { get; private set; } = null!; /// /// 设备序列号 /// [Required] [MaxLength(50)] public string SerialNumber { get; private set; } = null!; /// /// 设备描述 /// [MaxLength(500)] public string Description { get; private set; } /// /// 设备类型ID /// [Required] public string DeviceTypeId { get; private set; } /// /// 设备类型 /// [ForeignKey(nameof(DeviceTypeId))] public virtual DeviceType DeviceType { get; private set; } = null!; /// /// 设备状态ID /// [Required] public string StatusId { get; private set; } /// /// 设备状态 /// [ForeignKey(nameof(StatusId))] public virtual DeviceStatus Status { get; private set; } = null!; /// /// 协议版本ID /// [Required] public string ProtocolVersionId { get; private set; } /// /// 协议版本 /// [ForeignKey(nameof(ProtocolVersionId))] public virtual ProtocolVersion ProtocolVersion { get; private set; } = null!; /// /// 当前固件版本 /// [Required] [MaxLength(50)] public string FirmwareVersion { get; private set; } = null!; /// /// 创建时间 /// public DateTime CreatedAt { get; private set; } /// /// 更新时间 /// public DateTime UpdatedAt { get; private set; } /// /// 创建设备 /// public static CellularDevice Create( string name, string serialNumber, string description, string deviceTypeId, string statusId, string protocolVersionId, string firmwareVersion) { var device = new CellularDevice { Id = Guid.NewGuid().ToString(), Name = name, SerialNumber = serialNumber, Description = description, DeviceTypeId = deviceTypeId, StatusId = statusId, ProtocolVersionId = protocolVersionId, FirmwareVersion = firmwareVersion, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow }; return device; } /// /// 更新设备 /// public void Update( string name, string serialNumber, string description, string deviceTypeId, string statusId, string protocolVersionId, string firmwareVersion) { Name = name; SerialNumber = serialNumber; Description = description; DeviceTypeId = deviceTypeId; StatusId = statusId; ProtocolVersionId = protocolVersionId; FirmwareVersion = firmwareVersion; UpdatedAt = DateTime.UtcNow; } }