wei
2021-03-04 2ae36ddb40d28c62b64a2fdd4c3033e7d65d5cfb
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
using HDL_ON.Entity;
using System;
using System.Collections.Generic;
using System.Text;
 
namespace HDL_ON.Stan
{
    /// <summary>
    /// 设备状态推送逻辑(继承于EditorFormBase的界面专用)
    /// </summary>
    public class HdlDeviceStatuPushLogic
    {
        #region ■ 变量声明___________________________
 
        /// <summary>
        /// 设备状态推送逻辑(继承于EditorFormBase的界面专用)
        /// </summary>
        private static HdlDeviceStatuPushLogic m_Current = null;
        /// <summary>
        /// 设备状态推送逻辑(继承于EditorFormBase的界面专用)
        /// </summary>
        public static HdlDeviceStatuPushLogic Current
        {
            get
            {
                if (m_Current == null)
                {
                    m_Current = new HdlDeviceStatuPushLogic();
                }
                return m_Current;
            }
        }
        #endregion
 
        #region ■ 状态更新___________________________
 
        /// <summary>
        /// 设备状态更新
        /// </summary>
        /// <param name="updateData">云端推送的更新数据</param>
        public Function UpdateDeviceStatu(string sId ,List<AttributesStatus> updateData)
        {
            var localDevice = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sId);
            if (localDevice != null)
            {
                foreach (var attr in updateData)
                {
                    //var localAttr2 = localDevice.attributes.Find((obj) => obj.key == attr.key);
                    //if (localAttr2 == null)
                    //{
                    //    //本身它就没有这个属性,则不处理
                    //    continue;
                    //}
                    ////更改属性值
                    //localAttr2.curValue = attr.value;
 
                    //var localAttr = localDevice.status.Find((obj) => obj.key == attr.key);
                    //if (localAttr == null)
                    //{
                    //    //status是当前设备上报过的属性才会存在,也就是它的个数有可能和attributes不一致
                    //    localAttr = new AttributesStatus() { key = attr.key, value = attr.value };
                    //    localDevice.status.Add(localAttr);
                    //}
                    ////更改属性值
                    //localAttr.value = attr.value;
 
                    localDevice.SetAttrState(attr.key, attr.value);
 
                }
                //全部界面推送
                HdlFormLogic.Current.DeviceStatuPush(localDevice);
            }
            return localDevice;
        }
 
        #endregion
    }
}