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.

108 lines
3.0 KiB

using Infrastructure.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace Application.Domain.Entities
{
[Display(Name = "设备")]
public class Device : BaseEntity
{
[Display(Name = "名称")]
public string Name { get; set; }
[Display(Name = "编号")]
[Required]
public string Number { get; set; }
[Display(Name = "网关编号")]
public string Gateway { get; set; }
[Display(Name = "显示名称")]
[Required]
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]
public Guid ProductId { get; set; }
[Display(Name = "节点Id")]
[Required]
public Guid NodeId { get; set; }
[Display(Name = "产品")]
public Product Product { get; set; }
[Display(Name = "节点")]
public Node Node { get; set; }
[Display(Name = "数据")]
public List<Data> Data { get; set; } = new List<Data>();
[Display(Name = "命令")]
public List<Command> Commands { get; set; } = new List<Command>();
public Data GetData(string key)
{
return this.Data.FirstOrDefault(o => o.Key == key);
}
public string GetDataValue(string key)
{
return this.GetData(key)?.Value;
}
public Data CreateData(string key, object value, DeviceDataType type, string name, string unit = null, string description = null, bool hidden = false)
{
return new Data { Key = key, Value = Convert.ToString(value), Type = type, Name = name, Unit = unit, Description = description, Hidden = hidden };
}
public bool AddorUpdateData(Data data)
{
var result = false;
var oldData = this.Data.FirstOrDefault(o => o.Key == data.Key);
if (oldData == null)
{
this.Data.Add(data);
result = true;
}
else
{
if (oldData.Value != data.Value)
{
oldData.Value = data.Value;
result = true;
}
}
return result;
}
}
}