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/HdlSceneLogic.cs |   56 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
index d087a84..c9d80ec 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
@@ -178,7 +178,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;
@@ -359,12 +363,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 +379,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 +397,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,6 +957,15 @@
                 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 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);

--
Gitblit v1.8.0