From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 14 十二月 2020 09:59:01 +0800
Subject: [PATCH] 请合并代码,完成晾衣架最终功能。

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs |   74 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 11 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
index d087a84..88eae1f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
@@ -82,6 +82,11 @@
         /// <param name="useLocalConnect">鏄惁寮哄埗浣跨敤鏈湴杩炴帴鍙戦��</param>
         public bool RefreshSceneUIList(bool useLocalConnect)
         {
+            if (Config.Instance.Home.TemplateMode == 2 && Config.Instance.Home.SendTemplateSuccess == false)
+            {
+                //濡傛灉鏄湁妯℃澘鏈夎澶囨ā寮�,浣嗘槸杩樻病鏈夊鍏ユ垚鍔熺殑鎯呭喌涓�,涓嶅厑璁稿埛鏂板満鏅垪琛�
+                return true;
+            }
             //鑾峰彇缃戝叧瀛樺湪鐨勫満鏅�
             var sceneList = this.RefreshSceneListFromGateway(useLocalConnect);
             if (sceneList == null)
@@ -178,7 +183,11 @@
                 if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon")
                 {
                     var sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene.GetSceneAllInfo>(jobject["Data"].ToString());
-                    listScene.Add(sceneGetAllInfo);
+                    if (sceneGetAllInfo.ScenesSum != 0)
+                    {
+                        //濡傛灉缃戝叧閲岄潰娌℃湁鍦烘櫙鐨勮瘽,瀹冧篃浼氭帹杩欎釜涓滆タ杩囨潵
+                        listScene.Add(sceneGetAllInfo);
+                    }
 
                     //鏇村鎺ユ敹寰楀埌鍦烘櫙
                     canReceve = true;
@@ -243,9 +252,12 @@
             //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
             if (Config.Instance.Home.IsVirtually == false)
             {
+                var mainWay = ZbGateway.MainGateWay;
+                if (mainWay == null) { return null; }
+
                 //鑾峰彇鏂板缓涓�涓満鏅殑鍛戒护瀛楃
                 var strCommand = this.GetAddNewSceneCommand(sceneName);
-                var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(ZbGateway.MainGateWay, "Scene/GetNewId", strCommand, "Scene/GetNewId_Respon");
+                var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(mainWay.GwId, "Scene/GetNewId", strCommand, "Scene/GetNewId_Respon");
                 if (result.ErrorMsg != null)
                 {
                     this.ShowTipMsg(result.ErrorMsg);
@@ -322,12 +334,14 @@
                 return listAdjustTarget;
             }
             var listSuccess = new List<Scene.DeviceListData>();
+            var mainWay = ZbGateway.MainGateWay;
+            if (mainWay == null) { return listSuccess; }
 
             //鑾峰彇娣诲姞鎵ц鐩爣鍒板満鏅殑鍛戒护
             var listCommand = this.GetAddTargetToSceneCommand(sceneId, listAdjustTarget);
             for (int i = 0; i < listCommand.Count; i++)
             {
-                var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(ZbGateway.MainGateWay, "Scene/AddMember", listCommand[i], "Scene/AddMember_Respon");
+                var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(mainWay.GwId, "Scene/AddMember", listCommand[i], "Scene/AddMember_Respon");
                 if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
                 {
                     //鍑虹幇閿欒
@@ -359,12 +373,15 @@
         /// <summary>
         /// 鑾峰彇娣诲姞鎵ц鐩爣鍒板満鏅殑鍛戒护
         /// </summary>
-        /// <param name="sceneId"></param>
-        /// <param name="listAdjustTarget"></param>
+        /// <param name="sceneId">鍦烘櫙id</param>
+        /// <param name="listAdjustTarget">鎵ц鐩爣</param>
+        /// <param name="dicChangedMac">浜ゆ崲mac key:listAdjustTarget褰撳墠鐨凪ac value:杞崲鐨刴ac</param>
+        /// <param name="sceneName">鍦烘櫙鍚嶇О(鐗规畩鐢ㄩ��,璇峰嬁璁剧疆)</param>
         /// <returns></returns>
-        public List<string> GetAddTargetToSceneCommand(int sceneId, List<Scene.DeviceListData> listAdjustTarget)
+        public List<string> GetAddTargetToSceneCommand(int sceneId, List<Scene.DeviceListData> listAdjustTarget, Dictionary<string, string> dicChangedMac = null, string sceneName = null)
         {
             var listCommand = new List<string>();
+            int index = 1;
             for (int i = 0; i < listAdjustTarget.Count; i++)
             {
                 var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 820 } };
@@ -372,6 +389,17 @@
                 //璁惧
                 if (data.Type == 0)
                 {
+                    string deviceAddr = data.DeviceAddr;
+                    if (dicChangedMac != null)
+                    {
+                        //濡傛灉涓嶅寘鍚�,鍒欎笉浣滀负澶勭悊瀵硅薄
+                        if (dicChangedMac.ContainsKey(deviceAddr) == false)
+                        {
+                            continue;
+                        }
+                        deviceAddr = dicChangedMac[deviceAddr];
+                    }
+
                     var taskList = new Newtonsoft.Json.Linq.JArray { };
                     foreach (var taskInfo in data.TaskList)
                     {
@@ -379,25 +407,38 @@
                             { "Data1", taskInfo.Data1},{ "Data2",taskInfo.Data2}};
                         taskList.Add(tInfo);
                     }
-                    var data2 = new Newtonsoft.Json.Linq.JObject {{ "ScenesId",sceneId},{ "Type", 0} ,{ "DeviceAddr",data.DeviceAddr} ,
-                         { "Epoint", data.Epoint} ,{ "TaskList", taskList },{ "DelayTime", 0} ,{ "MemberNumber",i + 1}};
+                    var data2 = new Newtonsoft.Json.Linq.JObject {{ "ScenesId",sceneId},{ "Type", 0} ,{ "DeviceAddr",deviceAddr} ,
+                         { "Epoint", data.Epoint} ,{ "TaskList", taskList },{ "DelayTime", 0} ,{ "MemberNumber",index}};
+                    if (sceneName != null)
+                    {
+                        data2.Add(new Newtonsoft.Json.Linq.JProperty("ScenesName", sceneName));
+                    }
                     jObject.Add("Data", data2);
                 }
                 //鍦烘櫙
                 else if (data.Type == 1)
                 {
                     var data2 = new Newtonsoft.Json.Linq.JObject {{ "ScenesId",sceneId},{ "Type", 1} ,
-                         { "ElseScenesId", data.ElseScenesId },{ "DelayTime", 0} ,{ "MemberNumber",i + 1} };
+                         { "ElseScenesId", data.ElseScenesId },{ "DelayTime", 0} ,{ "MemberNumber",index} };
+                    if (sceneName != null)
+                    {
+                        data2.Add(new Newtonsoft.Json.Linq.JProperty("ScenesName", sceneName));
+                    }
                     jObject.Add("Data", data2);
                 }
                 //寤舵椂
                 else
                 {
                     var data2 = new Newtonsoft.Json.Linq.JObject {{ "Type", 2} ,{ "ScenesId",sceneId},
-                         { "DelayTime", data.DelayTime} ,{ "MemberNumber",i + 1}};
+                         { "DelayTime", data.DelayTime} ,{ "MemberNumber",index}};
+                    if (sceneName != null)
+                    {
+                        data2.Add(new Newtonsoft.Json.Linq.JProperty("ScenesName", sceneName));
+                    }
                     jObject.Add("Data", data2);
                 }
                 listCommand.Add(jObject.ToString());
+                index++;
             }
             return listCommand;
         }
