From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL_ON/Entity/FunctionList.cs |  343 ++++++++++++++++++++++++++++++++------------------------
 1 files changed, 194 insertions(+), 149 deletions(-)

diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 7239051..b76cae2 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -5,6 +5,7 @@
 using HDL_ON.Common;
 using HDL_ON.DAL;
 using HDL_ON.DAL.Server;
+using HDL_ON.DriverLayer;
 using Shared;
 
 namespace HDL_ON.Entity
@@ -41,19 +42,8 @@
         /// <returns></returns>
         public List<Function> GetAcList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.AcStandard || obj.spk == SPK.AcIr);
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <returns></returns>
-        public List<Function> GetList()
-        {
-            List<Function> list = new List<Function>();
-
-
-            return list;
+            var spkList = SPK.AcSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
 
         /// <summary>
@@ -61,24 +51,16 @@
         /// </summary>
         public List<Function> GetLightList()
         {
-            return Functions.FindAll((obj) =>
-                        obj.spk == SPK.LightSwitch
-                     || obj.spk == SPK.LightDimming
-                     || obj.spk == SPK.LightRGB
-                     || obj.spk == SPK.LightRGBW
-                     || obj.spk == SPK.LightCCT);
+            var spkList = SPK.LightSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
         /// <summary>
         /// 绐楀笜鍒楄〃
         /// </summary>
         public List<Function> GetCurtainList()
         {
-            return Functions.FindAll((obj) =>
-                       obj.spk == SPK.CurtainRoller
-                    || obj.spk == SPK.CurtainShades
-                    || obj.spk == SPK.CurtainSwitch
-                    || obj.spk == SPK.CurtainTrietex
-            );
+            var spkList = SPK.CurtainSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
 
         /// <summary>
@@ -86,82 +68,41 @@
         /// </summary>
         public List<Function> GetFloorHeatingList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.FloorHeatStandard);
+            var spkList = SPK.FhSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
+
+        /// <summary>
+        /// 鏂伴鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetAirFreshList()
+        {
+            var spkList = SPK.AirFreshSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
+        }
+
+        /// <summary>
+        /// 鑳芥簮鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetEnergyList()
+        {
+            var spkList = SPK.EnergySpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
+        }
+
         #region 瀹剁數鍒楄〃 electricals
         /// <summary>
         /// 瀹剁數鍒楄〃
         /// </summary>
         public List<Function> GetElectricals()
         {
-
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan
-                || obj.spk == SPK.ElectricSocket
-                || obj.spk == SPK.IrLearn
-                || obj.spk == SPK.TvIr
-                || obj.spk == SPK.ElectricTV
-                || obj.spk == SPK.ElectricTuyaAirCleaner
-                || obj.spk == SPK.ElectricTuyaWeepRobot
-                || obj.spk == SPK.ElectricTuyaWaterValve
-                || obj.spk == SPK.ClothesHanger);
+            var spkList = SPK.ElectricalSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
-        /// <summary>
-        /// 閬ユ帶鍣ㄥ垪琛�
-        /// </summary>
-        /// <returns></returns>
-        public List<Function> GetIrLearinList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.IrLearn);
-        }
-        /// <summary>
-        /// 椋庢墖鍒楄〃
-        /// </summary>
-        public List<Function> GetFanList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan);
-        }
-        /// <summary>
-        /// 鐢佃鍒楄〃
-        /// </summary>
-        public List<Function> GetTVList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTV || obj.spk == SPK.TvIr);
-        }
-        /// <summary>
-        /// 瀹剁數鎻掑骇鍒楄〃
-        /// </summary>
-        public List<Function> GetElectricSocketList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricSocket);
-        }
-        /// <summary>
-        /// 绌烘皵鍑�鍖栧櫒鍒楄〃
-        /// </summary>
-        public List<Function> GetAirCleanerList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaAirCleaner);
-        }
-        /// <summary>
-        /// 鎵湴鏈哄櫒浜哄垪琛�
-        /// </summary>
-        public List<Function> GetWeepRobotList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaWeepRobot);
-        }
-        /// <summary>
-        /// 姘撮榾鍒楄〃
-        /// </summary>
-        public List<Function> GetWaterValveList()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaWaterValve);
-        }
-        /// <summary>
-        /// 鍑夐湼鍒楄〃
-        /// </summary>
-        public List<Function> GetClothesHangerList ()
-        {
-            return Functions.FindAll((obj) => obj.spk == SPK.ClothesHanger);
-        }
+    
+      
         /// <summary>
         /// 绾㈠瀹濆垪琛�
         /// </summary>
@@ -169,62 +110,155 @@
         {
             return Functions.FindAll((obj) => obj.spk == SPK.IrModule);
         }
-
         #endregion
+
+        /// <summary>
+        /// 闊充箰鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetMusicList()
+        {
+            var spkList = SPK.MusicSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
+        }
+
+
         /// <summary>
         /// 鐜浼犳劅鍣ㄥ垪琛�
         /// </summary>
         public List<Function> GetEnvirSensorsList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.SensorPm25
