From 6fa9d69da922c8049f5acfcbb9ce9fd26811024c Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 16 四月 2020 17:10:57 +0800
Subject: [PATCH] 请合并代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs |  167 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 119 insertions(+), 48 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
index 9a88aab..3e23033 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -142,8 +142,10 @@
                 List<CommonDevice> list = Common.LocalDevice.Current.GetDeviceByGatewayID(gatewayId);
                 foreach (var device in list)
                 {
-                    //鍒犻櫎璁惧锛屼笉鍒犻櫎鎴块棿淇℃伅
-                    Common.LocalDevice.Current.DeleteMemmoryDevice(device, false);
+                    //鍒犻櫎涓�鑸澶�
+                    Common.LocalDevice.Current.DeleteMemmoryDevice(device, true);
+                    //鍒犻櫎Ota璁惧
+                    Common.LocalDevice.Current.DeleteMemmoryOtaDevice(device.DeviceAddr);
                 }
                 //鍒犻櫎缃戝叧鏂囦欢
                 this.DeleteGatewayFile(gatewayId);
@@ -202,7 +204,13 @@
         /// <param name="zbGateway">缃戝叧</param>
         /// <param name="mode">鏄惁鏄剧ず閿欒</param>
         public async Task<bool> AddNewGateway(ZbGateway zbGateway, ShowErrorMode mode)
-        {
+        {
+            //璁剧疆缃戝叧鐨勭粡绾害
+            bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.NO);
+            if (falge == false)
+            {
+                return falge;
+            }
             //鎵ц娣诲姞缃戝叧鍒板唴瀛�
             var result = await this.DoAddGatewayToMemory(zbGateway, mode);
             //鍓嶇殑缃戝叧缁戝畾鍦ㄤ簡褰撳墠璐﹀彿涓嬬殑涓嶅悓浣忓畢閲岄潰
@@ -224,9 +232,7 @@
             {
                 return false;
             }
-            //璁剧疆缃戝叧鐨勭粡绾害
-            bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude);
-            return falge;
+            return true;
         }
 
         /// <summary>
@@ -436,7 +442,7 @@
                 return -1;
             }
             //璁剧疆缃戝叧鐨勭粡绾害
-            bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude);
+            bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.YES);
             if (falge == false)
             {
                 return -1;
@@ -759,18 +765,21 @@
             {
                 //鍒犻櫎璁惧鏂囦欢
                 Common.LocalDevice.Current.DeleteMemmoryDevice(device, true);
+                //鍒犻櫎Ota璁惧
+                Common.LocalDevice.Current.DeleteMemmoryOtaDevice(device.DeviceAddr);
             }
             //濡傛灉鏄富缃戝叧
             if (this.IsMainGateway(zbGatewayID) == 1)
             {
-                foreach (var room in Shared.Common.Room.Lists)
+                var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms();
+                foreach (var room in listAllRoom)
                 {
                     //鍒犻櫎鍦烘櫙鏂囦欢
-                    foreach (var scene in room.SceneUIFilePathList)
+                    foreach (var sceneId in room.ListSceneId)
                     {
-                        if (Global.IsExistsByHomeId(scene) == true)
+                        if (Global.IsExistsByHomeId($"Scene_{sceneId}.json") == true)
                         {
-                            Global.DeleteFilebyHomeId(scene);
+                            Global.DeleteFilebyHomeId($"Scene_{sceneId}.json");
                         }
                     }
                 }
@@ -1391,10 +1400,10 @@
             if (mode == GetNameMode.SpecialGateway && localWay.getGwInfo != null)
             {
                 string keyName = Common.LocalDevice.deviceModelIdName + this.GetGwInfoAttribute(localWay, "LinuxImageType").ToString();
-                if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true)
+                if (LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true)
                 {
-                    //娌℃湁鍚嶇О鏃讹紝鍒欎娇鐢≧鏂囦欢閲岄潰璁剧疆鐨勪笢瑗�
-                    return Language.StringByID(Common.LocalDevice.Current.dicDeviceDefultNameID[keyName]);
+                    //娌℃湁鍚嶇О鏃讹紝鍒欎娇鐢≧鏂囦欢閲岄潰璁剧疆鐨勯粯璁よ澶囧悕绉�
+                    return Language.StringByID(LocalDevice.Current.dicDeviceAllNameID[keyName] + 20000);
                 }
             }
 
@@ -1433,10 +1442,10 @@
                 if (zbGateway.getGwInfo != null && zbGateway.getGwInfo.LinuxImageType != 0)
                 {
                     string keyName = Common.LocalDevice.deviceModelIdName + zbGateway.getGwInfo.LinuxImageType;
-                    if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true)
+                    if (Common.LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true)
                     {
                         //浣跨敤R鏂囦欢閲岄潰璁剧疆鐨勪笢瑗�
-                        button.TextID = LocalDevice.Current.dicDeviceDefultNameID[keyName];
+                        button.TextID = LocalDevice.Current.dicDeviceAllNameID[keyName];
                     }
                 }
                 else
