From 1d5e384497c7059e09760628dab3e83eb88f97ae Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 04 十二月 2020 17:48:34 +0800
Subject: [PATCH] 2020-12-04-4

---
 HDL_ON/Entity/FunctionList.cs |  229 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 211 insertions(+), 18 deletions(-)

diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 74a3890..c88347c 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -2,14 +2,30 @@
 using System.Collections.Generic;
 using System.Linq;
 using HDL_ON.DAL;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.Entity
 {
     public class FunctionList
     {
-        public FunctionList()
+        static FunctionList _FunctionList;
+        public static FunctionList List
         {
-
+            get
+            {
+                if(_FunctionList == null)
+                {
+                    _FunctionList = new FunctionList();
+                    #region 鎭㈠鏁版嵁
+                    var filePathList = FileUtils.ReadFiles();
+                    foreach (var filePath in filePathList)
+                    {
+                        _FunctionList.IniFunctionList(filePath);
+                    }
+                    #endregion
+                }
+                return _FunctionList;
+            }
         }
 
         /// <summary>
@@ -81,9 +97,87 @@
         /// 鍔熻兘鍒楄〃
         /// </summary>
         List<Function> deviceFunctionList;
-        //[Newtonsoft.Json.JsonIgnore]
-        //public List<Function> functions = new List<Function>();
 
+
+        /// <summary>
+        /// 鍔犺浇鍔熻兘鍒楄〃
+        /// todo 闇�瑕佷紭鍖栵紝鍚庢湡涓嶈兘淇濊瘉鑳戒娇鐢╯id瑙f瀽鍑烘槸浠�涔堢被鍨嬬殑璁惧
+        /// </summary>
+        /// <param name="filePath"></param>
+        public void IniFunctionList(string filePath)
+        {
+            if (filePath.StartsWith("FunctionData_"))
+            {
+                var functionDataBytes = FileUtils.ReadFile(filePath);
+                var functionDataString = System.Text.Encoding.UTF8.GetString(functionDataBytes);
+                var tempFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString);
+                if (tempFunction.DeleteSign)
+                {
+                    //todo 鍒犻櫎浜戠鏁版嵁 20201203--App涓嶈兘鍒犻櫎鍔熻兘鏁版嵁
+                }
+                else
+                {
+                    switch (tempFunction.spk)
+                    {
+                        case SPK.LightSwitch:
+                        case SPK.LightDimming:
+                        case SPK.LightRGB:
+                        case SPK.LightRGBW:
+                        case SPK.LightCCT:
+                            List.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString));
+                            break;
+                        case SPK.CurtainRoller:
+                        case SPK.CurtainShades:
+                        case SPK.CurtainSwitch:
+                        case SPK.CurtainTrietex:
+                            List.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString));
+                            break;
+                        case SPK.AcStandard:
+                            List.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString));
+                            break;
+                        case SPK.FloorHeatStandard:
+                            //鎭㈠鍦扮儹鏁版嵁
+                            List.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString));
+                            break;
+                        case SPK.SensorPm25:
+                        case SPK.SensorCO2:
+                        case SPK.SensorTVOC:
+                        case SPK.SensorTemperature:
+                        case SPK.SensorHumidity:
+                            //鎭㈠鐜鏁版嵁
+                            List.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString));
+                            break;
+                        case SPK.ElectricSocket:
+                            //鎭㈠鎻掑骇鏁版嵁
+                            List.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString));
+                            break;
+                        case SPK.ElectricTV:
+                            //鎭㈠鐢佃鏁版嵁
+                            List.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString));
+                            break;
+                        case SPK.ElectricFan:
+                            //鎭㈠椋庢墖鏁版嵁
+                            List.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString));
+                            break;
+                    }
+                }
+            }
+            if (filePath.StartsWith("SceneData_"))
+            {
+                var sceneDataBytes = FileUtils.ReadFile(filePath);
+                var sceneDataString = System.Text.Encoding.UTF8.GetString(sceneDataBytes);
+                var tempScene = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(sceneDataString);
+                if (tempScene.DeleteSign)
+                {
+                    var pm = new HttpServerRequest();
+                    pm.DeleteScene(tempScene.userSceneId);
+                }
+                else
+                {
+                    List.scenes.Add(tempScene);
+                }
+            }
+        }
 
 
         /// <summary>
@@ -93,7 +187,6 @@
         {
             var fs = new List<Function>();
             fs.AddRange(GetAllDeviceFunctionList());
-            fs.AddRange(scenes);
             return fs;
         }
 
