From 23fb45dd846ed8b62304c408c6bbe64265d4ac8b Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 20 十二月 2019 18:57:16 +0800
Subject: [PATCH] 代码合并

---
 ZigbeeApp/Shared/Common/Room.cs |  195 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 169 insertions(+), 26 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index 495100a..c6005c0 100755
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -69,12 +69,20 @@
 
         /// <summary>
         /// 娓╁害浼犳劅鍣�(璁惧涓婚敭)
-        /// </summary>
+        /// </summary>   
         public string TemperatrueDevice = string.Empty;
         /// <summary>
         /// 婀垮害浼犳劅鍣�(璁惧涓婚敭)
         /// </summary>
         public string HumidityDevice = string.Empty;
+        /// <summary>
+        /// 娓╁害
+        /// </summary>
+        public double Temperatrue;
+        /// <summary>
+        /// 婀垮害
+        /// </summary>
+        public double Humidity;
 
         /// <summary>
         /// 褰撳墠閫夋嫨鐨勬埧闂�
@@ -201,6 +209,32 @@
                 return sceneList;
             }
         }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅矾寰�
+        /// </summary>
+        /// <value>All room scene UIL ist.</value>
+        [Newtonsoft.Json.JsonIgnore]
+        public  List<string> AllRoomSceneUIFilepathList
+        {
+            get
+            {
+                var pathList = new List<string> { };
+                foreach (var r in Lists)
+                {
+                    if (r.SceneUIFilePathList.Count == 0)
+                    {
+                        continue;
+                    }
+                    foreach (var path in r.SceneUIFilePathList)
+                    {
+                        pathList.Add(path);
+                    }
+                }
+                return pathList;
+            }
+        }
+
         /// <summary>
         /// 鍦烘櫙鍒楄〃---涓嶅啀搴忓垪鍖�
         /// </summary>
@@ -323,15 +357,45 @@
                 homeTemp.AddRoomListFilePath(fRoom);
             }
 
+            var listRoomFile = new List<string>();
             foreach (string fileName in listFile)
             {
                 if (fileName.StartsWith("Room_"))
                 {
                     homeTemp.AddRoomListFilePath(fileName);
+                    listRoomFile.Add(fileName);
                 }
             }
+            //妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬�
+            CheckFloorData(listRoomFile);
+
             homeTemp.Save(false);
             InitAllRoom();
+        }
+
+        /// <summary>
+        /// 妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬�
+        /// </summary>
+        /// <param name="listRoomFile"></param>
+        private static void CheckFloorData(List<string> listRoomFile)
+        {
+            for (int i = 0; i < listRoomFile.Count; i++)
+            {
+                try
+                {
+                    var byteData = Global.ReadFileByHomeId(listRoomFile[i]);
+                    string valueData = System.Text.Encoding.UTF8.GetString(byteData);
+                    var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
+
+                    //妫�娴嬪涓墜鏈烘潵鍥炲垱寤�,鐒跺悗鍙堝垹闄や箣鍚�,妤煎眰鏁版嵁涓嶈兘淇濊瘉100%鍚屾鐨勯棶棰�
+                    if (roomTemp.FloorId != string.Empty && Config.Instance.Home.FloorDics.ContainsKey(roomTemp.FloorId) == false)
+                    {
+                        //鏈煡妤煎眰
+                        Config.Instance.Home.FloorDics[roomTemp.FloorId] = Language.StringByID(R.MyInternationalizationString.uUnKnownFloor);
+                    }
+                }
+                catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
+            }
         }
 
         #endregion
