From 37c315988c2dc11e4f477233f7a9f87d57bb61aa Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期一, 08 三月 2021 09:17:15 +0800 Subject: [PATCH] 数据结构优化修改 --- HDL_ON/Entity/FunctionList.cs | 378 ++++++++++++++++-------------------------------------- 1 files changed, 112 insertions(+), 266 deletions(-) diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index 845ab49..8d83075 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -16,7 +16,7 @@ { get { - if(_FunctionList == null) + if (_FunctionList == null) { _FunctionList = new FunctionList(); #region 鎭㈠鏁版嵁 @@ -35,126 +35,160 @@ /// </summary> public List<Function> Functions = new List<Function>(); - - - - /// <summary> /// 绌鸿皟鍒楄〃 /// </summary> - public List<AC> aCs = new List<AC>(); + /// <returns></returns> + public List<Function> GetAcList() + { + return Functions.FindAll((obj) => obj.spk == SPK.AcStandard); + } + + /// <summary> + /// + /// </summary> + /// <returns></returns> + public List<Function> GetList() + { + List<Function> list = new List<Function>(); + + + return list; + } + /// <summary> /// 鐏厜鍒楄〃 /// </summary> - public List<Light> lights = new List<Light>(); + 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); + } /// <summary> /// 绐楀笜鍒楄〃 /// </summary> - public List<Curtain> curtains = new List<Curtain>(); + public List<Function> GetCurtainList() + { + return Functions.FindAll((obj) => + obj.spk == SPK.CurtainRoller + || obj.spk == SPK.CurtainShades + || obj.spk == SPK.CurtainSwitch + || obj.spk == SPK.CurtainTrietex + ); + } + /// <summary> /// 鍦扮儹鍒楄〃 /// </summary> - public List<FloorHeating> floorHeatings = new List<FloorHeating>(); + public List<Function> GetFloorHeatingList() + { + return Functions.FindAll((obj) => obj.spk == SPK.FloorHeatStandard); + } #region 瀹剁數鍒楄〃 electricals /// <summary> /// 瀹剁數鍒楄〃 /// </summary> - public List<Function> electricals + public List<Function> GetElectricals() { - get - { - if(fans == null) - { - fans = new List<Fan>(); - } - if(switchSockets == null) - { - switchSockets = new List<SwitchSocket>(); - } - if(tVs == null) - { - tVs = new List<TV>(); - } - if (airCleaners == null) - { - airCleaners = new List<AirCleaner>(); - } - if (weepRobots == null) - { - weepRobots = new List<WeepRobot>(); - } - if(waterValveList == null) - { - waterValveList = new List<Function>(); - } - if(clothesHangerList == null) - { - clothesHangerList = new List<Function>(); - } - var list = new List<Function>(); - list.AddRange(fans); - list.AddRange(switchSockets); - list.AddRange(tVs); - list.AddRange(airCleaners); - list.AddRange(weepRobots); - list.AddRange(waterValveList); - list.AddRange(clothesHangerList); - return list; - } + + return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan + || obj.spk == SPK.ElectricSocket + || obj.spk == SPK.ElectricTV + || obj.spk == SPK.ElectricTuyaAirCleaner + || obj.spk == SPK.ElectricTuyaWeepRobot + || obj.spk == SPK.ElectricTuyaWaterValve + || obj.spk == SPK.ClothesHanger); } /// <summary> /// 椋庢墖鍒楄〃 /// </summary> - public List<Fan> fans = new List<Fan>(); + public List<Function> GetFanList() + { + return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan); + } /// <summary> /// 鐢佃鍒楄〃 /// </summary> - public List<TV> tVs = new List<TV>(); + public List<Function> GetTVList() + { + return Functions.FindAll((obj) => obj.spk == SPK.ElectricTV); + } /// <summary> - /// 瀹剁數鍒楄〃 + /// 瀹剁數鎻掑骇鍒楄〃 /// </summary> - public List<SwitchSocket> switchSockets = new List<SwitchSocket>(); + public List<Function> GetElectricSocketList() + { + return Functions.FindAll((obj) => obj.spk == SPK.ElectricSocket); + } /// <summary> /// 绌烘皵鍑�鍖栧櫒鍒楄〃 /// </summary> - public List<AirCleaner> airCleaners = new List<AirCleaner>(); + public List<Function> GetAirCleanerList() + { + return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaAirCleaner); + } /// <summary> /// 鎵湴鏈哄櫒浜哄垪琛� /// </summary> - public List<WeepRobot> weepRobots = new List<WeepRobot>(); + public List<Function> GetWeepRobotList() + { + return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaWeepRobot); + } /// <summary> /// 姘撮榾鍒楄〃 /// </summary> - public List<Function> waterValveList = new List<Function>(); + public List<Function> GetWaterValveList() + { + return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaWaterValve); + } /// <summary> /// 鍑夐湼鍒楄〃 /// </summary> - public List<Function> clothesHangerList = new List<Function>(); + public List<Function> GetClothesHangerList () + { + return Functions.FindAll((obj) => obj.spk == SPK.ClothesHanger); + } /// <summary> /// 绾㈠瀹濆垪琛� /// </summary> - public List<Function> irModule = new List<Function>(); + public List<Function> GetIrModuleList() + { + return Functions.FindAll((obj) => obj.spk == SPK.IrModule); + } #endregion /// <summary> /// 鐜浼犳劅鍣ㄥ垪琛� /// </summary> - public List<Sensor> sensorsEnvironmentalScience = new List<Sensor>(); + 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 + ); + } /// <summary> /// 瀹夐槻璁惧鍒楄〃 /// </summary> - public List<Sensor> sensorsArm = new List<Sensor>(); + public List<Function> GetArmSensorList() + { + return Functions.FindAll((obj) => obj.spk == SPK.SensorSmoke + || obj.spk == SPK.SensorWater + || obj.spk == SPK.SensorDoorWindow + || obj.spk == SPK.SensorPir + ); + } public List<Scene> scenes = new List<Scene>(); - /// <summary> - /// 鍔熻兘鍒楄〃 - /// </summary> - List<Function> deviceFunctionList = new List<Function>(); - /// <summary> /// 鍔犺浇鍔熻兘鍒楄〃 - /// todo 闇�瑕佷紭鍖栵紝鍚庢湡涓嶈兘淇濊瘉鑳戒娇鐢╯id瑙f瀽鍑烘槸浠�涔堢被鍨嬬殑璁惧 /// </summary> /// <param name="filePath"></param> public void IniFunctionList(string filePath) @@ -162,7 +196,7 @@ // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃 if (filePath.StartsWith("FunctionData_")) { - var functionDataBytes = Common.FileUtlis.Files.ReadFile(filePath); + 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) @@ -170,100 +204,10 @@ FileUtlis.Files.DeleteFile(filePath); return; } - { - switch (tempFunction.spk) - { - case SPK.LightSwitch: - case SPK.LightDimming: - case SPK.LightRGB: - case SPK.LightRGBW: - case SPK.LightCCT: - var light = Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString); - List.lights.Add(light); - deviceFunctionList.Add(light); - break; - case SPK.CurtainRoller: - case SPK.CurtainShades: - case SPK.CurtainSwitch: - case SPK.CurtainTrietex: - var curtain = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString); - List.curtains.Add(curtain); - deviceFunctionList.Add(curtain); - break; - case SPK.AcStandard: - var ac = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString); - List.aCs.Add(ac); - deviceFunctionList.Add(ac); - break; - case SPK.FloorHeatStandard: - var fh = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString); - List.floorHeatings.Add(fh); - deviceFunctionList.Add(fh); - break; - case SPK.SensorPm25: - case SPK.SensorCO2: - case SPK.SensorTVOC: - case SPK.SensorTemperature: - case SPK.SensorHumidity: - var sensor = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString); - List.sensorsEnvironmentalScience.Add(sensor); - deviceFunctionList.Add(sensor); - break; - case SPK.ElectricSocket: - var ele = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString); - List.switchSockets.Add(ele); - deviceFunctionList.Add(ele); - break; - case SPK.ElectricTV: - var tv = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString); - List.tVs.Add(tv); - deviceFunctionList.Add(tv); - break; - case SPK.ElectricFan: - var fan = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString); - List.fans.Add(fan); - deviceFunctionList.Add(fan); - break; - case SPK.ElectricTuyaAirCleaner: - var airCleaner = Newtonsoft.Json.JsonConvert.DeserializeObject<AirCleaner>(functionDataString); - List.airCleaners.Add(airCleaner); - deviceFunctionList.Add(airCleaner); - break; - case SPK.ElectricTuyaFan: - var tuyaFan = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString); - List.fans.Add(tuyaFan); - deviceFunctionList.Add(tuyaFan); - break; - case SPK.ElectricTuyaWeepRobot: - var tuyaWeepRobot = Newtonsoft.Json.JsonConvert.DeserializeObject<WeepRobot>(functionDataString); - List.weepRobots.Add(tuyaWeepRobot); - deviceFunctionList.Add(tuyaWeepRobot); - break; - case SPK.ElectricTuyaWaterValve: - var tuyaWaterValve = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); - List.waterValveList.Add(tuyaWaterValve); - deviceFunctionList.Add(tuyaWaterValve); - break; - case SPK.SensorSmoke: - case SPK.SensorWater: - case SPK.SensorDoorWindow: - case SPK.SensorPir: - var ser = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString); - List.sensorsArm.Add(ser); - deviceFunctionList.Add(ser); - break; - case SPK.ClothesHanger: - var ch = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); - List.clothesHangerList.Add(ch); - deviceFunctionList.Add(ch); - break; - case SPK.IrModule: - var irm = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); - List.irModule.Add(irm); - deviceFunctionList.Add(irm); - break; - } - } + + + Functions.Add(tempFunction); + } if (filePath.StartsWith("SceneData_")) { @@ -279,27 +223,6 @@ /// </summary> public List<Function> GetDeviceFunctionList(SPK.BrandType brandType = SPK.BrandType.All) { - 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(sensorsArm); - deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList); - try - { - deviceFunctionList = deviceFunctionList.OrderByDescending(o => o.controlCounter).ToList(); - } - catch (Exception ex) - { - MainPage.Log($"璁惧鍔熻兘鎺掑簭寮傚父锛歿ex.Message}"); - } - } - List<Function> resultFunctions = new List<Function>(); if (brandType == SPK.BrandType.All) { @@ -309,7 +232,7 @@ switch (brandType) { case SPK.BrandType.Hdl: - foreach (var function in deviceFunctionList) + foreach (var function in Functions) { if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(function.spk)) { @@ -319,7 +242,7 @@ break; case SPK.BrandType.Tuya: - foreach (var function in deviceFunctionList) + foreach (var function in Functions) { if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(function.spk)) { @@ -331,7 +254,7 @@ return resultFunctions; } - return deviceFunctionList; + return Functions; } /// <summary> @@ -339,23 +262,7 @@ /// </summary> public void Clear() { - List.aCs = new List<AC>(); - List.lights = new List<Light>(); - List.curtains = new List<Curtain>(); - List.floorHeatings = new List<FloorHeating>(); - List.sensorsEnvironmentalScience = new List<Sensor>(); - #region 瀹剁數 - List.fans = new List<Fan>(); - List.switchSockets = new List<SwitchSocket>(); - List.tVs = new List<TV>(); - List.airCleaners = new List<AirCleaner>(); - List.weepRobots = new List<WeepRobot>(); - List.waterValveList = new List<Function>(); - List.clothesHangerList = new List<Function>(); - #endregion - - List.scenes = new List<Scene>(); - List.deviceFunctionList = new List<Function>(); + Functions = new List<Function>(); _FunctionList = null; } @@ -408,69 +315,8 @@ /// </summary> public void DeleteFunction(Function delTemp) { - switch (delTemp.spk) - { - case SPK.LightSwitch: - case SPK.LightDimming: - case SPK.LightRGB: - case SPK.LightRGBW: - case SPK.LightCCT: - List.lights.Remove(List.lights.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.CurtainRoller: - case SPK.CurtainShades: - case SPK.CurtainSwitch: - case SPK.CurtainTrietex: - List.curtains.Remove(List.curtains.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.AcStandard: - List.aCs.Remove(List.aCs.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.FloorHeatStandard: - List.floorHeatings.Remove(List.floorHeatings.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.SensorPm25: - case SPK.SensorCO2: - case SPK.SensorTVOC: - case SPK.SensorTemperature: - case SPK.SensorHumidity: - List.sensorsEnvironmentalScience.Remove(List.sensorsEnvironmentalScience.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ElectricSocket: - List.switchSockets.Remove(List.switchSockets.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ElectricTV: - List.tVs.Remove(List.tVs.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ElectricFan: - case SPK.ElectricTuyaFan: - List.fans.Remove(List.fans.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ElectricTuyaAirCleaner: - List.airCleaners.Remove(List.airCleaners.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ElectricTuyaWaterValve: - List.waterValveList.Remove(List.waterValveList.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ElectricTuyaWeepRobot: - List.weepRobots.Remove(List.weepRobots.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.ClothesHanger: - List.clothesHangerList.Remove(List.clothesHangerList.Find((obj) => obj.deviceId == delTemp.deviceId)); - break; - case SPK.SensorSmoke: - case SPK.SensorWater: - case SPK.SensorDoorWindow: - case SPK.SensorPir: - List.sensorsArm.Remove(List.sensorsArm.Find((obj)=>obj.deviceId == delTemp.deviceId)); - break; - } - var removeTemp = deviceFunctionList.Find((obj) => obj.deviceId == delTemp.deviceId); - if(removeTemp!= null) - { - deviceFunctionList.Remove(removeTemp); - } - Common.FileUtlis.Files.DeleteFile(delTemp.savePath); + Functions.Remove(Functions.Find((obj) => obj.deviceId == delTemp.deviceId)); + FileUtlis.Files.DeleteFile(delTemp.savePath); } bool lockReadFunctionStatus = false; -- Gitblit v1.8.0