HDL Home App 第二版本 旧平台金堂用 正在使用
xm
2020-05-29 ca233e3c6154859a17948d892fbc6bbf723b60a8
ZigbeeApp20200525/Shared/Phone/Device/Logic/SoneLogicList.cs
@@ -17,6 +17,8 @@
        }
        /// 给徐梅刷新界面用的
        public Action<bool> action;
        // 刷新上报界面的Action
        public Action<string, bool> updateCurrentDoorlockActionTemp;
        ///第二块第一级父控件
        FrameLayout fLayout = new FrameLayout();
        ///第三块第一级父控件
@@ -32,15 +34,12 @@
        /// </summary>
        public int timeValue = 0;
        /// <summary>
        /// 标记显示执行日期(用网关的,还是用系统的时间)
        /// 记录时间戳
        /// </summary>
        public bool _if = false;
        /// <summary>
        /// 时间戳
        /// </summary>
        public long timeLong = 0;
        public int timeLong = 0;
        public async void Show()
        {
            #region  界面的布局代码
            UserView.HomePage.Instance.ScrollEnabled = false;//锁住左滑
            TopView view = new TopView();
@@ -48,7 +47,7 @@
            view.toptitleNameBtn.TextID = MyInternationalizationString.openmode;
            view.clickBtn.MouseDownEventHandler += (sender, e) =>
            {
                UserView.HomePage.Instance.ScrollEnabled = true;
                UserView.HomePage.Instance.ScrollEnabled = true;
                //把静态变量的这个东西置空
                soneLogicList = null;
                this.RemoveFromParent();
@@ -66,8 +65,7 @@
            };
            this.AddChidren(middle);
            #endregion
            //是常开模式再去读取
            //是常开模式再去读取
            if (Send.CurrentDoorLock.IsDoorLockNormallyMode)
            {
                //进来更新一次
@@ -78,10 +76,9 @@
                    try
                    {
                        //进来更新一次值
                        logicId = logic.LogicId;
                        logicId = logic.LogicId;
                        timeValue = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]) / 3600;
                        timeLong = long.Parse(logic.Conditions[0]["TriggerTime"]);
                        timeLong = int.Parse(logic.Conditions[0]["TriggerTime"]);
                    }
                    catch { }
                }
@@ -172,10 +169,10 @@
                actionsInfo.Add("LinkType", 8);
                actionsInfo.Add("DeviceAddr", Send.CurrentDoorLock.DeviceAddr);
                actionsInfo.Add("Epoint", "200");
                actionsInfo.Add("PassData", "055704010113");//默认门锁常关
                Dictionary<string, string> accounts = new Dictionary<string, string>();
                actionsInfo.Add("PassData", "055704010113");//默认门锁常关
                Dictionary<string, string> accounts = new Dictionary<string, string>();
                accounts.Add("Type", "8");
                accounts.Add("Option4", Send.CurrentDoorLock.DeviceAddr.ToString());//用于判断识别是哪个门锁;
                accounts.Add("Option4", Send.CurrentDoorLock.DeviceAddr.ToString());//用于判断识别是哪个门锁;
                accounts.Add("Option2", Send.CurrentDoorLock.DeviceEpoint.ToString());
                //new一个新逻辑对象;
                //新增门锁常开模式自动化入口;
@@ -184,7 +181,7 @@
                Common.Logic.CurrentLogic.LogicType = 2;//标记逻辑类型
                Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.openmode);
                Common.Logic.CurrentLogic.Conditions.Add(timeConditionsInfo);//添加条件
                Common.Logic.CurrentLogic.Actions.Add(actionsInfo);//添加目标
                Common.Logic.CurrentLogic.Actions.Add(actionsInfo);//添加目标
                Common.Logic.CurrentLogic.Accounts.Add(accounts);
                var oneLogic = new OneLogic();
                UserView.HomePage.Instance.AddChidren(oneLogic);
@@ -224,24 +221,10 @@
                    });
                }
                catch { }
            };
            UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, _bool) =>
            {
                var key = Send.CurrentDoorLock.DeviceAddr + Send.CurrentDoorLock.DeviceEpoint;
                if (DoorlockKey == key)
                {
                    try
                    {
                        Application.RunOnMainThread(() =>
                        {
                            Send.CurrentDoorLock.IsDoorLockNormallyMode = _bool;
                            ModeView();
                        });
                    }
                    catch { }
                }
            };
            };
            updateCurrentDoorlockActionTemp = (DoorlockKey, _bool) =>             {                 var key = Send.CurrentDoorLock.DeviceAddr;                 if (DoorlockKey == key)                 {                     try                     {                         Application.RunOnMainThread(() =>                         {                             Send.CurrentDoorLock.IsDoorLockNormallyMode = _bool;                             ModeView();                         });                     }                     catch { }                 }             };
            UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += updateCurrentDoorlockActionTemp;
        }
        /// <summary>
        /// 常开模式开关切换图标界面