@@ -1451,10 +1460,10 @@
                             HdlThreadLogic.Current.RunMain(() =>
                             {
                                 string keyName = Common.LocalDevice.deviceModelIdName + zbGateway.getGwInfo.LinuxImageType;
-                                if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true)
+                                if (Common.LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true)
                                 {
                                     //浣跨敤R鏂囦欢閲岄潰璁剧疆鐨勪笢瑗�
-                                    button.TextID = LocalDevice.Current.dicDeviceDefultNameID[keyName];
+                                    button.TextID = LocalDevice.Current.dicDeviceAllNameID[keyName];
                                 }
                             });
                         }
@@ -1464,10 +1473,10 @@
             else
             {
                 string keyName = Common.LocalDevice.deviceModelIdName + this.dicGateway[gwId].getGwInfo.LinuxImageType;
-                if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true)
+                if (Common.LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true)
                 {
                     //浣跨敤R鏂囦欢閲岄潰璁剧疆鐨勪笢瑗�
-                    button.TextID = Common.LocalDevice.Current.dicDeviceDefultNameID[keyName];
+                    button.TextID = Common.LocalDevice.Current.dicDeviceAllNameID[keyName];
                 }
             }
         }
@@ -1560,6 +1569,54 @@
 
         #endregion
 
+        #region 鈻� 缃戝叧鎴块棿鐩稿叧_______________________
+
+        /// <summary>
+        /// 鑾峰彇缃戝叧鎵�鍦ㄧ殑鎴块棿
+        /// </summary>
+        /// <param name="zbGateway">缃戝叧瀵硅薄</param>
+        /// <returns></returns>
+        public Room GetRoomByGateway(ZbGateway zbGateway)
+        {
+            var gatewayId = this.GetGatewayId(zbGateway);
+            return this.GetRoomByGateway(gatewayId);
+        }
+
+        /// <summary>
+        /// 鑾峰彇缃戝叧鎵�鍦ㄧ殑鎴块棿
+        /// </summary>
+        /// <param name="gatewayId">缃戝叧ID</param>
+        /// <returns></returns>
+        public Room GetRoomByGateway(string gatewayId)
+        {
+            var localGateway = this.GetLocalGateway(gatewayId);
+            if (localGateway == null)
+            {
+                return null;
+            }
+            return HdlRoomLogic.Current.GetRoomById(localGateway.RoomId);
+        }
+
+        /// <summary>
+        /// 鍙樻洿缃戝叧鎴块棿
+        /// </summary>
+        /// <param name="zbGateway">缃戝叧瀵硅薄</param>
+        /// <param name="roomId">鎴块棿ID</param>
+        public void ChangedGatewayRoom(ZbGateway zbGateway, string roomId)
+        {
+            var gatewayId = this.GetGatewayId(zbGateway);
+            var localGateway = this.GetLocalGateway(gatewayId);
+            if (localGateway != null)
+            {
+                localGateway.RoomId = roomId;
+                localGateway.ReSave();
+                //娣诲姞澶囦唤
+                HdlAutoBackupLogic.AddOrEditorFile(localGateway.FilePath);
+            }
+        }
+
+        #endregion
+
         #region 鈻� 娓呯┖鐪熷疄缃戝叧鍒楄〃___________________
 
         /// <summary>
@@ -1628,8 +1685,11 @@
                 this.GetGwInfoAttribute(localWay, "ZbImageType").ToString(),
                 Convert.ToInt32(this.GetGwInfoAttribute(localWay, "ZbFWVersion")));
 