@@ -102,17 +195,14 @@
         /// </summary>
         public List<Function> GetAllDeviceFunctionList()
         {
-            if (deviceFunctionList == null)
-            {
-                deviceFunctionList = new List<Function>();
-                deviceFunctionList.AddRange(aCs);
-                deviceFunctionList.AddRange(lights);
-                deviceFunctionList.AddRange(curtains);
-                deviceFunctionList.AddRange(floorHeatings);
-                deviceFunctionList.AddRange(electricals);
-                deviceFunctionList.AddRange(sensorsEnvironmentalScience);
-                deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList);
-            }
+            deviceFunctionList = new List<Function>();
+            deviceFunctionList.AddRange(aCs);
+            deviceFunctionList.AddRange(lights);
+            deviceFunctionList.AddRange(curtains);
+            deviceFunctionList.AddRange(floorHeatings);
+            deviceFunctionList.AddRange(electricals);
+            deviceFunctionList.AddRange(sensorsEnvironmentalScience);
+            deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList);
             try
             {
                 deviceFunctionList.OrderByDescending(o => o.usageCount).ToList();
@@ -136,7 +226,6 @@
             switchSockets = new List<SwitchSocket>();
             fans = new List<Fan>();
             sensorsEnvironmentalScience = new List<Sensor>();
-            //functions = new List<Function>();
             scenes = new List<Scene>();
             deviceFunctionList = null;
         }
@@ -208,7 +297,8 @@
         public void AddFunction(object obj)
         {
             var f = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(obj.ToString());
-
+            if (f == null)
+                return;
             switch (f.functionCategory)
             {
                 case FunctionCategory.Thermostat:
@@ -256,6 +346,109 @@
                     break;
             }
         }
+
+        /// <summary>
+        /// 涓嬫潵浜戠璁惧鏁版嵁
+        /// </summary>
+        public void DownloadFunctionList()
+        {
+            new System.Threading.Thread(() =>
+            {
+                var pm = new HttpServerRequest();
+                var pack = pm.GetDeviceList();
+                if (pack.Code == StateCode.SUCCESS)
+                {
+                    var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(pack.Data.ToString());
+                    if (deviceList != null)
+                    {
+                        foreach (var function in deviceList.list)
+                        {
+                            var localFunction = DB_ResidenceData.functionList.GetAllDeviceFunctionList().Find((obj) => obj.deviceId == function.deviceId);
+                            if (localFunction != null)
+                            {
+                                if (localFunction.modifyTime != function.modifyTime)
+                                {
+                                    localFunction.name = function.name;
+                                    localFunction.collect = function.collect;
+                                    localFunction.modifyTime = function.modifyTime;
+                                    localFunction.createTime = function.createTime;
+                                    localFunction.roomIds = function.roomIds;
+                                    localFunction.bus_Data = function.bus_Data;
+                                }
+                                localFunction.SaveFunctionData();
+                            }
+                            else
+                            {
+                                function.SaveFunctionData();
+                                List.IniFunctionList(function.savePath);
+                            }
+
+                            var funcitonInfoPack = pm.GetDeviceInfoList(new List<string>() { function.deviceId });
+                            var funcitonInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(funcitonInfoPack.Data.ToString());
+                            if (funcitonInfo != null)
+                            {
+
+                            }
+                        }
+                    }
+                    MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁:\r\n{ pack.Data.ToString()}");
+                }else
+                {
+                    MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:\r\nCode:{pack.Code};  Msg:{pack.message}");
+                }
+
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 涓嬭浇浜戠鍦烘櫙鏁版嵁
+        /// </summary>
+        public void DownloadSceneList()
+        {
+            new System.Threading.Thread(() =>
+            {
+                var pm = new HttpServerRequest();
+                var pack = pm.GetSceneList();
+                if(pack.Code == StateCode.SUCCESS)
+                {
+
+                    MainPage.Log($"璇诲彇浜戠鍦烘櫙鏁版嵁:\r\n{pack.Data.ToString()}");
+                }
+                else
+                {
+
+                    MainPage.Log($"璇诲彇浜戠鍦烘櫙鏁版嵁澶辫触:\r\nCode:{pack.Code};  Msg:{pack.message}");
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+
+        /// <summary>
+        /// 鍒犻櫎鎵嬫満瀛樺偍閮芥墍鏈夌紦瀛樺姛鑳芥暟鎹�
+        /// </summary>
+        public void DelAllFunctionData()
+        {
+            var filePathList = FileUtils.ReadFiles();
+            foreach (var filePath in filePathList)
+            {
+                if (filePath.StartsWith("FunctionData_") && filePath.Length == 13 + 28)
+                {
+                    FileUtils.DeleteFile(filePath);
+                }
+            }
+            _FunctionList = new FunctionList();
+        }
+        /// <summary>
+        /// 鍒犻櫎鍦烘櫙
+        /// </summary>
+        public void DeleteScene(Scene scene)
+        {
+            scene.DeleteSign = true;
+            List.scenes.Remove(scene);
+        }
+
     }
 
 }

--
Gitblit v1.8.0