@@ -300,7 +283,6 @@
                                Send.DelLogic(logicId);
                            }
                            Send.CurrentDoorLock.IsDoorLockNormallyMode = false;
                            _if = false;
                            ModeView();
                        }
                        else
@@ -346,23 +328,29 @@
                    int hour = 0;
                    int minute = 0;
                    if (_if)
                    if (timeLong != 0)
                    {
                        ///第一次进来读取网关时间;
                        ///读取网关时间;
                        var datetime = GetLocalTime(timeLong);
                        ///有时效性常开才显示时间条件文本
                        year = datetime.Year.ToString();//那一年
                        month = datetime.Month.ToString();//那一月
                        days = int.Parse(datetime.ToString("dd"));//那一天
                        hour = int.Parse(datetime.ToString("HH"));//小时
                        var d = int.Parse(datetime.ToString("dd"));//那一天
                        var h = int.Parse(datetime.ToString("HH"));//小时
                        int dayInt = (h + timeValue) / 24;//设置时间+当前系统时间是否超出24小时
                        hour = (h + timeValue) % 24;//设置时间+当前系统时间是否超出24小时剩下多少小时
                        days = d + dayInt;//当前系统天数+执行后天数
                        minute = datetime.Minute;//分钟
                    }
                    else
                    {
                        ///在当前界面编辑显示系统时间(不能每一次编辑都去网关拿数据)
                        year = DateTime.Now.Year.ToString();//那一年
                        ///读取系统时间                         year = DateTime.Now.Year.ToString();//那一年
                        month = DateTime.Now.Month.ToString();//那一月
                        var d = DateTime.Now.ToString("dd");//那一天
                        var h = int.Parse(DateTime.Now.ToString("HH"));//小时
@@ -432,6 +420,7 @@
                    {///再次确认
                        LogicView.TipView.ShowInputTip(true, async (str) =>
                        {///确认发送命令
                            CommonPage.Loading.Start();
                            try
                            {
@@ -445,7 +434,7 @@
                                else
                                {
                                    ///因为有常开模式下才可以创建失效逻辑;
                                    SkipView.GetLogicAll(Send.CurrentDoorLock);//删除之前所有失效逻辑
                                    SkipView.DelAllLogic(Send.CurrentDoorLock);//删除之前所有失效逻辑
                                    var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑
                                    if (addResult == 0)
                                    {
@@ -460,9 +449,8 @@
                                        logicId = addResult;
                                        timeValue = int.Parse(str);
                                        Send.CurrentDoorLock.IsDoorLockNormallyMode = true;
                                        _if = false;
                                        ModeView();
                                        ///添加APP开启常开模式的历史记录
                                        ModeView();
                                        ///添加APP开启常开模式的历史记录
                                        UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(Send.CurrentDoorLock, 9001, string.Empty);
                                    }
@@ -522,10 +510,10 @@
                            if (logic.LogicType != 2)
                            {
                                continue;
                            }
                            if (SkipView.ExistLogic(logic, Send.CurrentDoorLock))
                            {
                                Common.Logic.SoneLogicList.Add(logic);
                            }
                            if (SkipView.ExistLogic(logic, Send.CurrentDoorLock))
                            {
                                Common.Logic.SoneLogicList.Add(logic);
                            }
                        }
                    }
@@ -730,16 +718,13 @@
        /// </summary>
        /// <param name="unixTimeStamp">时间戳</param>
        /// <returns></returns>
        public DateTime GetLocalTime(long unixTimeStamp)
        public DateTime GetLocalTime(int unixTimeStamp)
        {
            //DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            //long lTime = long.Parse(unixTimeStamp + "0000000");
            //TimeSpan toNow = new TimeSpan(lTime);
            //DateTime dtResult = dtStart.Add(toNow);
            //return dtResult;
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
            return startTime.AddMilliseconds(unixTimeStamp);
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(unixTimeStamp + "0000000");
            TimeSpan toNow = new TimeSpan(lTime);
            DateTime dtResult = dtStart.Add(toNow);
            return dtResult;
        }
    }