wxr
2024-09-27 acc8caee31c4be90bd38d1af18136b0e84f6fe94
HDL_ON/Entity/FunctionList.cs
@@ -13,6 +13,22 @@
    public class FunctionList
    {
        static FunctionList _FunctionList;
        //public static void ClearData()
        //{
        //    try
        //    {
        //        _FunctionList._IpCamImou = null;
        //        _FunctionList.ClearDatas();
        //        _FunctionList = null;
        //    }
        //    catch (Exception ex)
        //    {
        //        MainPage.Log($"清理FunctionList异常:{ex.Message}");
        //        _FunctionList = null;
        //    }
        //}
        public static FunctionList List
        {
            get
@@ -39,6 +55,96 @@
        /// 功能列表
        /// </summary>
        public List<Function> Functions = new List<Function>();
        /// <summary>
        /// 群控列表
        /// </summary>
        public List<GroupControl> groupControls = new List<GroupControl>();
        /// <summary>
        /// 机械臂列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetMechanicalArmList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.MechanicalArm);
        }
        List<Function> _IpCamImou;
        /// <summary>
        /// 获取摄像头列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetIpCamImouList()
        {
            if (_IpCamImou == null)
            {
                _IpCamImou = Functions.FindAll((obj) => obj.spk == SPK.IpCam_Imou);
                if (_IpCamImou.Count > 0)
                {
#if __IOS__
                    //初始化大华摄像头sdk
                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().InitSDKWithAppKey("HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().AccessToken = UserInfo.Current.LoginTokenString;
                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshToken = UserInfo.Current.RefreshToken;
                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                    Console.WriteLine("token:" + UserInfo.Current.LoginTokenString);
                    Console.WriteLine("token:" + UserInfo.Current.RefreshToken);
                    Shared.IOS.HDLCNVRSDK.HDLLCNVRSDK.SharedInstance().RefreshDeviceList();
#else
                    Com.Utils.HdlToLcUtils.Instance.InitData(Shared.Application.Activity, "HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
                    Com.Utils.HdlToLcUtils.Instance.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                    Com.Utils.HdlToLcUtils.Instance.Token = UserInfo.Current.AccessToken;
#endif
                }
            }
            return _IpCamImou;
        }
        /// <summary>
        /// 绿建科技系统
        /// 总控列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetAcstParentList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.AcstParent);
        }
        /// <summary>
        /// 绿建科技系统
        /// 子控列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetAcstSubList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.AcstSub);
        }
        /// <summary>
        /// 绿建科技系统
        /// 热水器列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetWaterHeaterJinmaoList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.WaterHeaterJinmao);
        }
        /// <summary>
        /// 金茂光伏储能
        /// </summary>
        /// <returns></returns>
        public List<Function> GetInverterJinmaoList()
        {
            var tempList = Functions.FindAll((obj) => obj.spk == SPK.InverterJinmao);
            foreach(var device in tempList)
            {
                device.collect = true;
            }
            return tempList;
        }
        /// <summary>
        /// 空调列表
@@ -58,6 +164,15 @@
            var spkList = SPK.LightSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 序列列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetSeries()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.CommonSeries);
        }
        /// <summary>
        /// 窗帘列表
        /// </summary>
@@ -102,6 +217,14 @@
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        List<InverterInfo> _inverterList = new List<InverterInfo>();
        /// <summary>
        /// 光伏列表
        /// </summary>
        public List<Function> InverterList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.Inverter || obj.spk == SPK.InverterRst);
        }
        #region 家电列表 electricals
        /// <summary>
        /// 家电列表
@@ -111,8 +234,8 @@
            var spkList = SPK.ElectricalSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 红外宝列表
        /// </summary>
