陈嘉乐
2020-12-15 a35617eb62b317bf3ed92b1462018cf67c920411
HDL_ON/Entity/FunctionList.cs
@@ -130,48 +130,51 @@
                        case SPK.LightRGB:
                        case SPK.LightRGBW:
                        case SPK.LightCCT:
                            _FunctionList.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString));
                            var light = Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString);
                            _FunctionList.lights.Add(light);
                            deviceFunctionList.Add(light);
                            break;
                        case SPK.CurtainRoller:
                        case SPK.CurtainShades:
                        case SPK.CurtainSwitch:
                        case SPK.CurtainTrietex:
                            _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString));
                            var curtain = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString);
                            _FunctionList.curtains.Add(curtain);
                            deviceFunctionList.Add(curtain);
                            break;
                        case SPK.AcStandard:
                            _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString));
                            var ac = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString);
                            _FunctionList.aCs.Add(ac);
                            deviceFunctionList.Add(ac);
                            break;
                        case SPK.FloorHeatStandard:
                            //恢复地热数据
                            _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString));
                            var fh = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString);
                            _FunctionList.floorHeatings.Add(fh);
                            deviceFunctionList.Add(fh);
                            break;
                        case SPK.SensorPm25:
                        case SPK.SensorCO2:
                        case SPK.SensorTVOC:
                        case SPK.SensorTemperature:
                        case SPK.SensorHumidity:
                            //恢复环境数据
                            _FunctionList.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString));
                            var sensor = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString);
                            _FunctionList.sensorsEnvironmentalScience.Add(sensor);
                            deviceFunctionList.Add(sensor);
                            break;
                        case SPK.ElectricSocket:
                            //恢复插座数据
                            _FunctionList.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString));
                            var ele = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString);
                            _FunctionList.switchSockets.Add(ele);
                            deviceFunctionList.Add(ele);
                            break;
                        case SPK.ElectricTV:
                            //恢复电视数据
                            _FunctionList.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString));
                            var tv = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString);
                            _FunctionList.tVs.Add(tv);
                            deviceFunctionList.Add(tv);
                            break;
                        case SPK.ElectricFan:
                            //恢复风扇数据
                            _FunctionList.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString));
                            deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString));
                            var  fan = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString);
                            _FunctionList.fans.Add(fan);
                            deviceFunctionList.Add(fan);
                            break;
                    }
                }
@@ -216,16 +219,17 @@
        /// </summary>
        public void Clear()
        {
            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>();
            scenes = new List<Scene>();
            deviceFunctionList = null;
            _FunctionList.aCs = new List<AC>();
            _FunctionList.lights = new List<Light>();
            _FunctionList.curtains = new List<Curtain>();
            _FunctionList.floorHeatings = new List<FloorHeating>();
            _FunctionList.tVs = new List<TV>();
            _FunctionList.switchSockets = new List<SwitchSocket>();
            _FunctionList.fans = new List<Fan>();
            _FunctionList.sensorsEnvironmentalScience = new List<Sensor>();
            _FunctionList.scenes = new List<Scene>();
            _FunctionList.deviceFunctionList = null;
            _FunctionList = null;
        }
        /// <summary>
@@ -377,19 +381,6 @@
                    var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(pack.Data.ToString());
                    if (deviceList != null)
                    {
                        foreach(var serverFunction in deviceList.list)
                        {
                            MainPage.Log($"deviceId:{serverFunction.deviceId}");
                        }
                        ////将下载到到数据全部保存
                        //new Thread(() => {
                        //    foreach (var temp in deviceList.list)
                        //    {
                        //        temp.SaveFunctionData();
                        //    }
                        //})
                        //{ IsBackground = true }.Start();
                        for (int i =0;i < List.GetDeviceFunctionList().Count;)
                        {
                            var localFunction = List.GetDeviceFunctionList()[i];
@@ -403,6 +394,7 @@
                                i++;
                                if (localFunction.modifyTime != newFunction.modifyTime)
                                {
                                    MainPage.Log($"local:{localFunction.modifyTime}\r\n server:{newFunction.modifyTime}");
                                    localFunction.name = newFunction.name;
                                    localFunction.collect = newFunction.collect;
                                    localFunction.modifyTime = newFunction.modifyTime;
@@ -456,6 +448,11 @@
                        for(int i=0;i<List.scenes.Count;)
                        {
                            var localScene = List.scenes[i];
                            if (localScene == null)
                            {
                                List.scenes.Remove(localScene);
                                continue;
                            }
                            var newScene = sceneList.Find((obj) => obj.userSceneId == localScene.userSceneId);
                            if (newScene == null)//如果云端最新数据没有该条数据,则本地需要删掉该数据记录
                            {