mac
2024-07-25 f9181a9c8125136f597add7c30cb2ff508d54ba7
HDL_ON/Common/ApiUtlis.cs
@@ -5,6 +5,7 @@
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.UI2.FuntionControlView.Video;
using HDL_ON.UI.UI2.Intelligence.Automation;
using Newtonsoft.Json;
using Shared;
@@ -50,6 +51,8 @@
        /// 读取场景数据完成
        /// </summary>
        bool complateScene = false;
        //线程结束时间
        DateTime endTime1;
        /// <summary>
        /// 校验网关是否在线
@@ -68,16 +71,21 @@
        /// <summary>
        /// 下载数据完成标记
        /// </summary>
        public bool DownloadDataComplete = true;
        public bool DownloadDataComplete = false;
        public bool hadInternet = true;
        /// <summary>
        /// 下载数据
        /// </summary>
        public void DownloadData()
        {
            if (MainPage.InternetStatus == 0 || MainPage.NoLoginMode)
            if (MainPage.NoLoginMode)
            {
                DownloadDataComplete = true;
                return;
            //线程开始时间
            var endTime = DateTime.Now.AddSeconds(5);
            }
            endTime1 = DateTime.Now.AddSeconds(25);
            complateDevice = complateScene = false;
            MainPage.Log($"开始同步云端数据");
@@ -86,38 +94,147 @@
            var waitPage = new Loading();
            MainPage.BaseView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            string code = StateCode.SUCCESS;
            Inverter.Ins.H5Page = null;//重置光伏页面
            var downloadDataThread = new System.Threading.Thread(() =>
            {
                try
                {
                    //增加3秒云服务器连接检测,连不上服务器的时候不刷新数据
                    hadInternet = true;
                    var dataList = new List<GlobalRegionListRes>();
                    var requestJson = HttpUtil.GetSignRequestJson(new GetRegionListObj() { regionMark = HttpUtil.RegionMark });
                    var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GlobalRegionList, requestJson, HttpUtil.GlobalRequestHttpsHost, "", 3);
                    if (revertObj == null || revertObj.Code != StateCode.SUCCESS)
                    {
                        DownloadDataComplete = true;
                        hadInternet = false;
                        try
                        {
                            var spatialInfoDataBytes = FileUtlis.Files.ReadFile("SpatialInfoData");
                            if (spatialInfoDataBytes != null)
                            {
                                var spatialInfoDataString = System.Text.Encoding.UTF8.GetString(spatialInfoDataBytes);
                                if (spatialInfoDataString != null && !string.IsNullOrEmpty(spatialInfoDataString))
                                {
                                    var spatialInfoDataList = JsonConvert.DeserializeObject<List<SpatialInfo>>(spatialInfoDataString);
                                    SpatialInfo.CurrentSpatial.UpdateSpatialList(spatialInfoDataList);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"{this.GetType()}:加载缓存房间数据异常:{ex.Message}");
                        }
                        try
                        {
                            var fileList = Common.FileUtlis.Files.ReadFiles();
                            foreach (var file in fileList)
                            {
                                FunctionList.List.IniFunctionList(file, true);
                            }
                            Room.CurrentSpatial.InitRoomListFunctions();
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"{this.GetType()}:加载缓存设备数据异常:{ex.Message}");
                        }
                        return;
                    }
                    else
                    {
                        hadInternet = true;
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"Error:下载数据1:{ex.Message}");
                    DownloadDataComplete = true;
                    return;
                }
                finally
                {
                    if (!hadInternet)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            if (waitPage != null)
                            {
                                waitPage.Hide();
                                waitPage.RemoveFromParent();
                            }
                        });
                    }
                }
                MainPage.Log($"进入读取云端数据线程");
                //===================刷新Token=======================
                code = Ins.HttpRequest.RefreshToken();
                if (code != StateCode.SUCCESS)
                {
                    if (waitPage != null)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            try
                            {
                                waitPage.Hide();
                                waitPage.RemoveFromParent();
                                waitPage = null;
                            }
                            catch { }
                        });
                    }
                    MainPage.Log($"刷新token失败");
                    return;
                }
                endTime = DateTime.Now.AddSeconds(5);
                MainPage.Log($"刷新token成功");
                //===================刷新住宅信息=======================
                code = Ins.HttpRequest.GetHomePager();
                if (code != StateCode.SUCCESS)
                {
                    if (waitPage != null)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            try
                            {
                                waitPage.Hide();
                                waitPage.RemoveFromParent();
                                waitPage = null;
                            }
                            catch { }
                        });
                    }
                    MainPage.Log($"刷新住宅信息失败");
                    return;
                }
                endTime = DateTime.Now.AddSeconds(5);
                MainPage.Log($"刷新住宅信息成功");
                //===================刷新个人信息=======================
                code = Ins.HttpRequest.GetUserInfo();
                if (code != StateCode.SUCCESS)
                {
                    if (waitPage != null)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            try
                            {
                                waitPage.Hide();
                                waitPage.RemoveFromParent();
                                waitPage = null;
                            }
                            catch { }
                        });
                    }
                    MainPage.Log($"刷新个人信息失败");
                    return;
                }
                endTime = DateTime.Now.AddSeconds(5);
                MainPage.Log($"刷新个人信息成功");
                //int count = 0;
