From d76b0e40e5bb127fd33aa1f7842447a1df0628d5 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期日, 30 七月 2023 22:16:34 +0800
Subject: [PATCH] Update PublicAssmeblyBLL.cs

---
 HDL_ON/Entity/Function/Function.cs |  259 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 249 insertions(+), 10 deletions(-)

diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index f180034..a5ec58e 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -100,7 +100,7 @@
         /// <returns></returns>
         public FunctionAttributes GetAttribute(string key)
         {
-            var attr = attributes.Find((a) => a.key == key);
+            var attr = GetFunctionAttributes().Find((a) => a.key == key);
             return attr;
         }
 
@@ -109,7 +109,7 @@
         /// </summary>
         /// <param name="key"></param>
         /// <returns></returns>
-        public string GetAttrState(string key , string defaultValue = "0")
+        public string GetAttrState(string key, string defaultValue = "0")
         {
             //涓�绾ф煡璇eyValue鍊�
             var attrState = attributes.Find((s) => s.key == key.ToString());
@@ -171,6 +171,9 @@
                 string iconPath = spk.Replace(".", "");
                 switch (spk)
                 {
+                    case SPK.AirSwitchP3:
+                        iconPath = "electricalbreaker";
+                        break;
                     case SPK.PanelSocket:
                         iconPath = "electricalsocket";
                         break;
@@ -277,6 +280,10 @@
         /// </summary>
         public string extDevId = string.Empty;
         /// <summary>
+        /// 鐗╃悊璁惧(妯″潡)鍨嬪彿
+        /// </summary>
+        public string omodel = string.Empty;
+        /// <summary>
         /// 璁惧spk
         /// </summary>
         public string spk = "";
@@ -368,6 +375,39 @@
         /// attri
         /// </summary>
         public List<FunctionAttributes> attributes = new List<FunctionAttributes>();
+
+        public List<FunctionAttributes> GetFunctionAttributes()
+        {
+            if (spk == SPK.GroupControl)
+            {
+                var list = new List<FunctionAttributes>();
+                var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                if (gc != null)
+                {
+                    foreach (var temp in gc.sids)
+                    {
+                        var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                        if (light != null)
+                        {
+                            foreach (var attr in light.attributes)
+                            {
+                                if (list.Find((obj) => obj.key == attr.key) == null)
+                                {
+                                    list.Add(attr);
+                                }
+                            }
+                        }
+                    }
+                }
+
+                return list;
+            }
+            else
+            {
+                return attributes;
+            }
+        }
+
 
         /// <summary>
         /// 鎴块棿ID鍒楄〃
@@ -690,9 +730,9 @@
         /// <summary>
         /// 淇濆瓨鎴块棿缁戝畾淇℃伅
         /// </summary>
-        public void UpdataRoomIds()
+        public async void UpdataRoomIds()
         {
-            new System.Threading.Thread(() =>
+            new System.Threading.Thread( () =>
             {
                 var pack = ApiUtlis.Ins.HttpRequest.UpdataDevcieBindRoomInfo(this);
                 //鐩存帴淇濆瓨鏈湴锛�
@@ -762,7 +802,38 @@
         public SceneFunction ConvertSceneFunction()
         {
             var sFunc = new SceneFunction();
-            foreach (var attr in attributes)
+
+            var list = new List<FunctionAttributes>();
+            if (spk == SPK.GroupControl)
+            {
+                lock (list)
+                {
+                    var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                    if (gc != null)
+                    {
+                        foreach (var temp in gc.sids)
+                        {
+                            var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                            if (light != null)
+                            {
+                                foreach (var attr in light.attributes)
+                                {
+                                    if (list.Find((obj) => obj.key == attr.key) == null)
+                                    {
+                                        list.Add(attr);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            else
+            {
+                list.AddRange(attributes);
+            }
+
+            foreach (var attr in list)
             {
                 //绐楀笜鍚屾椂鍙戦�佸紑鍏宠窡鐧惧垎姣斾細鏈夐棶棰橈紝
                 if(spk == SPK.CurtainRoller || spk == SPK.CurtainTrietex || spk == SPK.CurtainDream)
@@ -774,7 +845,35 @@
                             continue;
                         }
                     }
+                }else if (spk == SPK.GroupControl)
+                {
+                    sFunc.type = "5";
                 }
+
+                string us = "";
+                switch (attr.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                    case FunctionAttributeKey.RoomTemp:
+                        us = "掳C";
+                        var tempType = attributes.Find((obj) => obj.key == FunctionAttributeKey.TempType);
+                        if (tempType != null)
+                        {
+                            us = tempType.curValue.ToString();
+                        }
+                        break;
+                    case FunctionAttributeKey.Percent:
+                    case FunctionAttributeKey.Brightness:
+                        us = "%";
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        us = "K";
+                        break;
+                    case FunctionAttributeKey.Angle:
+                        us = "掳";
+                        break;
+                }
+
 
                 switch (attr.key)
                 {
@@ -787,11 +886,15 @@
                     case FunctionAttributeKey.CCT:
                     case FunctionAttributeKey.RGB:
                     case FunctionAttributeKey.Angle:
+                    case FunctionAttributeKey.Colorful:
+                    case FunctionAttributeKey.ColorfulBegin:
+                    case FunctionAttributeKey.ColorfulEnd:
+                    case FunctionAttributeKey.ColorfulTime:
                     case "security":
                         //case FunctionAttributeKey.FadeTime:
                         if (attr.curValue.ToString() == "{}")
                         {
-                            if (attr.key == FunctionAttributeKey.OnOff)
+                            if (attr.key == FunctionAttributeKey.OnOff || attr.key == FunctionAttributeKey.Colorful)
                             {
                                 attr.curValue = "off";
                             }
@@ -830,13 +933,16 @@
                             {
                                 vv = 26;
                             }
-                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min });
+                            sFunc.status.Add(new SceneFunctionStatus() {
+                                UintString = us,
+                                key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min }) ;
                         }
                         else
                         {
-                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min });
+                            sFunc.status.Add(new SceneFunctionStatus() {
+                                UintString = us,
+                                key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min });
                         }
-
                         break;
                 }
             }
@@ -1041,6 +1147,10 @@
         /// 褰撳墠鍊�
         /// </summary>
         public object curValue = new object();
+        /// <summary>
+        /// 灞炴�у崟浣�
+        /// </summary>
+        public string unit=string.Empty;
     }
 
     /// <summary>
@@ -1048,6 +1158,79 @@
     /// </summary>
     public static class FunctionAttributeKey
     {
+        #region 涓夌浉绌哄紑灞炴��
+        /// <summary>
+        /// A鐩稿姛鐜�
+        /// </summary>
+        public const string PowerA = "power_a";
+        /// <summary>
+        /// B鐩稿姛鐜�
+        /// </summary>
+        public const string PowerB = "power_b";
+        /// <summary>
+        /// C鐩稿姛鐜�
+        /// </summary>
+        public const string PowerC = "power_c";
+        /// <summary>
+        /// A鐩哥數鍘�
+        /// </summary>
+        public const string VoltageA = "voltage_a";
+        /// <summary>
+        /// B鐩哥數鍘�
+        /// </summary>
+        public const string VoltageB = "voltage_b";
+        /// <summary>
+        /// C鐩哥數鍘�
+        /// </summary>
+        public const string VoltageC = "voltage_c";
+        /// <summary>
+        /// A鐩哥數娴�
+        /// </summary>
+        public const string CurrentA = "current_a";
+        /// <summary>
+        /// B鐩哥數娴�
+        /// </summary>
+        public const string CurrentB = "current_b";
+        /// <summary>
+        /// C鐩哥數娴�
+        /// </summary>
+        public const string CurrentC = "current_c";
+        /// <summary>
+        /// A鐩告俯搴�
+        /// </summary>
+        public const string TempA = "temp_a";
+        /// <summary>
+        /// B鐩告俯搴�
+        /// </summary>
+        public const string TempB = "temp_b";
+        /// <summary>
+        /// C鐩告俯搴�
+        /// </summary>
+        public const string TempC = "temp_c";
+        /// <summary>
+        /// 杩囨祦鍊�
+        /// </summary>
+        public const string MaxCurrent = "max_current";
+        /// <summary>
+        /// 杩囨俯鍊�
+        /// </summary>
+        public const string MaxTemp = "max_temp";
+        /// <summary>
+        /// A鐩哥數閲�
+        /// </summary>
+        public const string ElectricityA = "electricity_a";
+        /// <summary>
+        /// B鐩哥數閲�
+        /// </summary>
+        public const string ElectricityB = "electricity_b";
+        /// <summary>
+        /// C鐩哥數閲�
+        /// </summary>
+        public const string ElectricityC = "electricity_c";
+
+        #endregion
+
+
         public const string _null = "";
         /// <summary>
         /// 瀹夐槻甯冮槻鐘舵��
@@ -1061,6 +1244,22 @@
         /// 浜害
         /// </summary>
         public const string Brightness = "brightness";
+        /// <summary>
+        /// 鐐僵寮�鍏�
+        /// </summary>
+        public const string Colorful = "colorful";
+        /// <summary>
+        /// 鐐僵寮�鍚鑹�
+        /// </summary>
+        public const string ColorfulBegin = "colorful_begin";
+        /// <summary>
+        /// 鐐僵缁撴潫棰滆壊
+        /// </summary>
+        public const string ColorfulEnd = "colorful_end";
+        /// <summary>
+        /// 鐐僵杩愯鏃堕棿
+        /// </summary>
+        public const string ColorfulTime = "colorful_time";
         /// <summary>
         /// 棰滆壊
         /// </summary>
@@ -1372,11 +1571,15 @@
         /// <summary>
         /// 缇ゆ帶锛堣嚜瀹氫箟锛�
         /// </summary>
-        public const string GroupControl = "GroupControl";
+        public const string GroupControl = "groupControl";
         /// <summary>
         /// 閫氱敤寮�鍏�
         /// </summary>
         public const string OtherCommon = "other.common";
+        /// <summary>
+        /// 搴忓垪
+        /// </summary>
+        public const string CommonSeries = "other.series";
         /// <summary>
         /// 澶у崕鎽勫儚澶�
         /// </summary>
@@ -1411,10 +1614,25 @@
             list.Add(DoorLock);
             return list;
         }
+        
+
+        /// <summary>
+        /// 鐚溂(鏃pk)
+        /// </summary>
+        public const string Peephole = "peephole";
+
+        /// <summary>
+        /// 鐚溂(鏂皊pk 鏆傛椂娌$敤)
+        /// </summary>
+        //public const string PeepholeEz = "security.peephole.ez";
         /// <summary>
         /// 钀ょ煶瑙嗛闂ㄩ攣
         /// </summary>
         public const string VideoDoorLock="security.door.ezviz";
+        /// <summary>
+        /// 钀ょ煶鎽勫儚澶�
+        /// </summary>
+        public const string Ev_Ipcam = "security.ipcam.ez";
         /// <summary>
         /// 钀ょ煶瑙嗛闂ㄩ攣spk鍒楄〃
         /// </summary>
@@ -1423,6 +1641,17 @@
         {
             var list = new List<string>();
             list.Add(VideoDoorLock);
+            return list;
+        }
+
+        /// <summary>
+        /// 钀ょ煶鎽勫儚澶磗pk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetEvIpcamSPKList()
+        {
+            var list = new List<string>();
+            list.Add(Ev_Ipcam);
             return list;
         }
 
@@ -1656,6 +1885,10 @@
         /// </summary>
         public const string SensorPir = "sensor.pir";
         /// <summary>
+        /// 浜轰綋瀛樺湪浼犳劅鍣�
+        /// </summary>
+        public const string SensorPirHold = "sensor.pir_hold";
+        /// <summary>
         /// 锛堥棬绐椾紶鎰熷櫒锛�
         /// </summary>
         public const string SensorDoorWindow = "sensor.doorwindow";
@@ -1710,6 +1943,7 @@
             var spkList = new List<string>();
             //spkList.Add(SensorLight);
             spkList.Add(SensorPir);
+            spkList.Add(SensorPirHold);
             spkList.Add(SensorHelp);
             spkList.Add(SensorDoorWindow);
             spkList.Add(SensorSmoke);
@@ -1900,6 +2134,10 @@
         /// 鏅鸿兘绌哄紑
         /// </summary>
         public const string AirSwitch = "electrical.breaker";
+        /// <summary>
+        /// 涓夌浉鏅鸿兘绌哄紑
+        /// </summary>
+        public const string AirSwitchP3 = "electrical.breakerP3";
 
         #region 娑傞甫
         /// <summary>
@@ -1953,6 +2191,7 @@
             spkList.Add(ElectricTuyaWaterValve);
             spkList.Add(ElectricTuyaWaterValve2);
             spkList.Add(AirSwitch);
+            spkList.Add(AirSwitchP3);
             return spkList;
         }
 

--
Gitblit v1.8.0