using System; using System.Collections.Generic; using System.Linq; using HDL_ON.DAL; namespace HDL_ON.Entity { public class FunctionList { public FunctionList() { } /// /// 空调列表 /// public List aCs = new List(); /// /// 灯光列表 /// public List lights = new List(); /// /// 窗帘列表 /// public List curtains = new List(); /// /// 地热列表 /// public List floorHeatings = new List(); #region 家电列表 electricals /// /// 家电列表 /// public List electricals { get { if(fans == null) { fans = new List(); } if(switchSockets == null) { switchSockets = new List(); } if(tVs == null) { tVs = new List(); } var list = new List(); list.AddRange(fans); list.AddRange(switchSockets); list.AddRange(tVs); return list; } } /// /// 风扇列表 /// public List fans = new List(); /// /// 电视列表 /// public List tVs = new List(); /// /// 家电列表 /// public List switchSockets = new List(); #endregion /// /// 环境传感器列表 /// public List sensorsEnvironmentalScience = new List(); /// /// 场景列表 /// public List scenes = new List(); /// /// 功能列表 /// List deviceFunctionList; //[Newtonsoft.Json.JsonIgnore] //public List functions = new List(); /// /// 获取所有功能列表 /// public List GetAllFunction() { var fs = new List(); fs.AddRange(GetAllDeviceFunctionList()); fs.AddRange(scenes); return fs; } /// /// 获取设备功能列表 /// public List GetAllDeviceFunctionList() { if (deviceFunctionList == null) { deviceFunctionList = new List(); 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; } /// /// 清空设备功能列表 /// public void ClearAllDeviceFunctionList() { aCs = new List(); lights = new List(); curtains = new List(); floorHeatings = new List(); tVs = new List(); switchSockets = new List(); fans = new List(); sensorsEnvironmentalScience = new List(); //functions = new List(); scenes = new List(); deviceFunctionList = null; } /// /// 接收bus软件上传的功能 /// tcp方式 /// /// public void AddDeviceFunction(Function sidObj0) { switch (sidObj0.functionType) { case FunctionType.AC: var sidObj = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); DB_ResidenceData.functionList.aCs.Add(sidObj); sidObj.SaveFunctionData(); break; case FunctionType.FloorHeating: var sidObj1 = Newtonsoft.Json.JsonConvert.DeserializeObject(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(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); DB_ResidenceData.functionList.lights.Add(sidObj2); sidObj2.SaveFunctionData(); break; case FunctionType.Curtain: var sidObj3 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); DB_ResidenceData.functionList.curtains.Add(sidObj3 ); sidObj3.SaveFunctionData(); break; case FunctionType.TV: var sidObj4 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); DB_ResidenceData.functionList.tVs.Add(sidObj4); sidObj4.SaveFunctionData(); break; case FunctionType.Socket: var sidObj5 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); DB_ResidenceData.functionList.switchSockets.Add(sidObj5); sidObj5.SaveFunctionData(); break; case FunctionType.Fan: var sidObj6 = Newtonsoft.Json.JsonConvert.DeserializeObject(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(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); DB_ResidenceData.functionList.sensorsEnvironmentalScience.Add(sidObj7); sidObj7.SaveFunctionData(); break; } } /// /// 接收bus软件上传的功能 /// http udp /// /// public void AddFunction(object obj) { var f = Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()); switch (f.functionCategory) { case FunctionCategory.Thermostat: switch (f.functionType) { case FunctionType.AC: aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString())); break; case FunctionType.FloorHeating: floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString())); break; } break; case FunctionCategory.Light: lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString())); break; case FunctionCategory.Curtain: curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString())); break; case FunctionCategory.Electrical: switch(f.functionType) { case FunctionType.TV: electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString())); break; case FunctionType.Socket: electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString())); break; case FunctionType.Fan: electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(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(obj.ToString())); break; } break; } } } }