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.
iot/projects/Application/Domain/IoTCenter/IoTDevice.cs

124 lines
3.8 KiB

using Infrastructure.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace Application.Domain.Entities
{
[Display(Name = "设备")]
[Scope]
[Group("物联管控", "IoTCenter")]
public class IoTDevice : BaseEntity
{
[Display(Name = "名称")]
public string Name { get; set; }
[Display(Name = "编号")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
public string Number { get; set; }
[Display(Name = "网关编号")]
public string Gateway { get; set; }
[Display(Name = "显示名称")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
public string DisplayName { get; set; }
[Display(Name = "标记")]
public string Tag { get; set; }
[Display(Name = "在线状态")]
public bool IsOnline { get; set; }
[Display(Name = "图标")]
public string Icon { get; set; }
[Display(Name = "IP")]
public string Ip { get; set; }
[Display(Name = "用户名")]
public string UserName { get; set; }
[Display(Name = "密码")]
public string Password { get; set; }
[Display(Name = "连接Id")]
public string ConnectId { get; set; }
[Display(Name = "序号")]
public int DisplayOrder { get; set; }
[Display(Name = "隐藏")]
public bool Disabled { get; set; }
[Display(Name = "产品Id")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
public Guid IoTProductId { get; set; }
[Display(Name = "节点Id")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
public Guid IoTGatewayId { get; set; }
[Display(Name = "产品")]
public IoTProduct IoTProduct { get; set; }
[Display(Name = "网关")]
public IoTGateway IoTGateway { get; set; }
[Display(Name = "数据")]
public List<IoTData> Data { get; set; } = new List<IoTData>();
[Display(Name = "命令")]
public List<IoTCommand> IoTCommands { get; set; } = new List<IoTCommand>();
public IoTData GetData(string key)
{
return this.Data.FirstOrDefault(o => o.Key == key);
}
public string GetDataValue(string key)
{
return this.GetData(key)?.Value;
}
public IoTData CreateData(string key, object value, IoTValueType type, string name, string unit = null, string description = null, bool hidden = false, long timestamp = 0)
{
return new IoTData
{
IoTDeviceId = this.Id,
Key = key,
Value = Convert.ToString(value),
ValueType = type,
Name = name,
Unit = unit,
Description = description,
Hidden = hidden,
Timestamp = timestamp == 0 ? DateTimeOffset.Now.ToUnixTimeMilliseconds() : timestamp
};
}
public IoTData AddorUpdateData(IoTData data)
{
var oldData = this.Data.FirstOrDefault(o => o.Key == data.Key);
if (oldData == null)
{
oldData = data;
this.Data.Add(data);
}
else
{
if (oldData.Name != data.Name || oldData.Value != data.Value || oldData.Unit != data.Unit || oldData.Description != data.Description)
{
oldData.Name = data.Name;
oldData.Value = data.Value;
oldData.Unit = data.Unit;
oldData.Description = data.Description;
oldData.Timestamp = data.Timestamp;
}
}
return oldData;
}
}
}