@@ -589,21 +653,25 @@
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
-        public  List<Room> GetRoomsByFloorId(string id)
+        public List<Room> GetRoomsByFloorId(string id)
         {
-            return Lists.FindAll((obj) => obj.FloorId==id);
+            if (Config.Instance.Home.FloorDics.Count == 0)
+            {
+                return Lists;
+            }
+            return Lists.FindAll((obj) => obj.FloorId == id);
         }
         /// <summary>
         /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂村悕绉�
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
-        public  List<string> GetRoomNamesByFloorId(string id)
+        public List<string> GetRoomNamesByFloorId(string id)
         {
             List<string> names = new List<string> { };
-            foreach(var r in Lists)
+            foreach (var r in Lists)
             {
-                if(r.FloorId==id)
+                if (r.FloorId == id)
                 {
                     names.Add(r.Name);
                 }
@@ -618,6 +686,10 @@
         /// <returns></returns>
         public  List<Room> GetRoomsByFloorIdAppendLoveRoom(string id)
         {
+            if (Config.Instance.Home.FloorDics.Count == 0)
+            {
+                return Lists;
+            }
             var r= Lists.FindAll((obj) => obj.FloorId == id);
             r.Insert(0, GetLoveRoom());
             return r;
@@ -853,6 +925,9 @@
             room.Save();
             //鏇存敼鑷姩澶囦唤
             HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
+
+            //閫掑綊锛氬垹闄ゆ帀浠ュ墠鐨勬棫鏁版嵁瀵艰嚧鐨勫涓埧闂寸殑闂
+            this.DeleteDevice(device);
         }
 
         #endregion
@@ -937,35 +1012,34 @@
         }
 
         /// <summary>
-        /// 鑾峰彇璇ユゼ灞傜殑鍦烘櫙
+        /// 鑾峰彇鏈垎閰嶅尯鍩熻澶�
         /// </summary>
-        /// <param name="floorId"></param>
         /// <returns></returns>
-        public List<SceneUI> GetSceneUIsByFloorId(string floorId)
+        public List<DeviceUI> GetUnalloctedDeviceUIs()
         {
-            var rooms = GetRoomsByFloorId(floorId);
-            if (rooms == null)
+            List<DeviceUI> deviceUIs = new List<DeviceUI> { };
+            var dList = AllRoomDeviceUIList;
+            var commonDeviceList = Common.LocalDevice.Current.listAllDevice;
+
+            if (dList.Count == 0)
             {
                 return null;
             }
-            var sceneList = new List<SceneUI> { };
-            foreach (var r in rooms)
+            foreach (var device in commonDeviceList)
             {
-                if (r.SceneUIList.Count == 0)
+                if (dList.Find((obj) => obj.CommonDevice == device) == null)
                 {
-                    continue;
-                }
-                foreach (var sceneUI in r.SceneUIList)
-                {
-                    if (sceneUI == null)
-                    {
-                        continue;
-                    }
-                    sceneList.Add(sceneUI);
+                    deviceUIs.Add(Common.LocalDevice.Current.GetDeviceUI(device));
                 }
             }
-            return sceneList;
+            if (deviceUIs.Count == 0)
+            {
+                return null;
+            }
+            return deviceUIs;
         }
+
+        //public List<DeviceUI> GetUnalloctedDeviceUITypes
 
         #endregion
 
@@ -989,7 +1063,7 @@
                     return -1;
                 }
             }
-            
+
             var getSceneIdAllData = await ZigBee.Device.Scene.GetSceneNewIdAsync(sceneName);
             if (getSceneIdAllData == null || getSceneIdAllData.getSceneIdData == null)
             {
@@ -1225,6 +1299,7 @@
             }
             return null;
         }
+
         /// <summary>
         /// 鑾峰彇璇ユゼ灞傛墍鏈夊満鏅�
         /// </summary>
@@ -1240,6 +1315,74 @@
             }
             return sceneUIs;
         }
+
+        /// <summary>
+        /// 鑾峰彇璇ユゼ灞傜殑鍦烘櫙
+        /// </summary>
+        /// <param name="floorId"></param>
+        /// <returns></returns>
+        public List<SceneUI> GetSceneUIsByFloorId(string floorId)
+        {
+            var rooms = GetRoomsByFloorId(floorId);
+            if (rooms == null)
+            {
+                return null;
+            }
+            var sceneList = new List<SceneUI> { };
+            foreach (var r in rooms)
+            {
+                if (r.SceneUIList.Count == 0)
+                {
+                    continue;
+                }
+                foreach (var sceneUI in r.SceneUIList)
+                {
+                    if (sceneUI == null)
+                    {
+                        continue;
+                    }
+                    sceneList.Add(sceneUI);
+                }
+            }
+            return sceneList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏈垎閰嶅尯鍩熷満鏅�
+        /// </summary>
+        /// <returns></returns>
+        public List<SceneUI> GetUnalloctedScenes()
+        {
+            List<SceneUI> sceneUIs = new List<SceneUI> { };
+            var sList = AllRoomSceneUIFilepathList;
+
+            List<string> sfile = new List<string> { };
+            foreach (var path in Global.FileListByHomeId())
+            {
+                if (path.StartsWith("Scene_", StringComparison.Ordinal))
+                {
+                    sfile.Add(path);
+                }
+            }
+            foreach (var path in sfile)
+            {
+                if (sList.Find((obj) => obj == path) == null)
+                {
+                    var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(path));
+                    var tempSceneUI = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneUI>(jsonInfo);
+                    if (tempSceneUI != null)
+                    {
+                        sceneUIs.Add(tempSceneUI);
+                    }
+                }
+            }
+            if (sceneUIs.Count == 0)
+            {
+                return null;
+            }
+            return sceneUIs;
+        }
+
         #endregion
 
         #region 鈼� 鍒锋柊鍦烘櫙_________________________
@@ -1474,6 +1617,6 @@
         }
 
         #endregion
-       
+
     }
 }

--
Gitblit v1.8.0