+            var list = new List<FirmwareVersionInfo>();
+            list.Add(gatewayFirmware);
+            list.Add(coordinatorFirmware);
+
             //杩欎釜缃戝叧闇�瑕佹湁铏氭嫙椹卞姩杩欎釜涓滆タ鎵嶈
-            FirmwareVersionInfo virtualFirmware = null;
             string linImage = this.GetGwInfoAttribute(localWay, "LinuxImageType").ToString();
             if (linImage != "6")
             {
@@ -1637,28 +1697,32 @@
                 var listvVode = await HdlGatewayLogic.Current.GetListVDDriveCode(localWay);
                 if (listvVode != null && listvVode.Count > 0)
                 {
-                    //娣诲姞铏氭嫙椹卞姩鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�)
-                    flage = await HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.VirtualDevice,
-                        listvVode[0].DriveHwVersion.ToString(),
-                        listvVode[0].DriveImageType.ToString());
-
-                    //铏氭嫙椹卞姩
-                    virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.VirtualDevice,
-                        listvVode[0].DriveHwVersion.ToString(),
-                        listvVode[0].DriveImageType.ToString(),
-                        listvVode[0].DriveFwVersion);
-
-                    if (virtualFirmware != null)
+                    foreach (var data in listvVode)
                     {
-                        virtualFirmware.VirtualCode = listvVode[0].DriveCode;
+                        //娣诲姞铏氭嫙椹卞姩鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�)
+                        flage = await HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.VirtualDevice,
+                            data.DriveHwVersion.ToString(),
+                            data.DriveImageType.ToString());
+
+                        //铏氭嫙椹卞姩
+                        var virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.VirtualDevice,
+                            data.DriveHwVersion.ToString(),
+                            data.DriveImageType.ToString(),
+                            data.DriveFwVersion);
+
+                        if (virtualFirmware != null)
+                        {
+                            virtualFirmware.VirtualCode = data.DriveCode;
+                            list.Add(virtualFirmware);
+                        }
                     }
                 }
             }
-            var list = new List<FirmwareVersionInfo>();
-            list.Add(gatewayFirmware);
-            list.Add(coordinatorFirmware);
-            list.Add(virtualFirmware);
-
+            if (list.Count == 2)
+            {
+                //铏氭嫙椹卞姩濡傛灉娌℃湁鏂扮増鏈殑璇濓紝鍥哄畾娣诲姞涓�涓┖鐨�
+                list.Add(null);
+            }
             return list;
         }
 
@@ -2197,15 +2261,19 @@
         /// <param name="gateway">缃戝叧瀵硅薄</param>
         /// <param name="Longitude">缁忓害</param>
         /// <param name="Latitude">缁村害</param>
+        /// <param name="mode">鏄剧ず閿欒</param>
         /// <returns></returns>
-        public bool SetGatewaySite(ZbGateway gateway, double Longitude, double Latitude)
+        public bool SetGatewaySite(ZbGateway gateway, double Longitude, double Latitude, ShowErrorMode mode)
         {
             ZbGateway realWay = null;
             if (this.GetRealGateway(ref realWay, gateway) == false)
             {
-                //閿欒:缃戝叧瀵硅薄涓㈠け
-                string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
-                this.ShowTipMsg(msg);
+                if (mode == ShowErrorMode.YES)
+                {
+                    //閿欒:缃戝叧瀵硅薄涓㈠け
+                    string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg);
+                    this.ShowTipMsg(msg);
+                }
                 return false;
             }
 
@@ -2250,13 +2318,16 @@
             realWay.Actions -= action;
             if (result != 0)
             {
-                //璁剧疆缃戝叧缁忕含搴﹀け璐�
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetGatewaySiteFail);
-                if (result == -1)
+                if (mode == ShowErrorMode.YES)
                 {
-                    msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
+                    //璁剧疆缃戝叧缁忕含搴﹀け璐�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uSetGatewaySiteFail);
+                    if (result == -1)
+                    {
+                        msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
+                    }
+                    this.ShowTipMsg(msg);
                 }
-                this.ShowTipMsg(msg);
                 return false;
             }
 

--
Gitblit v1.8.0