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