From f14dcfd967404e197e7ec995ca8d6f2b090d3b7d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期五, 11 九月 2020 09:16:59 +0800
Subject: [PATCH] 优化多功能面板:绑定温湿度传感器目标,和设备列表回路显示。优化数据矫正功能温湿度度不设置的情况。优化门锁时间设置最后一天和最后最后一个月的时间显示等 细节

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs |  233 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 206 insertions(+), 27 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
index c60d868..69f5c4a 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
@@ -39,13 +39,13 @@
         /// 鍒涘缓鏂扮殑浣忓畢(杩斿洖浣忓畢id,null浠h〃澶辫触)
         /// </summary>
         /// <param name="residenceName">浣忓畢鍚嶇О</param>
-        public async System.Threading.Tasks.Task<string> CreatNewResidence(string residenceName)
+        public string CreatNewResidence(string residenceName)
         {
             var Pra = new AddResidencePra();
             Pra.Name = residenceName;
             //娣诲姞浣忓畢
-            string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
-            if (resultData == null)
+            string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
+            if (string.IsNullOrEmpty(resultData) == true)
             {
                 return null;
             }
@@ -96,7 +96,7 @@
         /// </summary>
         /// <param name="residenceId"></param>
         /// <returns></returns>
-        public async System.Threading.Tasks.Task SwitchResidence(string residenceId)
+        public bool SwitchResidence(string residenceId)
         {
             //鎵撳紑杩涘害鏉�
             ProgressBar.Show();
@@ -106,10 +106,12 @@
             Config.Instance.Home = this.GetHouseByHouseId(residenceId);
             Config.Instance.Save();
             //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
-            await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
+            bool result = UserCenterLogic.InitUserCenterMenmoryAndThread(false);
 
             //鍏抽棴杩涘害鏉�
             ProgressBar.Close();
+
+            return result;
         }
 
         #endregion
@@ -122,7 +124,7 @@
         /// <param name="residenceId">浣忓畢id</param>
         /// <param name="residenceName">浣忓畢鍚嶇О</param>
         /// <returns></returns>
-        public async System.Threading.Tasks.Task<bool> EditorResidenceName(string residenceId, string residenceName)
+        public bool EditorResidenceName(string residenceId, string residenceName)
         {
             var Pra = new EditorResidencePra();
             Pra.HomeId = residenceId;
@@ -131,7 +133,7 @@
             Pra.LoginAccessToken = Config.Instance.Token;
 
             //缂栬緫浣忓畢
-            bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra);
+            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;
         }
 
 
@@ -176,7 +178,7 @@
         public House GetHouseByHouseId(string houseId)
         {
             var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, houseId, $"House_{houseId}.json");
-            var file = Shared.IO.FileUtils.ReadFile(path);
+            var file = HdlFileLogic.Current.ReadFileByteContent(path);
             if (file == null)
             {
                 return null;
@@ -192,7 +194,7 @@
         public House GetHouseByFilePath(string filePath)
         {
             var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, GetHouseIdByFilePath(filePath), filePath);
-            var file = Shared.IO.FileUtils.ReadFile(path);
+            var file = HdlFileLogic.Current.ReadFileByteContent(path);
             if (file == null)
             {
                 return null;
@@ -206,27 +208,28 @@
         /// <summary>
         /// 鑾峰彇浜戠浣忓畢鍒楄〃
         /// </summary>
-        public async System.Threading.Tasks.Task<List<string>> GetHomeListsFromDb()
+        /// <param name="checkNetwork">鏄惁妫�娴嬬綉缁�,濡傛灉璁剧疆妫�娴嬬殑璇�,褰撲笉鑳借仈缃戞椂,鐩存帴杩斿洖鏈湴浣忓畢</param>
+        /// <returns></returns>
+        public List<string> GetHomeListsFromDb(bool checkNetwork)
         {
-            var pageSetting = new SendDataToServer.ResidenceListPageSettingObj()
+            if (checkNetwork == true && HdlWifiLogic.Current.CanAccessHttp == false)
             {
-                PageSize = CommonPage.PageSize
-            };
-
-            var reqDto = new SendDataToServer.ResidenceListObj()
-            {
-                LoginAccessToken = Config.Instance.Token,
-                PageSetting = pageSetting
-            };
+                //褰撳墠鏃犳硶鑱旂綉
+                return Config.Instance.HomeFilePathList;
+            }
             var requestObj = new SendDataToServer.ResidenceListReqDto()
             {
-                ReqDto = reqDto,
                 RequestVersion = CommonPage.RequestVersion,
+                ReqDto = new SendDataToServer.ResidenceListObj()
+                {
+                    LoginAccessToken = Config.Instance.Token,
+                    PageSetting = new SendDataToServer.ResidenceListPageSettingObj { PageSize = 999 }
+                }
             };
             try
             {
                 var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
-                var revertObj = await 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;
@@ -234,7 +237,7 @@
                 if (revertObj.StateCode.ToUpper() == "SUCCESS")
                 {
                     var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResidenceRes>(revertObj.ResponseData.ToString());
-                    if(responseDataObj.TotalCount>0)
+                    if (responseDataObj.TotalCount > 0)
                     {
                         //娓呯┖褰撳墠浣忓畢鍒楄〃
                         Config.Instance.HomeFilePathList.Clear();
@@ -317,14 +320,14 @@
             var listHome = new List<Common.House>();
             foreach (var housePath in Common.Config.Instance.HomeFilePathList)
             {
-                var home =this.GetHouseByFilePath(housePath);
+                var home = this.GetHouseByFilePath(housePath);
                 if (home == null)
                 {
                     continue;
                 }
                 listHome.Add(home);
             }
-            return listHome;
+            return this.SortHouse(listHome);
         }
 
         /// <summary>
@@ -351,7 +354,7 @@
                 if (arryHouse.Length > 0)
                 {
                     //璇诲彇鏂囦欢鍐呭
-                    var textValue = UserCenterLogic.LoadFileContent(System.IO.Path.Combine(nowPath, arryHouse[0]));
+                    var textValue = HdlFileLogic.Current.ReadFileTextContent(System.IO.Path.Combine(nowPath, arryHouse[0]));
                     if (textValue == null)
                     {
                         continue;
@@ -360,7 +363,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