-                    || obj.spk == SPK.SensorCO2
-                    || obj.spk == SPK.SensorTVOC
-                    || obj.spk == SPK.SensorTemperature
-                    || obj.spk == SPK.SensorHumidity
-                    );
+            var spkList = SPK.EnvironDeviceSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
         /// <summary>
         /// 瀹夐槻璁惧鍒楄〃
         /// </summary>
         public List<Function> GetArmSensorList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.SensorSmoke
-                    || obj.spk == SPK.SensorWater
-                    || obj.spk == SPK.SensorDoorWindow
-                    || obj.spk == SPK.SensorPir
-            );
+            var spkList = SPK.ArmSensorSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
 
+        /// <summary>
+        /// 鍙瀵硅鍒楄〃,褰撲负null鎴杝ize涓�0鍒欎笉鏄剧ず鍙瀵硅icon
+        /// </summary>
+        // public UI.UI2.FuntionControlView.Video.VideoClouds videoIntercom;
+        public List<UI.UI2.FuntionControlView.Video.Video> videoIntercom = new List<UI.UI2.FuntionControlView.Video.Video>();
+
+        List<Function> _OtherBrandFunction;
+        /// <summary>
+        /// 绗笁鏂瑰搧鐗屽姛鑳�
+        /// </summary>
+        public List<Function> OtherBrandFunction
+        {
+            get
+            {
+                if(_OtherBrandFunction == null)
+                {
+                    _OtherBrandFunction = new List<Function>();
+                    var spkList = SPK.GetAll3tySPK();
+                    _OtherBrandFunction = Functions.FindAll((obj) => spkList.Contains(obj.spk));
+                }
+                return _OtherBrandFunction;
+            }
+        }
+
+
+        /// <summary>
+        /// 鍦烘櫙鍒楄〃
+        /// </summary>
         public List<Scene> scenes = new List<Scene>();
+
+        /// <summary>
+        /// 瀹夐槻鍒楄〃
+        /// </summary>
+        public List<SecurityAlarm> securities = new List<SecurityAlarm>();
+
 
         /// <summary>
         /// 鍔犺浇鍔熻兘鍒楄〃
         /// </summary>
         /// <param name="filePath"></param>
-        public void IniFunctionList(string filePath)
+        /// <param name="checkRepeat">
+        /// <para>鑰冭檻鍒版�ц兘闂杩藉姞姝ゅ彉閲�,鏄惁妫�娴嬮噸澶�,鍙function鏈夋晥</para>
+        /// <para>true:褰撻噸澶嶅瓨鍦ㄦ椂,鏇挎崲鎺�</para>
+        /// <para>false:鐩存帴鏃犳潯浠舵坊鍔�</para></param>
+        public void IniFunctionList(string filePath, bool checkRepeat = false)
         {
-            // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃
-            if (filePath.StartsWith("FunctionData_"))
+            try
             {
-                var functionDataBytes = FileUtlis.Files.ReadFile(filePath);
-                var functionDataString = System.Text.Encoding.UTF8.GetString(functionDataBytes);
-                var tempFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString);
-                if (tempFunction == null)
+                // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃
+                if (filePath.StartsWith("FunctionData_"))
                 {
-                    FileUtlis.Files.DeleteFile(filePath);
-                    return;
+                    var functionDataBytes = FileUtlis.Files.ReadFile(filePath);
+                    var functionDataString = System.Text.Encoding.UTF8.GetString(functionDataBytes);
+                    var tempFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString);
+                    if (tempFunction == null)
+                    {
+                        MainPage.Log("null");
+                        FileUtlis.Files.DeleteFile(filePath);
+                        return;
+                    }
+                    //闊充箰閮ㄥ垎瑕佷慨鏀�
+                    //if(tempFunction.spk.ToString() == SPK.MusicStandard)
+                    //{
+                    //    UI.Music.A31MusicModel.A31MusicModelList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<UI.Music.A31MusicModel>(functionDataString));
+                    //}
+                    if (checkRepeat == true)
+                    {
+                        //妫�娴嬮噸澶�
+                        for (int i = 0; i < Functions.Count; i++)
+                        {
+                            if (Functions[i].deviceId == tempFunction.deviceId)
+                            {
+                                //鍏堢Щ闄ゆ帀鍐嶅姞
+                                Functions.RemoveAt(i);
+                                Functions.Add(tempFunction);
+                                return;
+                            }
+                        }
+                    }
+                    Functions.Add(tempFunction);
                 }
