From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 18 九月 2020 13:58:19 +0800 Subject: [PATCH] 新版本 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 204 insertions(+), 18 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs index 2e85454..da123a1 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs @@ -96,7 +96,7 @@ /// </summary> /// <param name="residenceId"></param> /// <returns></returns> - public void SwitchResidence(string residenceId) + public bool SwitchResidence(string residenceId) { //鎵撳紑杩涘害鏉� ProgressBar.Show(); @@ -106,10 +106,12 @@ Config.Instance.Home = this.GetHouseByHouseId(residenceId); Config.Instance.Save(); //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ - UserCenterLogic.InitUserCenterMenmoryAndThread(false); + bool result = UserCenterLogic.InitUserCenterMenmoryAndThread(false); //鍏抽棴杩涘害鏉� ProgressBar.Close(); + + return result; } #endregion @@ -131,7 +133,7 @@ Pra.LoginAccessToken = Config.Instance.Token; //缂栬緫浣忓畢 - bool flage = UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra, new List<string> { "NotCheck" }); + bool flage = UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra); if (flage == true) { //鍒锋柊鍐呭瓨鐨勪綇瀹呭悕 @@ -160,7 +162,7 @@ home.Name = residenceName; home.Save(); //浣忓畢淇敼鍚嶇О鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� - UserView.UserPage.Instance.RefreshForm = true; + UserView.UserPage.Instance.RefreshAllForm = true; } @@ -206,9 +208,11 @@ /// <summary> /// 鑾峰彇浜戠浣忓畢鍒楄〃 /// </summary> - public List<string> GetHomeListsFromDb() + /// <param name="checkNetwork">鏄惁妫�娴嬬綉缁�,濡傛灉璁剧疆妫�娴嬬殑璇�,褰撲笉鑳借仈缃戞椂,鐩存帴杩斿洖鏈湴浣忓畢</param> + /// <returns></returns> + public List<string> GetHomeListsFromDb(bool checkNetwork) { - if (HdlWifiLogic.Current.CanAccessHttp == false) + if (checkNetwork == true && HdlWifiLogic.Current.CanAccessHttp == false) { //褰撳墠鏃犳硶鑱旂綉 return Config.Instance.HomeFilePathList; @@ -225,7 +229,7 @@ try { var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj); - var revertObj = CommonPage.Instance.RequestHttpsZigbeeAsync("App/GetHomePager", System.Text.Encoding.UTF8.GetBytes(requestJson)); + var revertObj = CommonPage.Instance.RequestHttpsZigbeeAsync("App/GetHomePager", System.Text.Encoding.UTF8.GetBytes(requestJson), 5); if (revertObj == null) { return null; @@ -269,20 +273,26 @@ house.Save(false); listHouse.Add(house); } + //妫�娴嬫湰鍦扮殑浣忓畢鏂囦欢鏄惁鍚堟硶 + var listLocal = this.GetAllLocalResidenceListByDirectory(); + foreach (var myHouse in listLocal) + { + //濡傛灉鏈湴瀛樺湪涓嶅睘浜庝粬鐨勪綇瀹呮枃浠�,鍒欏垹闄� + if (myHouse.HouseDataDiv == 1 && Config.Instance.HomeFilePathList.Contains(myHouse.FileName) == false) + { + string housePath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, myHouse.Id); + HdlFileLogic.Current.DeleteDirectory(housePath); + } + } //濡傛灉鍒囨崲浜嗚处鍙�,鎴栬�呭師鏉ョ殑id涓嶅瓨鍦�,鍒欓噸缃綇瀹匢D if (Config.Instance.TheSameLoginAccount == false || - Config.Instance.HomeFilePathList.Find((obj) => obj == $"House_{Config.Instance.HomeId}.json") == null) + Config.Instance.HomeFilePathList.Contains($"House_{Config.Instance.HomeId}.json") == false) { Config.Instance.HomeId = listHouse[0].Id; - foreach (var house in listHouse) + if (listHouse.Count > 0) { - //鍒濆閫夋嫨瀹冭嚜宸辩殑浣忓畢 - if (house.IsOthreShare == false) - { - Config.Instance.HomeId = house.Id; - Config.Instance.Home = GetHouseByHouseId(house.Id); - break; - } + Config.Instance.HomeId = listHouse[0].Id; + Config.Instance.Home = GetHouseByHouseId(listHouse[0].Id); } } Config.Instance.Save(); @@ -323,7 +333,7 @@ } listHome.Add(home); } - return listHome; + return this.SortHouse(listHome); } /// <summary> @@ -359,7 +369,183 @@ listHome.Add(myHouse); } } - return listHome; + return this.SortHouse(listHome); + } + + #endregion + + #region 鈻� 浣忓畢鎺掑簭___________________________ + + /// <summary> + /// 浣忓畢鎺掑簭 + /// </summary> + /// <param name="i_listHouse"></param> + /// <returns></returns> + public List<House> SortHouse(List<House> i_listHouse) + { + //浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴� + var listName = new List<string>(); + foreach (var house in i_listHouse) + { + listName.Add(house.Name); + } + int numberLength = this.GetNumberMaxLength(listName); + + var listSort = new List<string[]>(); + var dicHouse = new Dictionary<string, House>(); + foreach (var house in i_listHouse) + { + //涓存椂缂撳瓨 + dicHouse[house.Id] = house; + + var strArry = new string[2]; + strArry[0] = house.Id; + strArry[1] = string.Empty; + + string value = string.Empty; + foreach (var c in house.Name) + { + if (char.IsNumber(c) == true) + { + //鏁板瓧 + value += c.ToString(); + continue; + } + else if (value != string.Empty) + { + //濡傛灉鎴块棿鍚嶅瓧甯︽湁鏁板瓧鐨勮瘽,鍒欏乏杈瑰姞闆�,鍥犱负杩欓噷鏈変釜鎺掑簭鐨勯棶棰� + strArry[1] += value.PadLeft(numberLength, '0'); + value = string.Empty; + } + strArry[1] += c.ToString(); + } + if (value != string.Empty) + { + //浠ユ暟瀛楃粨灏剧殑璇� + strArry[1] += value.PadLeft(numberLength, '0'); + } + listSort.Add(strArry); + } + //鎺掑簭 + listSort.Sort((obj1, obj2) => + { + if (obj1[1].CompareTo(obj2[1]) > 0) + { + return 1; + } + return -1; + }); + var listSortHouse = new List<House>(); + foreach (var strArry in listSort) + { + listSortHouse.Add(dicHouse[strArry[0]]); + } + return listSortHouse; + } + + /// <summary> + /// 浜戠浣忓畢鎺掑簭 + /// </summary> + /// <param name="i_listData"></param> + /// <returns></returns> + public List<Common.ResponseEntity.ResidenceObj> SortHouse(List<Common.ResponseEntity.ResidenceObj> i_listData) + { + //浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴� + var listName = new List<string>(); + foreach (var house in i_listData) + { + listName.Add(house.Name); + } + int numberLength = this.GetNumberMaxLength(listName); + + var listSort = new List<string[]>(); + var dicHouse = new Dictionary<string, Common.ResponseEntity.ResidenceObj>(); + foreach (var house in i_listData) + { + //涓存椂缂撳瓨 + dicHouse[house.Id] = house; + + var strArry = new string[2]; + strArry[0] = house.Id; + strArry[1] = string.Empty; + + string value = string.Empty; + foreach (var c in house.Name) + { + if (char.IsNumber(c) == true) + { + //鏁板瓧 + value += c.ToString(); + continue; + } + else if (value != string.Empty) + { + //濡傛灉鎴块棿鍚嶅瓧甯︽湁鏁板瓧鐨勮瘽,鍒欏乏杈瑰姞闆�,鍥犱负杩欓噷鏈変釜鎺掑簭鐨勯棶棰� + strArry[1] += value.PadLeft(numberLength, '0'); + value = string.Empty; + } + strArry[1] += c.ToString(); + } + if (value != string.Empty) + { + //浠ユ暟瀛楃粨灏剧殑璇� + strArry[1] += value.PadLeft(numberLength, '0'); + } + listSort.Add(strArry); + } + //鎺掑簭 + listSort.Sort((obj1, obj2) => + { + if (obj1[1].CompareTo(obj2[1]) > 0) + { + return 1; + } + return -1; + }); + var listSortHouse = new List<Common.ResponseEntity.ResidenceObj>(); + foreach (var strArry in listSort) + { + listSortHouse.Add(dicHouse[strArry[0]]); + } + return listSortHouse; + } + + /// <summary> + /// 浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴� + /// </summary> + /// <param name="listText"></param> + /// <returns></returns> + private int GetNumberMaxLength(List<string> listText) + { + int maxLength = 0; + foreach (var text in listText) + { + string value = string.Empty; + foreach (var c in text) + { + if (char.IsNumber(c) == true) + { + //鏁板瓧 + value += c.ToString(); + continue; + } + else if (value != string.Empty) + { + //鍒ゆ柇鏁板瓧闀垮害 + if (maxLength <= value.Length) + { + maxLength = value.Length; + } + value = string.Empty; + } + } + //鍒ゆ柇鏁板瓧闀垮害 + if (maxLength <= value.Length) + { + maxLength = value.Length; + } + } + return maxLength; } #endregion -- Gitblit v1.8.0