2024-12-19 16:07:07 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using JiShe.CollectBus.Enums;
|
|
|
|
|
|
using Volo.Abp.Domain.Entities;
|
|
|
|
|
|
|
2025-03-14 14:28:04 +08:00
|
|
|
|
namespace JiShe.CollectBus.IotSystems.Devices
|
2024-12-19 16:07:07 +08:00
|
|
|
|
{
|
|
|
|
|
|
public class Device : AggregateRoot<Guid>
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Device
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="number"></param>
|
|
|
|
|
|
/// <param name="firstOnlineTime"></param>
|
|
|
|
|
|
/// <param name="lastOnlineTime"></param>
|
|
|
|
|
|
/// <param name="clientId"></param>
|
|
|
|
|
|
/// <param name="status"></param>
|
|
|
|
|
|
public Device(string number, string clientId, DateTime firstOnlineTime, DateTime lastOnlineTime, DeviceStatus status)
|
|
|
|
|
|
{
|
|
|
|
|
|
Number = number;
|
|
|
|
|
|
FirstOnlineTime = firstOnlineTime;
|
|
|
|
|
|
LastOnlineTime = lastOnlineTime;
|
|
|
|
|
|
ClientId = clientId;
|
|
|
|
|
|
Status = status;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-12 09:58:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 集中器编号,在集中器登录时解析获取,并会更新为当前TCP连接的最新ClientId
|
|
|
|
|
|
/// </summary>
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public string Number { get; set; }
|
|
|
|
|
|
|
2025-03-12 09:58:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 首次上线时间
|
|
|
|
|
|
/// </summary>
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public DateTime FirstOnlineTime { get; set; }
|
|
|
|
|
|
|
2025-03-12 09:58:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 最后上线时间
|
|
|
|
|
|
/// </summary>
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public DateTime LastOnlineTime { get; set; }
|
|
|
|
|
|
|
2025-03-12 09:58:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// TCP客户端首次连接ID,在登录解析成功以后会被Number集中器编号覆盖
|
|
|
|
|
|
/// </summary>
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public string ClientId { get; set; }
|
|
|
|
|
|
|
2025-03-12 09:58:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// TCP客户端断线时间,用于计算是否断线
|
|
|
|
|
|
/// </summary>
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public DateTime? LastOfflineTime { get; set; }
|
|
|
|
|
|
|
2025-03-12 09:58:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 设备状态
|
|
|
|
|
|
/// </summary>
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public DeviceStatus Status { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
public void UpdateByLoginAndHeartbeat(string clientId)
|
|
|
|
|
|
{
|
|
|
|
|
|
LastOnlineTime = DateTime.Now;
|
|
|
|
|
|
ClientId = clientId;
|
|
|
|
|
|
Status = DeviceStatus.Online;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-27 08:38:19 +08:00
|
|
|
|
public void UpdateByLoginAndHeartbeat()
|
|
|
|
|
|
{
|
|
|
|
|
|
LastOnlineTime = DateTime.Now;
|
|
|
|
|
|
Status = DeviceStatus.Online;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-19 16:07:07 +08:00
|
|
|
|
public void UpdateByOnClosed()
|
|
|
|
|
|
{
|
|
|
|
|
|
LastOfflineTime = DateTime.Now;
|
|
|
|
|
|
Status = DeviceStatus.Offline;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|