From f5ba05c33393e55de28db91433901600bfb0658f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期五, 22 五月 2020 17:43:11 +0800
Subject: [PATCH] 请合并最新代码「20200522:添加门锁晚上9点上报常开功能,优化PM2.5测试功能」

---
 ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs |  148 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 124 insertions(+), 24 deletions(-)

diff --git a/ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
index ea254b3..d5d49ec 100644
--- a/ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -17,12 +17,29 @@
         public UserDoorLockPage(Room room, CommonDevice doorLock)
         {
             //寰愭鐨勯棬閿佺晫闈㈡墦寮�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�)
-            ControlCommonResourse.IsDoorLockPageOpen = true;
+            //ControlCommonResourse.IsDoorLockPageOpen = true;
             this.doorLock = doorLock as ZigBee.Device.DoorLock;
             currentRoom = room;
             deviceUI = doorLock;
             BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor;
             ZbGateway.StatusList.Add(this);
+            Application.RunOnMainThread(() =>
+            {
+                ControlCommonResourse.UpdateDoorLockStatusAction = (obj) =>
+                {
+                    UpdateNomallyOpenStatus();
+                };
+
+                UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, status) =>
+                {
+                    var key = doorLock.DeviceAddr + doorLock.DeviceEpoint;
+                    if (DoorlockKey == key)
+                    {
+                        DoorLockCommonInfo.NormallyOpenModeValue(this.doorLock, status);
+                        UpdateNomallyOpenStatus();
+                    }
+                };
+            });
         }
 
         #region  鍙橀噺鐢虫槑
@@ -41,7 +58,7 @@
         /// <summary>
         /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡
         /// </summary>
-        private bool haveLogicNormallyOpenMode = false;
+        private bool haveLogicNormallyOpenMode = false;
 
         /// <summary>
         /// 褰撳墠鐢甸噺
@@ -183,7 +200,7 @@
         #endregion
 
         /// <summary>
-        /// UI鏄剧ず 
+        /// UI鏄剧ず
         /// </summary>
         public void Show()
         {
@@ -508,7 +525,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
             };
             btnCurrentFrameLayout.AddChidren(btnCurrentRoomName);
-            #endregion 
+            #endregion
         }
 
         #region 闊抽噺寮圭獥
@@ -563,7 +580,7 @@
                 ThumbImagePath = "DoorLock/UnLockButton.png",//杩涘害鏉℃寜閽浘鏍�
                 ThumbImageHeight = Application.GetRealHeight(81),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級
                 ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
-                ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏� 
+                ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏�
                 SeekBarViewHeight = Application.GetRealHeight(17),//杩涘害鏉$殑瀹藉害
                 Progress = currentVolume,
             };
@@ -621,6 +638,35 @@
                 }
             }
 
+            //缃戝叧鎵ц閫昏緫锛屽父寮�妯″紡澶辨晥涓婃姤
+            //if (typeTag == "DoorLockAlarmsSendAlarmInform" && tempDevice != null)
+            //{
+            //    var doorL = (ZigBee.Device.DoorLock)tempDevice;
+
+            //    if (doorL.DeviceAddr + doorL.DeviceEpoint == doorLock.DeviceAddr + doorLock.DeviceEpoint)
+            //    {
+            //        //闈炰富浜轰笉寮硅繖涓獥鍙�
+            //        if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+            //        {
+            //            return;
+            //        }
+            //        if (doorLock.IsDoorLockNormallyMode)
+            //        {
+            //            if (canOpenNormallyMode)
+            //            {
+            //                Application.RunOnMainThread(() =>
+            //                {
+            //                    Action<bool> action = (obj) =>
+            //                    {
+            //                        UpdateNomallyOpenStatus();
+            //                    };
+            //                    DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.ServicePush, haveLogicNormallyOpenMode, action);
+            //                });
+            //            }
+            //        }
+            //    }
+            //}
+
             if (typeTag == "DeviceStatusReport" && tempDevice != null)
             {
                 if (tempDevice != null)
@@ -659,6 +705,20 @@
                         CommonPage.Loading.Start("");
                     });
 
+                    //鏀惧湪璁惧鍚姩鐨勫湴鏂�
+                    //HdlGatewayReceiveLogic
+                    //1銆佸惎鍔ㄨ幏鍙栭棬閿佽澶囧璞★紝
+                    //2銆佸啀鑾峰彇褰撳墠闂ㄩ攣瀵硅薄鐨勫父寮�妯″紡
+                    var res = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
+                    if (DoorLockCommonInfo.DoorLockNormallyMode.ContainsKey(doorLock.DeviceAddr + doorLock.DeviceEpoint))
+                    {
+                        DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] = res;
+                    }
+                    else
+                    {
+                        DoorLockCommonInfo.DoorLockNormallyMode.Add(doorLock.DeviceAddr + doorLock.DeviceEpoint, res);
+                    }
+
                     //鏄惁鏀寔甯稿紑
                     canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock);
                     if (canOpenNormallyMode)
@@ -687,16 +747,17 @@
                                 tempRes = false;
                             }
                             DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes);