@@ -138,6 +255,7 @@
                //    return;
                //}
                //return;
                try
                {
@@ -145,17 +263,27 @@
                    var roomResult = Ins.HttpRequest.GetRoomList();
                    if (roomResult.Code == StateCode.SUCCESS)
                    {
                        endTime = DateTime.Now.AddSeconds(100);
                        MainPage.Log($"读取房间信息成功");
                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString());
                        var revData = JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString());
                        if (revData == null)
                        {
                            revData = new SpatialApiPack();
                        }
                        {
                            SpatialInfo.CurrentSpatial.UpdateSpatialList(revData.list);
                            new System.Threading.Thread(() =>
                            {
                                try
                                {
                                    var ssd = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(revData.list));
                                    FileUtlis.Files.WriteFileByBytes("SpatialInfoData", ssd);
                                }catch(Exception ex)
                                {
                                    MainPage.Log($"{this.GetType()}:保存房间信息异常:{ex.Message}");
                                }
                            })
                            { IsBackground = true }.Start();
                        }
                        endTime = DateTime.Now.AddSeconds(5);
                    }
                    else
                    {
@@ -171,11 +299,11 @@
                            var deviceResult = Ins.HttpRequest.GetDeviceList("30", "1");
                            if (deviceResult.Code == StateCode.SUCCESS)
                            {
                                endTime = DateTime.Now.AddSeconds(5);
                                MainPage.Log($"读取设备信息成功");
                                MainPage.Log($"sid列表获取====" + deviceResult.Data.ToString());
                                var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                FunctionList.List.ClearDatas();
                                //MainPage.Log($"============设备============开始" + FunctionList.List.Functions.Count);
                                //MainPage.Log($"读取设备信息成功");
                                MainPage.Log($"sid列表获取====\r\n" , deviceResult.Data.ToString());
                                var deviceList = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                if (deviceList == null)
                                {
                                    deviceList = new DevcieApiPack();
@@ -187,7 +315,7 @@
                                        var deviceResult2 = Ins.HttpRequest.GetDeviceList("30", Convert.ToInt32(deviceList.pageNo) + 1 + "");
                                        if (deviceResult2.Code == StateCode.SUCCESS)
                                        {
                                            var deviceList2 = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                            var deviceList2 = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                            deviceList.pageNo = deviceList2.pageNo;
                                            deviceList.list.AddRange(deviceList2.list);
                                        }
@@ -195,11 +323,10 @@
                                }
                                catch (Exception ex)
                                {
                                }
                                finally
                                {
                                    complateDevice = true;
                                }
                                string delFile = "";
@@ -226,13 +353,129 @@
                                    }
                                }
                                //处理剩下的新增功能
                                //int iiii = 0;
                                foreach (var newFunction in deviceList.list)
                                {
                                    newFunction.AssembleStatus();
                                    newFunction.SaveFunctionFile();
                                    FunctionList.List.IniFunctionList(newFunction.savePath);
                                    newFunction.SaveFunctionFile();
                                    FunctionList.List.IniFunctionList(newFunction.savePath,true);
                                    //MainPage.Log($"============设备============{iiii++}");
                                }
                                endTime = DateTime.Now.AddSeconds(5);
                                //===================读取可视对讲数据==========================
                                //判断是否有可视对讲数据,有则显示可视对讲icon
                                //var flVideoInfo = HttpRequest.CheckFlVideo();
                                //if(flVideoInfo.Code == StateCode.SUCCESS)
                                //{
                                //    FunctionList.List.videoIntercom1111 = Newtonsoft.Json.JsonConvert.DeserializeObject<UI.UI2.FuntionControlView.Video.VideoClouds>(flVideoInfo.Data.ToString());
                                //}
                                //======================获取可视对讲设备列表====================
                                bool isInterphoneType_HDL = false;//是否为HDLLinphone可视对讲
                                bool isInterphoneType_FREEVIEW = false;//是否为全视通可视对讲
                                var videoInfo = VideoSend.GetVideoInfoList();
                                if (videoInfo.Code == StateCode.SUCCESS)
                                {
                                    string videoList = videoInfo.Data.ToString();
                                    FunctionList.List.videoIntercom = JsonConvert.DeserializeObject<List<UI.UI2.FuntionControlView.Video.Video>>(videoList);
                                    for(int i =0;i< FunctionList.List.videoIntercom.Count;i++)
                                    {
                                        var video = FunctionList.List.videoIntercom[i];
                                        if (video.interphoneType == InterphoneType.IMOUVISIAL.ToString())
                                        {
                                            UI.UI2.PersonalCenter.PirDevice.PirSend.LcSubAccessToken = video.subAccountToken;
                                        }
                                        else if (video.interphoneType == InterphoneType.HDL.ToString())
                                        {
                                            isInterphoneType_HDL = true;
                                            DB_ResidenceData.Instance.SupportFacePass = true;
                                            DB_ResidenceData.Instance.SaveResidenceData();
                                            DB_ResidenceData.Instance.SupportFVDevice = true;
                                        }
                                        else if (video.interphoneType == InterphoneType.FREEVIEW.ToString())
                                        {
#if __IOS__
                                            try
                                            {
                                                FunctionList.List.videoIntercom.Remove(video);
                                                --i;
                                            }catch(Exception ex)
                                            {
                                                MainPage.Log($"ios 全视通异常 : {ex.Message}");
                                            }
#else
                                            //为全视通可视对讲
                                            DB_ResidenceData.Instance.SupportFacePass = true;
                                            Entity.DB_ResidenceData.Instance.SupportVisitorManage = true;
                                            Entity.DB_ResidenceData.Instance.SupportFVDevice = true;
                                            isInterphoneType_FREEVIEW = true;
#endif
                                        }
                                    }
                                }
                                //======================获取Sip账号并且初始化SDK可视对讲设备列表====================
                                //如果检测线程没启动,才继续下面操作 因为App有可能刚启动马上收到推送了,然后才执行到这里
                                if (HDLLinphone.Current.CheckIncomingCallThreadIsNull())
                                {
                                    //当前住宅是HDL可视对讲类型的设备
                                    if (isInterphoneType_HDL)
                                    {
                                        //HDLLinphone可视对讲,获取Sip账号并初始化SDK
                                        HDLCallVideoInfo callVideoInfo = new HDLCallVideoInfo();
                                        callVideoInfo.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                                        callVideoInfo.InterphoneType = InterphoneType.HDL.ToString();
                                        HDLLinphone.Current.GetHDLSipInfoAndInitSDK(callVideoInfo);
                                    }
                                    else if (isInterphoneType_FREEVIEW)
                                    {
                                        //HDLLinphone可视对讲,获取Sip账号并初始化SDK
                                        HDLCallVideoInfo callVideoInfo = new HDLCallVideoInfo();
                                        callVideoInfo.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                                        callVideoInfo.InterphoneType = InterphoneType.FREEVIEW.ToString();
                                        HDLLinphone.Current.GetHDLSipInfoAndInitSDK(callVideoInfo);
                                    }
                                    else
                                    {
                                        Utlis.WriteLine("当前住宅不支持HDL可视对讲,退出登录所有账号");
                                        //当前住宅不支持HDL可视对讲
                                        HDLLinphone.Current.LogoutAllAccount();
                                    }
                                }
                                //======================登录全视通====================
                                if (isInterphoneType_FREEVIEW)
                                {
#if __IOS__
                                    //string systemVersion = UIKit.UIDevice.CurrentDevice.SystemVersion;
                                    //string errorVersion = "16.2.0";
                                    //if (systemVersion.CompareTo(errorVersion) < 0)///全视通不兼容ios16以上的系统,不要加载这个先
                                    //{
                                    //    List<VisitorTempPassword> dataList = new List<VisitorTempPassword>();
                                    //    Dictionary<string, object> dictionary = new Dictionary<string, object>();
                                    //    dictionary.Add("homeId", Entity.DB_ResidenceData.Instance.CurrentRegion.id);
                                    //    var requestJson = HttpUtil.GetSignRequestJson(dictionary);
                                    //    ResponsePackNew pack = HttpUtil.RequestHttpsPost(NewAPI.Api_Post_GetExtMemberInfo, requestJson);
                                    //    if (pack != null)
                                    //    {
                                    //        var data = JsonConvert.DeserializeObject<FreeviewMemberInfo>(pack.Data.ToString());
                                    //        //登录全视通
                                    //        Shared.IOS.HDLFVSDK.Video.Init("", data.extUserId, DB_ResidenceData.Instance.CurrentRegion.id, "78FF1E4D-FC0A-4E71-9B79-0448E4460BD7", "T0001", "120.77.53.170:9700", "120.77.53.170:21664");
                                    //    }
                                    //}
#endif
                                }
                            }
                            else
                            {
@@ -245,20 +488,81 @@
                        finally
                        {
                            complateDevice = true;
                            MainPage.Log($"============设备============完成" + FunctionList.List.Functions.Count);
                        }
                    })
                    { IsBackground = true }.Start();
                    //===================场景==========================
                    new System.Threading.Thread(() =>
                    {
                        //======================群控====================
                        if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                        {
                            var pack = Ins.HttpRequest.GetGroupControlList();
                            if (pack != null)
                            {
                                if (pack.Code == StateCode.SUCCESS)
                                {
                                    try
                                    {
                                        var groupControlList = JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                                        var readSidList = new List<string>();
                                        foreach(var temp in groupControlList)
                                        {
                                            FunctionList.List.groupControls.Clear();
                                            readSidList.Add(temp.userDeviceGroupControlId);
                                            if (readSidList.Count >= 20)
                                            {
                                                var data = Ins.httpRequest.GetGroupControInfo(readSidList);
                                                if(data != null)
                                                {
                                                    if(data.Code == StateCode.SUCCESS)
                                                    {
                                                        var groupControlInfoList = JsonConvert.DeserializeObject<List<GroupControl>>(data.Data.ToString());
                                                        FunctionList.List.groupControls.AddRange(groupControlInfoList);
                                                    }
                                                    else
                                                    {
                                                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                                    }
                                                }
                                                readSidList.Clear();
                                            }
                                            //FunctionList.List.Functions.AddRange(FunctionList.List.groupControls);
                                        }
                                        if (readSidList.Count > 0)
                                        {
                                            var data = Ins.httpRequest.GetGroupControInfo(readSidList);
                                            if (data != null)
                                            {
                                                if (data.Code == StateCode.SUCCESS)
                                                {
                                                    var groupControlInfoList = JsonConvert.DeserializeObject<List<GroupControl>>(data.Data.ToString());
                                                    FunctionList.List.groupControls.AddRange(groupControlInfoList);
                                                }
                                                else
                                                {
                                                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                                }
                                            }
                                            readSidList.Clear();
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        MainPage.Log($"读取组控列表失败:{ex.Message}");
                                    }
                                }
                                else
                                {
                                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                }
                            }
                        }
                        //======================场景====================
                        try
                        {
                            complateScene = true;
                            complateScene = false;
                            var pack = Ins.HttpRequest.GetSceneList();
                            if (pack.Code == StateCode.SUCCESS)
                            {
                                endTime = DateTime.Now.AddSeconds(100);
                                MainPage.Log($"读取场景数据成功");
                                var sceneList = JsonConvert.DeserializeObject<List<Scene>>(pack.Data.ToString());
                                if (sceneList == null)
@@ -300,7 +604,6 @@
                                        IMessageCommon.Current.ShowErrorInfoAlter(packInfo.Code);
                                    }
                                }
                                endTime = DateTime.Now.AddSeconds(5);
                            }
                            else
                            {
@@ -314,99 +617,18 @@
                        {
                            complateScene = true;
                        }
                        //======================安防====================
                        GetSecurityList();
                        //===================读取逻辑列表====================
                        Logic.LogicList.Clear();//主页下拉强制刷新自动化列表
                        MainView.GetLogicList();//读取自动化列表
                    })
                    { IsBackground = true }.Start();
                    //===================读取逻辑列表==========================
                    UI.UI2.Intelligence.Automation.MainView.GetLogicList();
                    //===================读取可视对讲数据==========================
                    //判断是否有可视对讲数据,有则显示可视对讲icon
                    //var flVideoInfo = HttpRequest.CheckFlVideo();
                    //if(flVideoInfo.Code == StateCode.SUCCESS)
                    //{
                    //    FunctionList.List.videoIntercom1111 = Newtonsoft.Json.JsonConvert.DeserializeObject<UI.UI2.FuntionControlView.Video.VideoClouds>(flVideoInfo.Data.ToString());
                    //}
                    //======================获取可视对讲设备列表====================
                    bool isInterphoneType_HDL = false;//是否为HDLLinphone可视对讲
                    bool isInterphoneType_FREEVIEW = false;//是否为全视通可视对讲
                    var videoInfo = VideoSend.GetVideoInfoList();
                    if (videoInfo.Code == StateCode.SUCCESS)
                    {
                        string videoList = videoInfo.Data.ToString();
                        FunctionList.List.videoIntercom = JsonConvert.DeserializeObject<List<UI.UI2.FuntionControlView.Video.Video>>(videoList);
                        foreach (var video in FunctionList.List.videoIntercom)
                        {
                            if (video.interphoneType == InterphoneType.IMOUVISIAL.ToString())
                            {
                                UI.UI2.PersonalCenter.PirDevice.PirSend.LcSubAccessToken = video.subAccountToken;
                            } else if (video.interphoneType == InterphoneType.HDL.ToString()) {
                                isInterphoneType_HDL = true;
                                DB_ResidenceData.Instance.SupportFacePass = true;
                                DB_ResidenceData.Instance.SaveResidenceData();
                                Entity.DB_ResidenceData.Instance.SupportFVDevice = true;
                            }
                            else if (video.interphoneType == InterphoneType.FREEVIEW.ToString())
                            {//为全视通可视对讲
                                DB_ResidenceData.Instance.SupportFacePass = true;
                                Entity.DB_ResidenceData.Instance.SupportVisitorManage = true;
                                Entity.DB_ResidenceData.Instance.SupportFVDevice = true;
                                //isInterphoneType_HDL = true;
                                isInterphoneType_FREEVIEW = true;
                            }
                        }
                    }
                    //======================获取Sip账号并且初始化SDK可视对讲设备列表====================
                    //如果检测线程没启动,才继续下面操作 因为App有可能刚启动马上收到推送了,然后才执行到这里
                    if (HDLLinphone.Current.CheckIncomingCallThreadIsNull()) {
                        //当前住宅是HDL可视对讲类型的设备
                        if (isInterphoneType_HDL)
                        {
                            //HDLLinphone可视对讲,获取Sip账号并初始化SDK
                            HDLCallVideoInfo callVideoInfo = new HDLCallVideoInfo();
                            callVideoInfo.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                            callVideoInfo.InterphoneType = InterphoneType.HDL.ToString();
                            HDLLinphone.Current.GetHDLSipInfoAndInitSDK(callVideoInfo);
                        }
                        else if (isInterphoneType_FREEVIEW)
                        {
                            //HDLLinphone可视对讲,获取Sip账号并初始化SDK
                            HDLCallVideoInfo callVideoInfo = new HDLCallVideoInfo();
                            callVideoInfo.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                            callVideoInfo.InterphoneType = InterphoneType.FREEVIEW.ToString();
                            HDLLinphone.Current.GetHDLSipInfoAndInitSDK(callVideoInfo);
                        }
                        else
                        {
                            Utlis.WriteLine("当前住宅不支持HDL可视对讲,退出登录所有账号");
                            //当前住宅不支持HDL可视对讲
                            HDLLinphone.Current.LogoutAllAccount();
                        }
                    }
                    //======================登录全视通====================
                    if (isInterphoneType_FREEVIEW)
                    {
#if __IOS__
                        //登录全视通
                        Shared.IOS.HDLFVSDK.Video.Init("", DB_ResidenceData.Instance.CurrentRegion.id);
#endif
                    }
                    //======================安防====================
                    GetSecurityList();
                    //======================注册推送====================
                    httpRequest.RegisteredPush();
                }
                catch (Exception ex)
                {
@@ -417,8 +639,6 @@
                    Application.RunOnMainThread(() =>
                    {
                        MainPage.Log($"结束读取云端数据线程");
                        endTime = DateTime.MinValue;
                        DownloadDataComplete = true;
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
@@ -428,7 +648,13 @@
                    //不考虑网关情况,直接订阅
                    DAL.Mqtt.MqttClient.InitState();
                    FunctionList.List.Read3tyFunctionStatus();
                    try
                    {
                        FunctionList.List.Read3tyFunctionStatus();
                    }catch(Exception ex)
                    {
                        MainPage.Log("读取第三方设备状态失败:"+ex.Message);
                    }
                }
            });
            downloadDataThread.IsBackground = true;
