You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
3.5 KiB

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using CellularManagement.Domain.Entities.Common;
namespace CellularManagement.Domain.Entities.Device;
/// <summary>
/// 蜂窝设备实体
/// </summary>
public class CellularDevice : AuditableEntity
{
private CellularDevice() { }
/// <summary>
/// 设备ID
/// </summary>
[Key]
public string Id { get; private set; }
/// <summary>
/// 设备名称
/// </summary>
[Required]
[MaxLength(100)]
public string Name { get; private set; } = null!;
/// <summary>
/// 设备序列号
/// </summary>
[Required]
[MaxLength(50)]
public string SerialNumber { get; private set; } = null!;
/// <summary>
/// 设备描述
/// </summary>
[MaxLength(500)]
public string Description { get; private set; }
/// <summary>
/// 设备类型ID
/// </summary>
[Required]
public string DeviceTypeId { get; private set; }
/// <summary>
/// 设备类型
/// </summary>
[ForeignKey(nameof(DeviceTypeId))]
public virtual DeviceType DeviceType { get; private set; } = null!;
/// <summary>
/// 设备状态ID
/// </summary>
[Required]
public string StatusId { get; private set; }
/// <summary>
/// 设备状态
/// </summary>
[ForeignKey(nameof(StatusId))]
public virtual DeviceStatus Status { get; private set; } = null!;
/// <summary>
/// 协议版本ID
/// </summary>
[Required]
public string ProtocolVersionId { get; private set; }
/// <summary>
/// 协议版本
/// </summary>
[ForeignKey(nameof(ProtocolVersionId))]
public virtual ProtocolVersion ProtocolVersion { get; private set; } = null!;
/// <summary>
/// 当前固件版本
/// </summary>
[Required]
[MaxLength(50)]
public string FirmwareVersion { get; private set; } = null!;
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedAt { get; private set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdatedAt { get; private set; }
/// <summary>
/// 创建设备
/// </summary>
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;
}
/// <summary>
/// 更新设备
/// </summary>
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;
}
}