wxr
2020-02-27 37c33341f75841dc39c535eb62a3603f596516a1
HDL_ON/Entity/Function/Function.cs
@@ -1,57 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace HDL_ON.Entity
{
    public class Function
    public class Function : A_Protocol_FunctionInfo
    {
        /*
        HDL统一协议格式:16bytes
        厂商代号:2bytes
        通讯方式:有线/无线/ZIGBEE等1bytes
        产品识别码:以添加设备的年月日时分秒 + 随机数8bytes
        功能类别:1bytes
        数据表索引地址:2bytes
        回路:2bytes
        举例: 0001-00-201910120900002567-01-0001-0001
        */
        public Function()
        {
        }
        /// <summary>
        /// 当前设备类型
        /// 功能附带的属性与值的列表
        /// </summary>
        public FunctionType funcType = FunctionType.UnKown;
        /// <summary>
        /// 功能分类
        /// </summary>
        public string funcClassification;
        public Dictionary<string, byte> dicPropert = new Dictionary<string, byte>();
        /// <summary>
        /// 是否收藏
        /// </summary>
        public bool collection = false;
        /// <summary>
        /// 功能ID
        /// </summary>
        public string sid;
        /// <summary>
        /// 备注
        /// </summary>
        public string name;
        /// <summary>
        /// 保存数据时的文件名
        /// </summary>
        public string savePath = "";
        /// <summary>
        /// A协议数据格式
        /// </summary>
        public string a_Protocol_Namespace = "HDL";
        /// <summary>
        /// bus协议数据格式
        /// </summary>
        public string bus_Data;
        /// <summary>
        /// 房间ID列表
        /// 该功能添加到到房间列表
@@ -62,8 +26,53 @@
        /// </summary>
        public string lastState = "";
        /// <summary>
        /// 功能类型:
        /// 如:灯下面的继电器/调光器/RGB属于同一种功能不同类型的灯
        /// </summary>
        public string functionType {
            get
            {
                return GetFunctionType();
            }
        }
        /// <summary>
        /// bus协议数据格式
        /// </summary>
        public BusData bus_Data;
        /// <summary>
        /// 使用次数
        /// </summary>
        public double usageCount = 0;
        /// <summary>
        /// 使用频率
        /// </summary>
        public double usageFrequency = 0;
        /// <summary>
        /// 固定的序号
        /// </summary>
        public int fixedSerialNumber = int.MaxValue;
        /// <summary>
        /// A协议数据
        /// </summary>
        public List<string> PropertyArray
        {
            get
            {
                var proArr = trait.Split(',').ToList();
                foreach(var pro in proArr)
                {
                    if (!dicPropert.ContainsKey(pro))
                    {
                        dicPropert.TryAdd(pro, 0);
                    }
                }
                return proArr;
            }
        }
        /// <summary>
        /// 获取A协议控制字符串
@@ -74,61 +83,46 @@
        {
            var sendJob = new JObject { { "Namespace", a_Protocol_Namespace }, { "Command", command }, { "Type", "device" }, };
            var data = new JObject { { "sid", sid } };
            sendJob.Add("", data);
            sendJob.Add("objects", data);
            return sendJob;
        }
        /// <summary>
        /// bus旧数据的子网ID
        /// </summary>
        public byte bus_SubnetId
        {
            get
            {
                var sss = JObject.Parse(bus_Data);
                var subnetId = Convert.ToByte(sss.GetValue("SubnetID").ToString());
                return subnetId;
            }
        }
        /// <summary>
        /// bus旧数据的设备ID
        /// 返回功能类型
        /// </summary>
        public byte bus_DeviceId
        protected virtual string GetFunctionType()
        {
            get
            {
                var sss = JObject.Parse(bus_Data);
                var deviceId = Convert.ToByte(sss.GetValue("DeviceID").ToString());
                return deviceId;
            }
        }
        /// <summary>
        /// bus旧数据的回路ID
        /// </summary>
        public byte bus_LoopId
        {
            get
            {
                var sss = JObject.Parse(bus_Data);
                var loopId = Convert.ToByte(sss.GetValue("LoopID").ToString());
                return loopId;
            }
            return functionCategory.ToString();
        }
        public string bus_DeviceType = "";
        public string GetBusId ()
        {
            string busId = "";
            if(!string.IsNullOrEmpty(bus_Data))
            if(bus_Data!=null)
            {
                var sss = JObject.Parse(bus_Data);
                var subnetId = sss.GetValue("SubnetID").ToString();
                var deviceId = sss.GetValue("DeviceID").ToString();
                var loopId = sss.GetValue("LoopID").ToString();
                busId = subnetId + "_" + deviceId + "_" + loopId;
                busId = bus_Data.SubnetID + "_" + bus_Data.DeviceID + "_" + bus_Data.LoopID;
            }
            return busId;
        }
        /// <summary>
        /// 获取设备添加到房间的房间名称
        /// </summary>
        /// <returns></returns>
        public string GetRoomListName()
        {
            string roomNameList = "";
            foreach(var roomId in roomIdList)
            {
                var findRoom = DB_ResidenceData.residenceData.rooms.Find(obj => obj.sid == roomId);
                if(roomNameList != "")
                {
                    roomNameList += ",";
                }
                roomNameList += findRoom.floor + "·" + findRoom.name;
            }
            return roomNameList;
        }
    }
}