2025-04-17 20:28:50 +08:00

85 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
namespace JiShe.CollectBus.IotSystems.Devices
{
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;
}
/// <summary>
/// 集中器编号在集中器登录时解析获取并会更新为当前TCP连接的最新ClientId
/// </summary>
public string Number { get; set; }
/// <summary>
/// 首次上线时间
/// </summary>
public DateTime FirstOnlineTime { get; set; }
/// <summary>
/// 最后上线时间
/// </summary>
public DateTime LastOnlineTime { get; set; }
/// <summary>
/// TCP客户端首次连接ID在登录解析成功以后会被Number集中器编号覆盖
/// </summary>
public string ClientId { get; set; }
/// <summary>
/// TCP客户端断线时间用于计算是否断线
/// </summary>
public DateTime? LastOfflineTime { get; set; }
/// <summary>
/// 设备状态
/// </summary>
public DeviceStatus Status { get; set; }
/// <summary>
/// 设备任务超时次数,超过一定次数则发出预警。
/// </summary>
public int TaskTimeOutCounts { get; set; } = 0;
public void UpdateByLoginAndHeartbeat(string clientId)
{
LastOnlineTime = DateTime.Now;
ClientId = clientId;
Status = DeviceStatus.Online;
}
public void UpdateByLoginAndHeartbeat()
{
LastOnlineTime = DateTime.Now;
Status = DeviceStatus.Online;
}
public void UpdateByOnClosed()
{
LastOfflineTime = DateTime.Now;
Status = DeviceStatus.Offline;
}
}
}