From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs |  156 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 136 insertions(+), 20 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs b/ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs
index 6d3e7a7..4ae3a2a 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs
@@ -1,16 +1,19 @@
 锘縰sing System;
 using System.Collections.Generic;
+using Shared;
+using ZigBee.Device;
+
 namespace Shared.Phone.Device.Logic
 {
     public class LogicIfon
     {
-       #region ----閫昏緫鏉′欢杈撳叆----
+        #region ----閫昏緫鏉′欢杈撳叆----
         /// <summary>
         /// 娣诲姞璁惧鏉′欢鐨勬柟娉�
         /// </summary>
         /// <param name="common">Common.</param>
         /// <param name="objecttype">Objecttype.</param>
-        public static void AddDeviceconditions(ZigBee.Device.CommonDevice common, Dictionary<string, string> objecttype)
+        public static void AddDeviceconditions(CommonDevice common, Dictionary<string, string> objecttype)
         {
             for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
             {
@@ -18,9 +21,81 @@
                 {
                     if ((Common.Logic.CurrentLogic.Conditions[i]["MacAddr"] == common.DeviceAddr) && (Common.Logic.CurrentLogic.Conditions[i]["Epoint"] == common.DeviceEpoint.ToString()))
                     {
-                        Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
-                        Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
-                        return;
+                        if (common.Type == DeviceType.TemperatureSensor)
+                        {
+
+                            //鑾峰彇璁惧绫诲瀷
+                            var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { common });
+
+                            //绌烘皵璐ㄩ噺浼犳劅鍣�
+                            if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor)
+                            {
+                                var cluster_ID1 = Common.Logic.CurrentLogic.Conditions[i]["Cluster_ID"];
+                                var attriButeId1 = Common.Logic.CurrentLogic.Conditions[i]["AttriButeId"];
+                                var cluster_ID2 = objecttype["Cluster_ID"];
+                                var attriButeId2 = objecttype["AttriButeId"];
+
+                                bool cluster_ID = false;
+                                if (cluster_ID1 == cluster_ID2 && attriButeId1 == attriButeId2)
+                                {
+                                    cluster_ID = true;
+                                }
+
+                                if (cluster_ID)
+                                {
+                                    //宸茬粡瀛樺湪绉婚櫎鍐嶉噸鏂版坊鍔�
+                                    Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
+                                    Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
+                                    return;
+                                }
+                            }
+                            else
+                            {
+                                //璁惧娓╁害浼犳劅鍣�
+                                var dev = common as TemperatureSensor;
+                                string str = "";
+                                if (dev.SensorDiv == 1)
+                                {
+                                    str = "1026";
+                                }
+                                else
+                                {
+                                    str = "1029";
+                                }
+                                if (Common.Logic.CurrentLogic.Conditions[i]["Cluster_ID"] == str)
+                                {
+                                    Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
+                                    Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
+                                    return;
+                                }
+
+                            }
+                        }
+                        else if (common.Type == DeviceType.IASZone)
+                        {
+                            var iASZonedevice = common as IASZone;
+                            if (iASZonedevice.ModelIdentifier == "MSPIRB-ZB.10")
+                            {//鐞冨舰绉诲姩浼犳劅鍣�
+                                if (Common.Logic.CurrentLogic.Conditions[i]["Cluster_ID"] == objecttype["Cluster_ID"])
+                                {
+                                    Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
+                                    Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
+                                    return;
+                                }
+                                continue;
+                            }
+
+                            Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
+                            Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
+                            return;
+
+                        }
+                        else
+                        {
+                            Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
+                            Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
+                            return;
+                        }
                     }
 
                 }
@@ -30,7 +105,7 @@
         /// <summary>
         /// 娣诲姞Logic鏉′欢鐨勬柟娉�
         /// </summary>
-        /// <param name="common">Common.</param>
+        /// <param name="logic">Common.</param>
         /// <param name="objecttype">Objecttype.</param>
         public static void AddLogicconditions(Common.Logic logic, Dictionary<string, string> objecttype)
         {
@@ -39,7 +114,7 @@
                 if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "2")
                 {
 
-                    if (Common.Logic.CurrentLogic.Conditions[i]["Condition_LogicId"] ==logic.LogicId.ToString())
+                    if (Common.Logic.CurrentLogic.Conditions[i]["Condition_LogicId"] == logic.LogicId.ToString())
                     {
                         Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
                         Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
@@ -80,7 +155,7 @@
         {
             for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
             {
-                if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "7")
+                if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == objecttype["Type"])
                 {
 
                     Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
@@ -93,7 +168,6 @@
             Common.Logic.CurrentLogic.Conditions.Add(objecttype);
         }
         #endregion
-
         #region ----閫昏緫杈撳嚭鐩爣----
 
         /// <summary>
@@ -101,13 +175,34 @@
         /// </summary>
         /// <param name="common">Common.</param>
         /// <param name="actionsInfo">Objecttype.</param>
-        public static void AddDeviceactions(ZigBee.Device.CommonDevice common, Dictionary<string, object> actionsInfo)
+        public static void AddDeviceActions(ZigBee.Device.CommonDevice common, Dictionary<string, object> actionsInfo)
         {
             for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
             {
                 if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "0")
                 {
-                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() ==common.DeviceAddr&& Common.Logic.CurrentLogic.Actions[i]["Epoint"].ToString() ==common.DeviceEpoint.ToString())
+                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == common.DeviceAddr && Common.Logic.CurrentLogic.Actions[i]["Epoint"].ToString() == common.DeviceEpoint.ToString())
+                    {
+                        Common.Logic.CurrentLogic.Actions.RemoveAt(i);
+                        Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
+                        return;
+                    }
+                }
+            }
+            Common.Logic.CurrentLogic.Actions.Add(actionsInfo);
+        }
+        /// <summary>
+        /// 娣诲姞闂ㄩ攣璁惧杈撳嚭鐨勬柟娉�
+        /// </summary>
+        /// <param name="common">Common.</param>
+        /// <param name="actionsInfo">Objecttype.</param>
+        public static void AddDoorLockActions(ZigBee.Device.CommonDevice common, Dictionary<string, object> actionsInfo)
+        {
+            for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
+            {
+                if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "8")
+                {
+                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == common.DeviceAddr && Common.Logic.CurrentLogic.Actions[i]["Epoint"].ToString() =="200")
                     {
                         Common.Logic.CurrentLogic.Actions.RemoveAt(i);
                         Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
@@ -122,13 +217,13 @@
         /// </summary>
         /// <param name="Scene">Common.</param>
         /// <param name="actionsInfo">Objecttype.</param>
-        public static void AddSceneactions(Shared.Common.SceneUI Scene,Dictionary<string, object> actionsInfo)
+        public static void AddSceneactions(Shared.Common.SceneUI Scene, Dictionary<string, object> actionsInfo)
         {
             for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
             {
                 if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "2")
                 {
-                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() ==Scene.Id.ToString())
+                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == Scene.Id.ToString())
                     {
                         Common.Logic.CurrentLogic.Actions.RemoveAt(i);
                         Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
@@ -141,8 +236,7 @@
         /// <summary>
         /// 娣诲姞瀹夐槻杈撳嚭鐨勬柟娉�
         /// </summary>
-        /// <param name="objecttype">Objecttype.</param>
-        /// <param name="o">O.</param>
+        /// <param name="actionsInfo">actionsInfo.</param>
         public static void AddSecurityactions(Dictionary<string, object> actionsInfo)
         {
             for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
@@ -160,16 +254,16 @@
         /// <summary>
         /// 娣诲姞鑷姩鍖栬緭鍑虹殑鏂规硶
         /// </summary>
-        /// <param name="objecttype">Objecttype.</param>
-        /// <param name="o">O.</param>
-        public static void AddLogicactions(Common.Logic logic,Dictionary<string, object> actionsInfo)
+        /// <param name="actionsInfo">Objecttype.</param>
+        /// <param name="logic">logic</param>
+        public static void AddLogicactions(Common.Logic logic, Dictionary<string, object> actionsInfo)
         {
 
             for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
             {
                 if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "4")
                 {
-                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() ==logic.LogicId.ToString())
+                    if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == logic.LogicId.ToString())
                     {
                         Common.Logic.CurrentLogic.Actions.RemoveAt(i);
                         Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
@@ -181,7 +275,29 @@
 
         }
         #endregion
+        #region ----鍏宠仈app璐﹀彿----
+        /// <summary>
+        /// 鍏宠仈app璐﹀彿
+        /// </summary>
+        /// <param name="accountsInfo"></param>
+        public static void Addaccounts(Dictionary<string, string> accountsInfo)
+        {
+            for (int i = 0; i < Common.Logic.CurrentLogic.Accounts.Count; i++)
+            {
+                if (Common.Logic.CurrentLogic.Accounts[i]["Type"] == accountsInfo["Type"])
+                {
+                    Common.Logic.CurrentLogic.Accounts.RemoveAt(i);
+                    Common.Logic.CurrentLogic.Accounts.Insert(i, accountsInfo);
+                    return;
+                }
+            }
+            Common.Logic.CurrentLogic.Accounts.Add(accountsInfo);
+        }
+        #endregion
+
+
+       
     }
 
-   
+
 }

--
Gitblit v1.8.0