-
-
-                Functions.Add(tempFunction);
-
+                if (filePath.StartsWith("SceneData_"))
+                {
+                    var sceneDataBytes = FileUtlis.Files.ReadFile(filePath);
+                    var sceneDataString = System.Text.Encoding.UTF8.GetString(sceneDataBytes);
+                    var tempScene = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(sceneDataString);
+                    List.scenes.Add(tempScene);
+                }
+                else if (filePath.StartsWith("SecurityData_"))
+                {
+                    var dataBytes = FileUtlis.Files.ReadFile(filePath);
+                    var dataString = System.Text.Encoding.UTF8.GetString(dataBytes);
+                    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityAlarm>(dataString);
+                    if (temp == null)
+                    {
+                        MainPage.Log("null");
+                        FileUtlis.Files.DeleteFile(filePath);
+                        return;
+                    }
+                    if (checkRepeat == true)
+                    {
+                        //妫�娴嬮噸澶�
+                        for (int i = 0; i < securities.Count; i++)
+                        {
+                            if (securities[i].sid == temp.sid)
+                            {
+                                //鍏堢Щ闄ゆ帀鍐嶅姞
+                                securities.RemoveAt(i);
+                                securities.Add(temp);
+                                return;
+                            }
+                        }
+                    }
+                    securities.Add(temp);
+                }
             }
-            if (filePath.StartsWith("SceneData_"))
+            catch (Exception ex)
             {
-                var sceneDataBytes = FileUtlis.Files.ReadFile(filePath);
-                var sceneDataString = System.Text.Encoding.UTF8.GetString(sceneDataBytes);
-                var tempScene = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(sceneDataString);
-                List.scenes.Add(tempScene);
+                MainPage.Log($"IniFunctionList error : {ex.Message}");
             }
         }
 
@@ -252,11 +286,14 @@
                         break;
 
                     case SPK.BrandType.Tuya:
-                        foreach (var function in Functions)
+                        lock (Functions)
                         {
-                            if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(function.spk))
+                            foreach (var function in Functions)
                             {
-                                resultFunctions.Add(function);
+                                if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(function.spk))
+                                {
+                                    resultFunctions.Add(function);
+                                }
                             }
                         }
                         break;
@@ -266,6 +303,9 @@
 
             return Functions;
         }
+
+
+
 
         /// <summary>
         /// 娓呯┖璁惧鍔熻兘鍒楄〃
@@ -320,6 +360,7 @@
                 List.scenes.Remove(scene);
             }
         }
+
         /// <summary>
         /// 鍒犻櫎鏈湴鍔熻兘鍙婃枃浠�
         /// </summary>
@@ -384,24 +425,18 @@
                     {
                         foreach (var function in GetDeviceFunctionList(SPK.BrandType.Hdl))
                         {
-                            switch (function.Spk_Prefix)
-                            {
-                                case FunctionCategory.Music:
-                                case FunctionCategory.DryContact:
-                                    continue;
-                            }
-                            DriverLayer.Control.Ins.SendReadCommand(function);
-                            //switch (function.Spk_Prefix)
-                            //{
-                            //    case FunctionCategory.Light:
-                            //    case FunctionCategory.Electric:
-                            //    case FunctionCategory.Curtain:
-                            //    case FunctionCategory.AC:
-                            //    case FunctionCategory.FloorHeat:
-                            //    case FunctionCategory.Sensor:
-                            //        DriverLayer.Control.Ins.SendReadCommand(function);
-                            //        break;
-                            //}
+                            Control.Ins.SendReadCommand(function);
+                        }
+                        if(DB_ResidenceData.Instance.GatewayType == 1)
+                        {
+                            Dictionary<string, string> pairs = new Dictionary<string, string>();
+                            string sendId = Control.Ins.msg_id.ToString();
+                            pairs.Add("id", sendId);
+                            pairs.Add("time_stamp", Utlis.GetTimestamp());
+                            var readSecurityStatusJson = Newtonsoft.Json.JsonConvert.SerializeObject(pairs);
+                            var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadSecurityStatus, readSecurityStatusJson);
+                            MainPage.Log($"鏈湴閫氳 璇诲彇瀹夐槻鐘舵��:{readSecurityStatusJson}");
+                            new Control_Udp().SendLocalHdlLinkData(sendBytes, sendId);
                         }
                     }
                     else
@@ -437,6 +472,7 @@
             })
             { IsBackground = true }.Start();
         }
+
         #region 鍦烘櫙鐩稿叧
         /// <summary>
         /// 娣诲姞鍦烘櫙
@@ -448,11 +484,20 @@
             var revPack = pm.AddScene(scene);
             if (revPack.Code == StateCode.SUCCESS)
             {
-                var sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
-                tempScene = sceneList.Find((obj) => obj.sid == scene.sid);
-                var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
-                FileUtlis.Files.WriteFileByBytes(scene.savePath, ssd);
-                result = tempScene;
+                if (MainPage.NoLoginMode)
+                {
+                    var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(scene));
+                    FileUtlis.Files.WriteFileByBytes(scene.savePath, ssd);
+                    result = scene;
+                }
+                else
+                {
+                    var sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+                    tempScene = sceneList.Find((obj) => obj.sid == scene.sid);
+                    var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+                    FileUtlis.Files.WriteFileByBytes(scene.savePath, ssd);
+                    result = tempScene;
+                }
             }
             else
             {

--
Gitblit v1.8.0