@@ -926,11 +967,22 @@
                 listAdjustTarget.AddRange(i_scene.AdjustTargetList);
                 return listAdjustTarget;
             }
+            //濡傛灉鏄湁妯℃澘,鏈夎澶囩殑鏃跺��,鍦ㄦ病鏈夊彂閫佹垚鍔熶箣鍓�,涓嶅厑璁稿埛鏂版墽琛岀洰鏍囧璞�
+            if (Common.Config.Instance.Home.TemplateMode == 2
+                && Common.Config.Instance.Home.SendTemplateSuccess == false)
+            {
+                var listAdjustTarget = new List<Scene.DeviceListData>();
+                listAdjustTarget.AddRange(i_scene.AdjustTargetList);
+                return listAdjustTarget;
+            }
+            var mainWay = ZbGateway.MainGateWay;
+            if (mainWay == null) { return null; }
+
             var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 806 } };
             var data = new Newtonsoft.Json.Linq.JObject { { "ScenesId", i_scene.Id } };
             jObject.Add("Data", data);
             //鍙戦�佸懡浠�
-            var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(ZbGateway.MainGateWay, "Scene/GetDeviceList", jObject.ToString(), "Scene/GetDeviceList_Respon");
+            var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(mainWay.GwId, "Scene/GetDeviceList", jObject.ToString(), "Scene/GetDeviceList_Respon");
 
             if (result.ErrorMsg != null)
             {

--
Gitblit v1.8.0