From 427ca74954126ce0d9aced18752442d064851863 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期日, 06 十二月 2020 14:27:35 +0800
Subject: [PATCH] 20201206

---
 HDL_ON/Entity/FunctionList.cs |  148 +++++++++++++++++++++++++++++++++---------------
 1 files changed, 101 insertions(+), 47 deletions(-)

diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index c88347c..a48047a 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -124,20 +124,20 @@
                         case SPK.LightRGB:
                         case SPK.LightRGBW:
                         case SPK.LightCCT:
-                            List.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString));
+                            _FunctionList.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));
+                            _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString));
                             break;
                         case SPK.AcStandard:
-                            List.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString));
+                            _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString));
                             break;
                         case SPK.FloorHeatStandard:
                             //鎭㈠鍦扮儹鏁版嵁
-                            List.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString));
+                            _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString));
                             break;
                         case SPK.SensorPm25:
                         case SPK.SensorCO2:
@@ -145,19 +145,19 @@
                         case SPK.SensorTemperature:
                         case SPK.SensorHumidity:
                             //鎭㈠鐜鏁版嵁
-                            List.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString));
+                            _FunctionList.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString));
                             break;
                         case SPK.ElectricSocket:
                             //鎭㈠鎻掑骇鏁版嵁
-                            List.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString));
+                            _FunctionList.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString));
                             break;
                         case SPK.ElectricTV:
                             //鎭㈠鐢佃鏁版嵁
-                            List.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString));
+                            _FunctionList.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString));
                             break;
                         case SPK.ElectricFan:
                             //鎭㈠椋庢墖鏁版嵁
-                            List.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString));
+                            _FunctionList.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString));
                             break;
                     }
                 }
@@ -195,14 +195,17 @@
         /// </summary>
         public List<Function> GetAllDeviceFunctionList()
         {
-            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);
+            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);
+            }
             try
             {
                 deviceFunctionList.OrderByDescending(o => o.usageCount).ToList();
@@ -305,30 +308,30 @@
                     switch (f.functionType)
                     {
                         case FunctionType.AC:
-                            aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString()));
+                            _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString()));
                             break;
                         case FunctionType.FloorHeating:
-                            floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString()));
+                            _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString()));
                             break;
                     }
                     break;
                 case FunctionCategory.Light:
-                    lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString()));
+                    _FunctionList.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString()));
                     break;
                 case FunctionCategory.Curtain:
-                    curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString()));
+                    _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString()));
                     break;
                 case FunctionCategory.Electrical:
                     switch(f.functionType)
                     {
                         case FunctionType.TV:
-                            electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString()));
+                            _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString()));
                             break;
                         case FunctionType.Socket:
-                            electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString()));
+                            _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString()));
                             break;
                         case FunctionType.Fan:
-                            electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString()));
+                            _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString()));
                             break;
                     }
                     break;
@@ -339,8 +342,8 @@
                         case FunctionType.CO2:
                         case FunctionType.PM25:
                         case FunctionType.Humidity:
-                        //case FunctionType.Noise:
-                            sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString()));
+                        case FunctionType.Temp:
+                            _FunctionList.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString()));
                             break;
                     }
                     break;
@@ -361,34 +364,41 @@
                     var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(pack.Data.ToString());
                     if (deviceList != null)
                     {
-                        foreach (var function in deviceList.list)
+                        foreach(var localFunction in List.GetAllDeviceFunctionList())
                         {
-                            var localFunction = DB_ResidenceData.functionList.GetAllDeviceFunctionList().Find((obj) => obj.deviceId == function.deviceId);
-                            if (localFunction != null)
+                            var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
+                            if (newFunction == 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();
+                                List.DeleteFunction(localFunction);
                             }
                             else
                             {
-                                function.SaveFunctionData();
-                                List.IniFunctionList(function.savePath);
+                                if (localFunction.modifyTime != newFunction.modifyTime)
+                                {
+                                    localFunction.name = newFunction.name;
+                                    localFunction.collect = newFunction.collect;
+                                    localFunction.modifyTime = newFunction.modifyTime;
+                                    localFunction.createTime = newFunction.createTime;
+                                    localFunction.roomIds = newFunction.roomIds;
+                                    localFunction.bus_Data = newFunction.bus_Data;
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        localFunction.SaveFunctionData();
+                                    })
+                                    { IsBackground = true }.Start();
+                                }
+                                deviceList.list.Remove(newFunction);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘
                             }
-
-                            var funcitonInfoPack = pm.GetDeviceInfoList(new List<string>() { function.deviceId });
-                            var funcitonInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(funcitonInfoPack.Data.ToString());
-                            if (funcitonInfo != null)
+                        }
+                        //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
+                        foreach (var newFunction in deviceList.list)
+                        {
+                            new System.Threading.Thread(() =>
                             {
-
-                            }
+                                newFunction.SaveFunctionData();
+                                List.IniFunctionList(newFunction.savePath);
+                            })
+                            { IsBackground = true }.Start();
                         }
                     }
                     MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁:\r\n{ pack.Data.ToString()}");
@@ -396,7 +406,6 @@
                 {
                     MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:\r\nCode:{pack.Code};  Msg:{pack.message}");
                 }
-
             })
             { IsBackground = true }.Start();
         }
@@ -448,6 +457,51 @@
             scene.DeleteSign = true;
             List.scenes.Remove(scene);
         }
+        /// <summary>
+        /// 鍒犻櫎鏈湴鍔熻兘鏂囦欢
+        /// </summary>
+        public void DeleteFunction(Function delTemp)
+        {
+            switch (delTemp.spk)
+            {
+                case SPK.LightSwitch:
+                case SPK.LightDimming:
+                case SPK.LightRGB:
+                case SPK.LightRGBW:
+                case SPK.LightCCT:
+                    _FunctionList.lights.Remove(_FunctionList.lights.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.CurtainRoller:
+                case SPK.CurtainShades:
+                case SPK.CurtainSwitch:
+                case SPK.CurtainTrietex:
+                    _FunctionList.curtains.Remove(_FunctionList.curtains.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.AcStandard:
+                    _FunctionList.aCs.Remove(_FunctionList.aCs.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.FloorHeatStandard:
+                    _FunctionList.floorHeatings.Remove(_FunctionList.floorHeatings.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.SensorPm25:
+                case SPK.SensorCO2:
+                case SPK.SensorTVOC:
+                case SPK.SensorTemperature:
+                case SPK.SensorHumidity:
+                    _FunctionList.sensorsEnvironmentalScience.Remove(_FunctionList.sensorsEnvironmentalScience.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.ElectricSocket:
+                    _FunctionList.switchSockets.Remove(_FunctionList.switchSockets.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.ElectricTV:
+                    _FunctionList.tVs.Remove(_FunctionList.tVs.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+                case SPK.ElectricFan:
+                    _FunctionList.fans.Remove(_FunctionList.fans.Find((obj) => obj.deviceId == delTemp.deviceId));
+                    break;
+            }
+            FileUtils.DeleteFile(delTemp.savePath);
+        }
 
     }
 

--
Gitblit v1.8.0