using System;
|
using System.Collections.Generic;
|
using Shared;
|
|
namespace HDL_ON.UI.UI2.Intelligence.Automation
|
{
|
public class LogicMethod
|
{
|
/// <summary>
|
/// 生成逻辑sid方法
|
/// </summary>
|
public static string NewSid()
|
{
|
string logicId = "";
|
try
|
{
|
string sOidBeginsWith = "000101";//厂商 + 通讯方式
|
DateTime dt = DateTime.Now;
|
DateTime startTime = TimeZoneInfo.ConvertTimeToUtc(new DateTime(2020, 1, 1));
|
long m = (long)((dt - startTime).TotalMilliseconds / 10);
|
string sTimeSpan = "00000000";
|
|
byte[] arry = new byte[4];
|
arry[0] = (byte)(m & 0xFF);
|
arry[1] = (byte)((m & 0xFF00) >> 8);
|
arry[2] = (byte)((m & 0xFF0000) >> 16);
|
arry[3] = (byte)((m >> 24) & 0xFF);
|
sTimeSpan = arry[0].ToString("X2") + arry[1].ToString("X2") + arry[2].ToString("X2") + arry[3].ToString("X2");
|
|
|
if (sTimeSpan.Length > 8)
|
{
|
sTimeSpan = sTimeSpan.Substring(0, 8);
|
}
|
else
|
{
|
sTimeSpan = "00000000";
|
}
|
|
logicId = sOidBeginsWith + sTimeSpan;
|
|
logicId += "0A";
|
logicId += "0A01";
|
//0A01 物模型为逻辑, 0001 表示 1 号逻辑功能
|
int iTopLogicId = 1;
|
|
Random random = new Random();
|
iTopLogicId = random.Next(0, 255);
|
iTopLogicId += random.Next(0, 255);
|
|
logicId += iTopLogicId.ToString("X4");//逻辑号 两个byte
|
logicId += "1100";
|
}
|
catch
|
{
|
return logicId;
|
}
|
return logicId;
|
}
|
/// <summary>
|
/// 封装Dictionary对象
|
/// </summary>
|
/// <param name="dic">Dictionary类</param>
|
/// <param name="key">健</param>
|
/// <param name="value">值</param>
|
public static void dictionary(Dictionary<string, string> dic, string key, string value)
|
{
|
if (dic.ContainsKey(key)) //判断是否存在键值
|
{
|
//键存在移除
|
dic.Remove(key);
|
}
|
//添加键值
|
dic.Add(key, value);
|
}
|
/// <summary>
|
/// 获取房间列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<HDL_ON.Entity.Room> GetRoomList()
|
{
|
return HDL_ON.Entity.DB_ResidenceData.rooms;
|
}
|
/// <summary>
|
/// 获取设备列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<HDL_ON.Entity.Function> GetDeviceList()
|
{
|
|
return HDL_ON.Entity.DB_ResidenceData.functionList.GetAllFunction();
|
}
|
/// <summary>
|
/// 获取房间的设备列表
|
/// </summary>
|
/// <param name="room">当前房间</param>
|
/// <returns></returns>
|
public static List<HDL_ON.Entity.Function> GetRoomDevice(HDL_ON.Entity.Room room)
|
{
|
List<HDL_ON.Entity.Function> deviceLists = new List<Entity.Function>();
|
List<HDL_ON.Entity.Function> lists = GetDeviceList();
|
foreach (var dev in lists)
|
{
|
if (dev.roomIdList.Find((id) => id == room.sid) != null)
|
{
|
deviceLists.Add(dev);
|
}
|
}
|
return deviceLists;
|
}
|
/// <summary>
|
/// 获取设备
|
/// </summary>
|
/// <param name="sid">设备唯一标识</param>
|
/// <returns></returns>
|
public static HDL_ON.Entity.Function GetDevice(string sid)
|
{
|
HDL_ON.Entity.Function device = new Entity.Function();
|
List<HDL_ON.Entity.Function> deviceLists = GetDeviceList();
|
foreach (var dev in deviceLists)
|
{
|
if (dev.sid == sid)
|
{
|
device = dev;
|
break;
|
}
|
}
|
return device;
|
}
|
/// <summary>
|
/// 获取房间名(即是=区域名称)
|
/// </summary>
|
/// <param name="device">设备</param>
|
/// <returns></returns>
|
public static string GetGetRoomName(HDL_ON.Entity.Function device)
|
{
|
string roomName = "";
|
List<HDL_ON.Entity.Room> roomLists = GetRoomList();
|
|
foreach (var dev in device.roomIdList)
|
{
|
var room = roomLists.Find((c) => c.sid == dev);
|
if (room != null)
|
{
|
roomName += room.floorName + "." + room.name + ",";
|
}
|
}
|
|
return roomName.TrimEnd(',');
|
}
|
/// <summary>
|
/// 获取房间名列表(即是=区域名称)
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> GetGetRoomNameList()
|
{
|
List<string> roomNameList = new List<string>();
|
roomNameList.Add(Language.StringByID(StringId.allAreas));
|
List<HDL_ON.Entity.Room> roomLists = GetRoomList();
|
foreach (var room in roomLists)
|
{
|
roomNameList.Add(room.name);
|
}
|
|
return roomNameList;
|
}
|
/// <summary>
|
/// 获取图标
|
/// </summary>
|
/// <param name="functionType">设备类型</param>
|
/// <returns></returns>
|
public static string GetIconPath(FunctionType functionType) {
|
string strPath = "";
|
switch (functionType) {
|
case FunctionType.Relay: {
|
strPath = "LogicIcon/lightloguc.png";
|
}
|
break;
|
|
}
|
return strPath;
|
}
|
}
|
}
|