From 23ca39219c5075d829d14137cb54896a24ae513d Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期五, 04 十二月 2020 13:57:08 +0800 Subject: [PATCH] 20201204 --- HDL_ON/Entity/FunctionList.cs | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 280 insertions(+), 15 deletions(-) diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index cce8348..c5e82f0 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -2,11 +2,32 @@ using System.Collections.Generic; using System.Linq; using HDL_ON.DAL; +using HDL_ON.DAL.Server; namespace HDL_ON.Entity { public class 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> /// 绌鸿皟鍒楄〃 /// </summary> @@ -76,9 +97,153 @@ /// 鍔熻兘鍒楄〃 /// </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_")) + { + //if (filePath.Length == 13 + 28) + //{ + // var _functionTypeString = filePath.Substring(16 + 13, 4); + // var ft = (FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(_functionTypeString, 16)); + // switch (ft) + // { + // case FunctionType.AC: + // //鎭㈠绌鸿皟鏁版嵁 + // var acDataBytes = FileUtils.ReadFile(filePath); + // var acString = System.Text.Encoding.UTF8.GetString(acDataBytes); + // List.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(acString)); + // break; + // case FunctionType.Relay: + // case FunctionType.Dimmer: + // case FunctionType.RGB: + // //鎭㈠鐏厜鏁版嵁 + // var lightsDataBytes = FileUtils.ReadFile(filePath); + // var lightsString = System.Text.Encoding.UTF8.GetString(lightsDataBytes); + // List.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(lightsString)); + // break; + // case FunctionType.Curtain: + // case FunctionType.MotorCurtain: + // case FunctionType.RollingShutter: + // //鎭㈠绐楀笜鏁版嵁 + // var curtainsDataBytes = FileUtils.ReadFile(filePath); + // var curtainsString = System.Text.Encoding.UTF8.GetString(curtainsDataBytes); + // List.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(curtainsString)); + // break; + // case FunctionType.FloorHeating: + // //鎭㈠鍦扮儹鏁版嵁 + // var fhDataBytes = FileUtils.ReadFile(filePath); + // var fhString = System.Text.Encoding.UTF8.GetString(fhDataBytes); + // List.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(fhString)); + // break; + // case FunctionType.PM25: + // case FunctionType.CO2: + // case FunctionType.TVOC: + // case FunctionType.Temp: + // case FunctionType.Humidity: + // //鎭㈠鐜鏁版嵁 + // var sesDataBytes = FileUtils.ReadFile(filePath); + // var sesString = System.Text.Encoding.UTF8.GetString(sesDataBytes); + // List.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(sesString)); + // break; + // case FunctionType.Socket: + // //鎭㈠鎻掑骇鏁版嵁 + // var eleDataBytes = FileUtils.ReadFile(filePath); + // var eleString = System.Text.Encoding.UTF8.GetString(eleDataBytes); + // List.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(eleString)); + // break; + // case FunctionType.TV: + // //鎭㈠鐢佃鏁版嵁 + // var eleDataBytes1 = FileUtils.ReadFile(filePath); + // var eleString1 = System.Text.Encoding.UTF8.GetString(eleDataBytes1); + // List.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(eleString1)); + // break; + // case FunctionType.Fan: + // //鎭㈠椋庢墖鏁版嵁 + // var eleDataBytes2 = FileUtils.ReadFile(filePath); + // var eleString2 = System.Text.Encoding.UTF8.GetString(eleDataBytes2); + // List.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(eleString2)); + // break; + // } + //} + //else//sid闈炴爣鍑嗘儏鍐典笅锛岄�氳繃spk鍔犺浇璁惧 + { + 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> @@ -96,17 +261,14 @@ /// </summary> public List<Function> GetAllDeviceFunctionList() { - //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); - } + 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(); @@ -130,7 +292,6 @@ switchSockets = new List<SwitchSocket>(); fans = new List<Fan>(); sensorsEnvironmentalScience = new List<Sensor>(); - //functions = new List<Function>(); scenes = new List<Scene>(); deviceFunctionList = null; } @@ -202,7 +363,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: @@ -250,6 +412,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