From a715181089be0d31cd737a5367ffd02690b9d77f Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 12 十一月 2020 13:36:01 +0800 Subject: [PATCH] 20201112 --- HDL_ON/Entity/FunctionList.cs | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 216 insertions(+), 15 deletions(-) diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index 7483e31..862f3b9 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -1,11 +1,17 @@ 锘縰sing System; using System.Collections.Generic; using System.Linq; +using HDL_ON.DAL; namespace HDL_ON.Entity { - public class FunctionList + public class FunctionList { + public FunctionList() + { + + } + /// <summary> /// 绌鸿皟鍒楄〃 /// </summary> @@ -22,23 +28,73 @@ /// 鍦扮儹鍒楄〃 /// </summary> public List<FloorHeating> floorHeatings = new List<FloorHeating>(); + #region 瀹剁數鍒楄〃 electricals + /// <summary> + /// 瀹剁數鍒楄〃 + /// </summary> + public List<Function> electricals + { + get + { + if(fans == null) + { + fans = new List<Fan>(); + } + if(switchSockets == null) + { + switchSockets = new List<SwitchSocket>(); + } + if(tVs == null) + { + tVs = new List<TV>(); + } + var list = new List<Function>(); + list.AddRange(fans); + list.AddRange(switchSockets); + list.AddRange(tVs); + return list; + } + } + /// <summary> + /// 椋庢墖鍒楄〃 + /// </summary> + public List<Fan> fans = new List<Fan>(); + /// <summary> + /// 鐢佃鍒楄〃 + /// </summary> + public List<TV> tVs = new List<TV>(); + /// <summary> + /// 瀹剁數鍒楄〃 + /// </summary> + public List<SwitchSocket> switchSockets = new List<SwitchSocket>(); + #endregion + /// <summary> + /// 鐜浼犳劅鍣ㄥ垪琛� + /// </summary> + public List<Sensor> sensorsEnvironmentalScience = new List<Sensor>(); + /// <summary> /// 鍦烘櫙鍒楄〃 /// </summary> public List<Scene> scenes = new List<Scene>(); + /// <summary> + /// 鍔熻兘鍒楄〃 + /// </summary> + List<Function> deviceFunctionList; + //[Newtonsoft.Json.JsonIgnore] + //public List<Function> functions = new List<Function>(); - [Newtonsoft.Json.JsonIgnore] - public List<Function> functions = new List<Function>(); /// <summary> /// 鑾峰彇鎵�鏈夊姛鑳藉垪琛� /// </summary> - public void GetAllFunction() + public List<Function> GetAllFunction() { - functions.Clear(); - functions.AddRange(GetAllDeviceFunctionList()); - functions.AddRange(scenes); + var fs = new List<Function>(); + fs.AddRange(GetAllDeviceFunctionList()); + fs.AddRange(scenes); + return fs; } /// <summary> @@ -46,15 +102,160 @@ /// </summary> public List<Function> GetAllDeviceFunctionList() { - var deviceFunctionList = new List<Function>(); - deviceFunctionList.AddRange(aCs); - deviceFunctionList.AddRange(lights); - deviceFunctionList.AddRange(curtains); - deviceFunctionList.AddRange(floorHeatings); - - return deviceFunctionList.OrderByDescending(o => o.usageCount).ToList(); + //if (deviceFunctionList == null || deviceFunctionList.Count == 0) + { + 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(); + } + catch (Exception ex) + { + MainPage.Log($"璁惧鍔熻兘鎺掑簭寮傚父锛歿ex.Message}"); + } + return deviceFunctionList; + } + /// <summary> + /// 娓呯┖璁惧鍔熻兘鍒楄〃 + /// </summary> + public void ClearAllDeviceFunctionList() + { + aCs = new List<AC>(); + lights = new List<Light>(); + curtains = new List<Curtain>(); + floorHeatings = new List<FloorHeating>(); + tVs = new List<TV>(); + switchSockets = new List<SwitchSocket>(); + fans = new List<Fan>(); + sensorsEnvironmentalScience = new List<Sensor>(); + //functions = new List<Function>(); + scenes = new List<Scene>(); + deviceFunctionList = null; } + /// <summary> + /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� + /// tcp鏂瑰紡 + /// </summary> + /// <param name="sidObj"></param> + public void AddDeviceFunction(Function sidObj0) + { + switch (sidObj0.functionType) + { + case FunctionType.AC: + var sidObj = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.aCs.Add(sidObj); + sidObj.SaveFunctionData(); + break; + case FunctionType.FloorHeating: + var sidObj1 = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.floorHeatings.Add(sidObj1); + sidObj1.SaveFunctionData(); + break; + case FunctionType.Dimmer: + case FunctionType.RGB: + case FunctionType.Relay: + var sidObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.lights.Add(sidObj2); + sidObj2.SaveFunctionData(); + break; + case FunctionType.Curtain: + case FunctionType.RollingShutter: + case FunctionType.MotorCurtain: + var sidObj3 = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.curtains.Add(sidObj3 ); + sidObj3.SaveFunctionData(); + break; + case FunctionType.TV: + var sidObj4 = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.tVs.Add(sidObj4); + sidObj4.SaveFunctionData(); + break; + case FunctionType.Socket: + var sidObj5 = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.switchSockets.Add(sidObj5); + sidObj5.SaveFunctionData(); + break; + case FunctionType.Fan: + var sidObj6 = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.fans.Add(sidObj6); + sidObj6.SaveFunctionData(); + break; + case FunctionType.CO2: + case FunctionType.TVOC: + case FunctionType.PM25: + case FunctionType.Temp: + case FunctionType.Humidity: + var sidObj7 = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); + DB_ResidenceData.functionList.sensorsEnvironmentalScience.Add(sidObj7); + sidObj7.SaveFunctionData(); + break; + } + } + /// <summary> + /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� + /// http udp + /// </summary> + /// <param name="obj"></param> + public void AddFunction(object obj) + { + var f = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(obj.ToString()); + + switch (f.functionCategory) + { + case FunctionCategory.Thermostat: + switch (f.functionType) + { + case FunctionType.AC: + aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString())); + break; + case FunctionType.FloorHeating: + floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString())); + break; + } + break; + case FunctionCategory.Light: + lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString())); + break; + case FunctionCategory.Curtain: + 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())); + break; + case FunctionType.Socket: + electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString())); + break; + case FunctionType.Fan: + electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString())); + break; + } + break; + case FunctionCategory.Sensor: + switch(f.functionType) + { + case FunctionType.TVOC: + case FunctionType.CO2: + case FunctionType.PM25: + case FunctionType.Humidity: + //case FunctionType.Noise: + sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString())); + break; + } + break; + } + } } - + } -- Gitblit v1.8.0