@@ -157,10 +280,13 @@
            var spkList = new List<string>()
            {
                SPK.SensorPir,
                SPK.SensorPirHold,
                SPK.SensorDoorWindow,
                SPK.SensorSmoke,
                SPK.SensorWater,
                SPK.SensorGas,
                SPK.SensorDryContact,
                SPK.SensorDryContact2,
            };
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
@@ -181,7 +307,7 @@
        {
            get
            {
                if(_OtherBrandFunction == null)
                if (_OtherBrandFunction == null)
                {
                    _OtherBrandFunction = new List<Function>();
                    var spkList = SPK.GetAll3tySPK();
@@ -248,16 +374,24 @@
                    if (checkRepeat == true)
                    {
                        //检测重复
                        for (int i = 0; i < Functions.Count; i++)
                        var same = Functions.FindAll((obj) => obj.deviceId == tempFunction.deviceId);
                        if (same != null)
                        {
                            if (Functions[i].deviceId == tempFunction.deviceId)
                            foreach (var sameTemp in same)
                            {
                                //先移除掉再加
                                Functions.RemoveAt(i);
                                Functions.Add(tempFunction);
                                return;
                                Functions.Remove(sameTemp);
                            }
                        }
                        //for (int i = 0; i < Functions.Count; i++)
                        //{
                        //    if (Functions[i].deviceId == tempFunction.deviceId)
                        //    {
                        //        //先移除掉再加
                        //        Functions.RemoveAt(i);
                        //        Functions.Add(tempFunction);
                        //        return;
                        //    }
                        //}
                    }
                    Functions.Add(tempFunction);
                }
@@ -275,7 +409,7 @@
                    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityAlarm>(dataString);
                    if (temp == null)
                    {
                        MainPage.Log("null");
                        MainPage.Log("SecurityData_null");
                        FileUtlis.Files.DeleteFile(filePath);
                        return;
                    }
@@ -300,6 +434,9 @@
            {
                MainPage.Log($"IniFunctionList error : {ex.Message}");
            }
            finally
            {
            }
        }
        /// <summary>
@@ -312,29 +449,37 @@
            {
            }
            else
            {
            {
                switch (brandType)
                {
                    case SPK.BrandType.Hdl:
                        foreach (var function in Functions)
                        try
                        {
                            if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(function.spk))
                            foreach (var function in Functions)
                            {
                                resultFunctions.Add(function);
                                if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(function.spk))
                                {
                                    resultFunctions.Add(function);
                                }
                            }
                        }
                        catch { }
                        break;
                    case SPK.BrandType.Tuya:
                        lock (Functions)
                        {
                            foreach (var function in Functions)
                            try
                            {
                                if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(function.spk))
                                foreach (var function in Functions)
                                {
                                    resultFunctions.Add(function);
                                    if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(function.spk))
                                    {
                                        resultFunctions.Add(function);
                                    }
                                }
                            }
                            catch { }
                        }
                        break;
                }
@@ -350,20 +495,32 @@
        /// <summary>
        /// 清空设备功能列表
        /// </summary>
        public void Clear()
        public void ClearDatas()
        {
            Functions = new List<Function>();
            _FunctionList = null;
            try
            {
                if (_IpCamImou != null)
                {
                    _IpCamImou.Clear();
                    _IpCamImou = null;
                }
                _FunctionList = new FunctionList();
            }
            catch (Exception ex)
            {
                MainPage.Log($"清理FunctionList异常:{ex.Message}");
                _FunctionList = null;
            }
        }
        /// <summary>
        /// 功能绑定房间
        /// </summary>
        public string FunctionsBindRooms(List<string> roomIds,List<string> deviceIds)
        public string FunctionsBindRooms(List<string> roomIds, List<string> deviceIds)
        {
            var pm = new HttpServerRequest();
            var pack = pm.BindDeviceToRoom(deviceIds, roomIds);
            if(pack.Code == StateCode.SUCCESS)
            if (pack.Code == StateCode.SUCCESS)
            {
            }
@@ -376,9 +533,8 @@
        /// <summary>
        /// 删除场景
        /// todo
        /// </summary>
        public void DeleteScene(Scene scene,bool upSevser)
        public void DeleteScene(Scene scene, bool upSevser)
        {
            if (upSevser)
            {
@@ -406,6 +562,10 @@
        /// </summary>
        public void DeleteFunction(Function delTemp)
        {
            if(delTemp == null)
            {
                return;
            }
            Functions.Remove(Functions.Find((obj) => obj.deviceId == delTemp.deviceId));
            FileUtlis.Files.DeleteFile(delTemp.savePath);
        }
@@ -445,14 +605,14 @@
        {
            if (lockReadFunctionStatus)
            {
                MainPage.Log($"多次进入--返回");
                MainPage.Log($"多次进入--返回1");
                return;
            }
            new Thread(() =>
            {
                if (lockReadFunctionStatus)
                {
                    MainPage.Log($"多次进入--返回");
                    MainPage.Log($"多次进入--返回2");
                    return;
                }
                MainPage.Log($"进入--读取");
@@ -461,7 +621,7 @@
                {
                    Read3tyFunctionStatus();
                    if(DriverLayer.Control.Ins.GatewayOnline_Local)
                    if (DriverLayer.Control.Ins.GatewayOnline_Local)
                    {
                        //List<Function> functions = GetDeviceFunctionList(SPK.BrandType.Hdl);
@@ -525,7 +685,7 @@
                    MainPage.Log($"结束--读取");
                }
            })
            { IsBackground = true }.Start();
        }
@@ -565,7 +725,7 @@
        #endregion
        #region 收藏功能
        /// <summary>
        /// 收藏场景
        /// </summary>
@@ -590,11 +750,11 @@
            return result;
        }
        #endregion
        #endregion
        #region 
        #endregion