wxr
2020-02-27 37c33341f75841dc39c535eb62a3603f596516a1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
 
namespace HDL_ON.Entity
{
    public class Function : A_Protocol_FunctionInfo
    {
 
        /// <summary>
        /// 功能附带的属性与值的列表
        /// </summary>
        public Dictionary<string, byte> dicPropert = new Dictionary<string, byte>();
        /// <summary>
        /// 是否收藏
        /// </summary>
        public bool collection = false;
        /// <summary>
        /// 房间ID列表
        /// 该功能添加到到房间列表
        /// </summary>
        public List<string> roomIdList = new List<string>();
        /// <summary>
        /// 最后控制的一次状态
        /// </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协议控制字符串
        /// </summary>
        /// <param name="command">控制命令:write,read</param>
        /// <returns></returns>
        public virtual JObject GetSendJObject(string command)
        {
            var sendJob = new JObject { { "Namespace", a_Protocol_Namespace }, { "Command", command }, { "Type", "device" }, };
            var data = new JObject { { "sid", sid } };
            sendJob.Add("objects", data);
            return sendJob;
        }
 
        /// <summary>
        /// 返回功能类型
        /// </summary>
        protected virtual string GetFunctionType()
        {
            return functionCategory.ToString();
        }
 
 
        public string GetBusId ()
        {
            string busId = "";
            if(bus_Data!=null)
            {
                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;
        }
    }
}