@@ -440,9 +666,9 @@
            {
                try
                {
                    while (endTime > DateTime.Now)
                    while (endTime1 > DateTime.Now)
                    {
                        if (DownloadDataComplete && complateDevice && complateScene)
                        if ( complateDevice && complateScene)
                        {
                            break;
                        }
@@ -474,37 +700,6 @@
                }
            })
            { IsBackground = true }.Start();
            ////下载光伏数据
            //new System.Threading.Thread(() => {
            //    try
            //    {//00
            //        HttpServerRequest http = new HttpServerRequest();
            //        var packData = http.GetInverterList();
            //        if (packData != null)
            //        {
            //            if (packData.Code == StateCode.SUCCESS)
            //            {
            //                var inverterList = JsonConvert.DeserializeObject<List<InverterInfo>>(packData.Data.ToString());
            //                if (inverterList!= null)
            //                {
            //                    FunctionList.List.InverterList = inverterList;
            //                }
            //            }
            //        }
            //    }
            //    catch (Exception ex)
            //    {
            //        MainPage.Log($"读取光伏数据异常:{ex.Message}");
            //    }
            //}) { IsBackground = true }.Start();
        }
        /// <summary>
@@ -531,40 +726,43 @@
        /// </summary>
        public void GetSecurityList()
        {
            var pack = Ins.HttpRequest.GetSecurityList();
            if (pack.Code == StateCode.SUCCESS)
            lock (FunctionList.List.securities)
            {
                var packList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(pack.Data.ToString());
                var sidList = new List<string>();
                foreach (var function in packList)
                var pack = Ins.HttpRequest.GetSecurityList();
                if (pack.Code == StateCode.SUCCESS)
                {
                    sidList.Add(function.sid);
                }
                var infoListPack = Ins.httpRequest.GetSecurityInfo(sidList, new List<string>());
                var infoList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(infoListPack.Data.ToString());
                if (infoList != null)
                {
                    var filePathList = FileUtlis.Files.ReadFiles().FindAll((obj) => obj.StartsWith("SecurityData_"));
                    if (filePathList != null)
                    var packList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(pack.Data.ToString());
                    Console.WriteLine("安防总数:" + packList.Count);
                    var sidList = new List<string>();
                    foreach (var function in packList)
                    {
                        foreach (var file in filePathList)
                        sidList.Add(function.sid);
                    }
                    var infoListPack = Ins.httpRequest.GetSecurityInfo(sidList, new List<string>());
                    var infoList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(infoListPack.Data.ToString());
                    if (infoList != null)
                    {
                        var filePathList = FileUtlis.Files.ReadFiles().FindAll((obj) => obj.StartsWith("SecurityData_"));
                        if (filePathList != null)
                        {
                            FileUtlis.Files.DeleteFile(file);
                            foreach (var file in filePathList)
                            {
                                FileUtlis.Files.DeleteFile(file);
                            }
                        }
                        FunctionList.List.securities.Clear();
                        foreach (var function in infoList)
                        {
                            function.SaveFile();
                            FunctionList.List.IniFunctionList(function.savePath, true);
                        }
                    }
                    FunctionList.List.securities.Clear();
                    foreach (var function in infoList)
                    {
                        function.SaveFile();
                        FunctionList.List.IniFunctionList(function.savePath, true);
                    }
                }
            }
            else
            {
                MainPage.Log($"读取安防列表失败:Code:{pack.Code}; Msg:{pack.message}");
                else
                {
                    MainPage.Log($"读取安防列表失败:Code:{pack.Code}; Msg:{pack.message}");
                }
            }
        }
        /// <summary>