+
                             Application.RunOnMainThread(async () =>
                             {
                                 var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3, doorLock);
-                                if (resTemp == 1)
-                                {
-                                    haveLogicNormallyOpenMode = true;
-                                }
-                                else if (resTemp == 0)
+                                if (resTemp == 0)
                                 {
                                     haveLogicNormallyOpenMode = false;
+                                }
+                                else
+                                {
+                                    haveLogicNormallyOpenMode = true;
                                 }
                             });
                         }
@@ -713,7 +774,7 @@
                     canVolume = DoorLockCommonInfo.CanVolume(doorLock);
                     if (canVolume)
                     {
-                        //2銆佽鍙栭煶閲� 
+                        //2銆佽鍙栭煶閲�
                         var resultRes = await doorLock.GetVolumeAsync();
                         if (resultRes == null || resultRes.volumeResponseData == null)
                         {
@@ -764,14 +825,51 @@
                         CommonPage.Loading.Hide();
                     });
                 }
+
+                //瀹氭椂妫�娴嬫椂闂村彉鍖�
+                var curDateNow = DateTime.Now;
+                var curDateDelay = DateTime.MinValue;
+                new System.Threading.Thread(async () =>
+                {
+                    while (true)
+                    {
+                        try
+                        {
+                            curDateNow = DateTime.Now;
+                            if (curDateNow > curDateDelay)
+                            {
+                                //鏅氫笂9鐐规彁绀虹敤鎴烽棬閿佹槸鍚﹁繕寮�鐫�
+                                if (DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] == true)
+                                {
+                                    if (curDateNow.Hour == 21)
+                                    {
+                                        curDateDelay = curDateNow;
+                                        curDateDelay = curDateDelay.AddHours(+1);
+                                        var result = await Shared.Phone.Device.Logic.SkipView.Exist(3, (ZigBee.Device.DoorLock)doorLock);
+                                        HdlThreadLogic.Current.RunMain(() =>
+                                        {
+                                            //寮瑰嚭寰愭鐨勯偅涓獥鍙�
+                                            DoorLock.DoorLockCommonInfo.NomallyOpenModeInvalidDialog((ZigBee.Device.DoorLock)doorLock, DoorLock.DoorLockCommonInfo.DoorLockMessType.AppOperate,
+                                             result != 0 ? true : false, ControlCommonResourse.UpdateDoorLockStatusAction);
+                                        });
+                                    }
+                                }
+                            }
+                        }
+                        catch { }
+                        System.Threading.Thread.Sleep(1000 * 60);
+                    }
+
+                })
+                { IsBackground = true }.Start();
             });
         }
 
         #endregion
 
-        #region 鍏叡浜嬩欢澶勭悊 
+        #region 鍏叡浜嬩欢澶勭悊
         /// <summary>
-        /// 浜嬩欢澶勭悊 
+        /// 浜嬩欢澶勭悊
         /// </summary>
         public void ClickHandle()
         {
@@ -835,11 +933,11 @@
                 btnCollect.IsSelected = !btnCollect.IsSelected;
                 if (btnCollect.IsSelected)
                 {
-                    HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌 
+                    HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌
                 }
                 else
                 {
-                    HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌 
+                    HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌
                 }
             };
             btnCollectFrameLayout.MouseDownEventHandler += handerCollect;
@@ -960,7 +1058,7 @@
         }
         #endregion
 
-        #region 闊抽噺 
+        #region 闊抽噺
         /// <summary>
         /// 鏇存柊闊抽噺
         /// </summary>
@@ -1035,7 +1133,7 @@
         }
         #endregion
 
-        #region 甯稿紑妯″紡  
+        #region 甯稿紑妯″紡
         /// <summary>
         /// 甯稿紑妯″紡澶勭悊
         /// </summary>
@@ -1074,8 +1172,8 @@
                 UserView.HomePage.Instance.PageIndex += 1;
                 addLogicPage.Show();
                 addLogicPage.action += (w) =>
-                {
-                    doorLock.IsDoorLockNormallyMode = w;
+                {
+                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, w);
                     UpdateNomallyOpenStatus();
                     //杩斿洖鎸夐敭娓呯┖褰撳墠閫昏緫瀹氫箟鐨凩ogicAction
                     UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
@@ -1083,9 +1181,9 @@
             };
             HdlCheckLogic.Current.CheckSecondarySecurity(action);
 
-        }
-
-        /// <summary>
+        }
+
+        /// <summary>
         /// 甯稿紑妯″紡鐘舵�佹洿鏂�
         /// </summary>
         private void UpdateNomallyOpenStatus()
@@ -1113,7 +1211,7 @@
         }
         #endregion
 
-        #region 寮�閿佸鐞� 
+        #region 寮�閿佸鐞�
         /// <summary>
         /// 寮�閿佸鐞�
         /// </summary>
@@ -1186,7 +1284,9 @@
         public override void RemoveFromParent()
         {
             //寰愭鐨勯棬閿佺晫闈㈠叧闂�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�)
-            ControlCommonResourse.IsDoorLockPageOpen = false;
+            //ControlCommonResourse.IsDoorLockPageOpen = false;
+            ControlCommonResourse.UpdateDoorLockStatusAction = null;
+            UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null;
             if (IsDrawerLockMode)
             {
                 CommonPage.Instance.IsDrawerLockMode = false;

--
Gitblit v1.8.0