From 4a446825261d475ac1e9b8402fb956c1d26b9ffe Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 17 十一月 2021 17:54:08 +0800
Subject: [PATCH] 2021-11-17-01

---
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs        |   10 
 HDL-ON_Android/Properties/AndroidManifest.xml                  |    4 
 HDL_ON/DAL/Server/NewAPI.cs                                    |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs         |   22 ++
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs |  208 ++++++++++++++--------------
 HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs               |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                |   32 ++++
 HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs  |   22 +-
 HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs          |   43 +++++-
 HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs    |   33 ++++
 10 files changed, 243 insertions(+), 139 deletions(-)

diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index e687343..81ae197 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -176,7 +176,7 @@
 		<meta-data android:name="OPPO_APPID" android:value="OP-30619979" />
 		<meta-data android:name="OPPO_APPSECRET" android:value="OP-11d511c42f654cafac99588322681003" />
 		<!-- 鏋佸厜鎺ㄩ�佺粨鏉� -->
-        <!-- 璁剧疆楂樺痉鍦板浘key -->
-        <meta-data android:name="com.amap.api.v2.apikey" android:value="9901dd06e30b229efdd4c5bf5e076224" />
+		<!-- 璁剧疆楂樺痉鍦板浘key -->
+		<meta-data android:name="com.amap.api.v2.apikey" android:value="9901dd06e30b229efdd4c5bf5e076224" />
 	</application>
 </manifest>
\ No newline at end of file
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index 180b762..d39f52d 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -563,6 +563,10 @@
         /// 鍚敤绂佺敤鑷姩鍖�
         /// </summary>
         public const string API_POST_Logic_Enable = "/home-wisdom/app/logic/enable";
+        /// <summary>
+        /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶�
+        /// </summary>
+        public const string API_POST_Logic_GeoFenceStateReport = "/home-wisdom/app/logic/geoFenceStateReport";
         #endregion
 
         #region -- 绗笁鏂硅澶囩浉鍏虫帴鍙__________________________
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
index 5ec11e6..1c15401 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -106,11 +106,11 @@
             //瀹ゅ鍙樺寲
             shiwaiView.btnClick.MouseUpEventHandler += (sen, e) =>
             {
-                if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0)
-                {
-                    new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured);
-                    return;
-                }
+                //if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0)
+                //{
+                //    new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured);
+                //    return;
+                //}
                 Weather weather = new Weather();
                 MainPage.BasePageView.AddChidren(weather);
                 weather.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs
index 2ea187d..5734dfa 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs
@@ -82,31 +82,35 @@
         {
             Input input = new Input();
             input.sid = LogicMethod.CurrLogicMethod.NewSid();
-            input.condition_type = "9";
+            input.condition_type = "6";
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", "air_quality");
+            LogicMethod.CurrLogicMethod.dictionary(dic, "key", "airquality");
             LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
             LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
             LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
             input.condition.Add(dic);
-            AddCondition(input);
+            AddCondition(input, "airquality" ,"=");
         }
         /// <summary>
         /// 娣诲姞鏉′欢
         /// </summary>
         /// <param name="input"></param>
-        private void AddCondition(Input input)
+        private void AddCondition(Input input, string keyValue, string comparator)
         {
             ///璁板綍绱㈠紩鍊�
             int index = -1;
             for (var i = 0; i < Logic.currlogic.input.Count; i++)
             {
                 var condition_type = Logic.currlogic.input[i].condition_type;
-                if (condition_type == "9")
+                if (condition_type == "6")
                 {
-                    ///鎵惧埌鏍囪绱㈠紩锛岄��鍑哄惊鐜綋
-                    index = i;
-                    break;
+                    var dicList = Logic.currlogic.input[i].condition;
+                    if (ExistKey(dicList, keyValue, comparator))
+                    {
+                        ///鎵惧埌鏍囪绱㈠紩锛岄��鍑哄惊鐜綋
+                        index = i;
+                        break;
+                    }
                 }
             }
             if (index != -1)
@@ -128,5 +132,28 @@
             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
 
         }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁瀛樺湪Key
+        /// </summary>
+        /// <param name="dicList"></param>
+        /// <param name="keyValue"></param>
+        /// <param name="comparator">姣旇緝鍏崇郴</param>
+        /// <returns></returns>
+        private bool ExistKey(List<Dictionary<string, string>> dicList, string keyValue, string comparator)
+        {
+            for (int i = 0; i < dicList.Count; i++)
+            {
+                var dic = dicList[i];
+                string key = dic["key"];
+                string comparatorValue = dic["comparator"];
+                if (key == keyValue && comparatorValue == comparator)
+                {
+                    //鍒ゆ柇鏄惁瀛樺湪
+                    return true;
+                }
+            }
+            return false;
+        }
     }
 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index cb26d92..f616e2c 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -147,9 +147,11 @@
                                 case SPK.CurtainRoller:
                                 case SPK.CurtainTrietex:
                                 //绌鸿皟
-                                case SPK.AcStandard:case SPK.HvacAC:
+                                case SPK.AcStandard:
+                                case SPK.HvacAC:
                                 //鍦扮儹
-                                case SPK.HvacFloorHeat:case SPK.FloorHeatStandard:
+                                case SPK.HvacFloorHeat:
+                                case SPK.FloorHeatStandard:
                                 //鏂伴
                                 case SPK.AirFreshStandard:
                                 case SPK.HvacAirFresh:
@@ -388,8 +390,8 @@
                                     break;
                                 case SPK.SensorTemperature:
                                     {
-                                       
-                                        string str =new InpOrOutLogicMethod { }.GetText(dicList, "temperature");
+
+                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature");
                                         inputView.btnState.Text = str;
                                     }
                                     break;
@@ -431,8 +433,9 @@
                             }
                         }
                         break;
-                    case "4":
+                    case "6":
                         {
+                            //inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
                             inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
                             string strtext = "";
                             string strvalue = "";
@@ -444,8 +447,9 @@
 
                                 switch (key)
                                 {
-                                    case "outdoor_temp":
+                                    case "temperature":
                                         {
+                                            //浜戠澶╂皵鏉′欢 鍩庡競娓╁害瑙﹀彂
                                             strvalue = value + "鈩�";
                                             if (comparator == ">")
                                             {
@@ -458,8 +462,9 @@
 
                                         }
                                         break;
-                                    case "outdoor_humity":
+                                    case "humidity":
                                         {
+                                            //浜戠澶╂皵鏉′欢 鍩庡競婀垮害瑙﹀彂
                                             strvalue = value + "%";
                                             if (comparator == ">")
                                             {
@@ -472,53 +477,74 @@
 
                                         }
                                         break;
-                                    case "pm2.5":
+                                    case "pm25":
                                         {
+                                            //浜戠澶╂皵鏉′欢 鍩庡競pm2.5瑙﹀彂
                                             strtext = Language.StringByID(StringId.PM25);
                                             strvalue = new PublicInterface { }.GetString("pm25", value);
                                         }
                                         break;
+                                    case "weather":
+                                        {
+                                            //浜戠澶╂皵鏉′欢 鍩庡競澶╂皵瑙﹀彂
+                                            strtext = Language.StringByID(StringId.tianqibianhua);
+                                            switch (value)
+                                            {
+                                                case "sunny":
+                                                    {
+                                                        strtext = Language.StringByID(StringId.clearday);
 
+                                                    }
+                                                    break;
+                                                case "cloudy":
+                                                    {
+
+                                                        strtext = Language.StringByID(StringId.cloudy);
+
+                                                    }
+                                                    break;
+                                                case "rainy":
+                                                    {
+                                                        strtext = Language.StringByID(StringId.rain);
+                                                    }
+                                                    break;
+
+                                            }
+                                        }
+                                        break;
+                                    case "airquality":
+                                        {
+                                            //浜戠澶╂皵鏉′欢 鍩庡競绌烘皵璐ㄩ噺
+                                            strtext = Language.StringByID(StringId.kongqizhiliang);
+                                            switch (value)
+                                            {
+                                                case "excellent":
+                                                    {
+                                                        strtext = Language.StringByID(StringId.kongqiyou);
+
+                                                    }
+                                                    break;
+                                                case "good":
+                                                    {
+
+                                                        strtext = Language.StringByID(StringId.kongqiliang);
+
+                                                    }
+                                                    break;
+                                                case "poor":
+                                                    {
+                                                        strtext = Language.StringByID(StringId.kongqicha);
+                                                    }
+                                                    break;
+                                            }
+                                        }
+                                        break;
                                 }
 
 
                             }
                             inputView.btnText.Text = strtext;
                             inputView.btnState.Text = strvalue;
-                        }
-                        break;
-                    case "6":
-                        {
-                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
-                            foreach (var dic in dicList)
-                            {
-                                string strtext = "";
-                                string value = dic["value"];
-                                switch (value)
-                                {
-                                    case "sunny":
-                                        {
-                                            strtext = Language.StringByID(StringId.clearday);
-
-                                        }
-                                        break;
-                                    case "cloudy":
-                                        {
-
-                                            strtext = Language.StringByID(StringId.cloudy);
-
-                                        }
-                                        break;
-                                    case "rainy":
-                                        {
-                                            strtext = Language.StringByID(StringId.rain);
-                                        }
-                                        break;
-
-                                }
-                                inputView.btnText.TextID = StringId.tianqibianhua;
-                                inputView.btnState.Text = strtext;
-                            }
                         }
                         break;
                     case "8":
@@ -542,40 +568,6 @@
                                         break;
                                 }
                                 inputView.btnText.TextID = StringId.likiadaoda;
-                                inputView.btnState.Text = strtext;
-                            }
-                        }
-                        break;
-                    case "9":
-                        {
-                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
-                            foreach (var dic in dicList)
-                            {
-                                string strtext = "";
-                                string value = dic["value"];
-                                switch (value)
-                                {
-                                    case "excellent":
-                                        {
-                                            strtext = Language.StringByID(StringId.kongqiyou);
-
-                                        }
-                                        break;
-                                    case "good":
-                                        {
-
-                                            strtext = Language.StringByID(StringId.kongqiliang);
-
-                                        }
-                                        break;
-                                    case "poor":
-                                        {
-                                            strtext = Language.StringByID(StringId.kongqicha);
-                                        }
-                                        break;
-
-                                }
-                                inputView.btnText.TextID = StringId.kongqizhiliang;
                                 inputView.btnState.Text = strtext;
                             }
                         }
@@ -762,10 +754,10 @@
                                 else if (device.spk == SPK.SensorTemperature)
                                 {
 
-                                   new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae);
+                                    new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae);
 
                                 }
-                                else if ( device.spk == SPK.SensorHumidity)
+                                else if (device.spk == SPK.SensorHumidity)
                                 {
 
                                     new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae);
@@ -804,7 +796,7 @@
                                 }
                             }
                             break;
-                        case "4":
+                        case "6":
                             {
                                 ///褰撳墠鐨勭储寮曞�兼暟鎹璞�
                                 Input inputedit = Logic.currlogic.input[indexVulae];
@@ -819,7 +811,7 @@
                                     stateValue = dic["value"];
                                     switch (key)
                                     {
-                                        case "outdoor_temp":
+                                        case "temperature":
                                             {
                                                 if (comparator == ">")
                                                 {
@@ -833,7 +825,7 @@
 
                                             }
                                             break;
-                                        case "outdoor_humity":
+                                        case "humidity":
                                             {
 
                                                 if (comparator == ">")
@@ -847,49 +839,57 @@
 
                                             }
                                             break;
-                                        case "pm2.5":
+                                        case "pm25":
                                             {
                                                 intValue = StringId.PM25;
+                                            }
+                                            break;
+                                        case "weather":
+                                            {
+                                                intValue = StringId.tianqibianhua;
+                                            }
+                                            break;
+                                        case "airquality":
+                                            {
+                                                intValue = StringId.kongqizhiliang;
                                             }
                                             break;
 
                                     }
                                 }
                                 OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment();
-                                if (intValue == StringId.PM25)
+                                if (intValue == StringId.tianqibianhua)
                                 {
+                                    //鍩庡競澶╂皵锛堟櫞澶╋紝涓嬮洦锛�
+                                    WeatherCondition weatherCondition = new WeatherCondition();
+                                    MainPage.BasePageView.AddChidren(weatherCondition);
+                                    weatherCondition.Show();
+                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                                }
+                                else if (intValue == StringId.PM25)
+                                {
+                                    //鍩庡競澶╂皵锛坧m2.5锛�
                                     outdoorEnvironment.PmAction(thisView, stateValue);
+                                }
+                                else if (intValue == StringId.kongqizhiliang)
+                                {
+                                    //鍩庡競澶╂皵锛堢┖姘旇川閲忥級
+                                    AirQuality airQuality = new AirQuality();
+                                    MainPage.BasePageView.AddChidren(airQuality);
+                                    airQuality.Show();
+                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                 }
                                 else
                                 {
+                                    //鍩庡競澶╂皵锛堟俯婀垮害锛�
                                     outdoorEnvironment.InputBoxAction(intValue, stateValue);
                                 }
-
                             }
                             break;
-                        case "6":
-                            {
-
-                                WeatherCondition weatherCondition = new WeatherCondition();
-                                MainPage.BasePageView.AddChidren(weatherCondition);
-                                weatherCondition.Show();
-                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                            }
-                            break;
-
                         case "8":
                             {
                                 AddInputType addInputType = new AddInputType();
-                                addInputType.LocationView(thisView,true);
-                            }
-                            break;
-                        case "9":
-                            {
-
-                                AirQuality airQuality = new AirQuality();
-                                MainPage.BasePageView.AddChidren(airQuality);
-                                airQuality.Show();
-                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                                addInputType.LocationView(thisView, true);
                             }
                             break;
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
index d865bad..bbbea86 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
@@ -88,12 +88,12 @@
         /// 鏃堕棿鐐规潯浠�=1;
         /// 鏃堕棿娈垫潯浠�=2;
         /// 璁惧鐘舵�佸彉鍖栨潯浠�=3;
-        /// 鐜淇℃伅鏉′欢=4;
+        /// 鐜淇℃伅鏉′欢=4(搴熷純);
         /// 瀹夐槻鏉′欢=5;
         /// 浜戠澶╂皵鏉′欢=6;
         /// 鏌愪釜閫昏緫/鍦烘櫙鐨勮緭鍑烘潯浠�=7;
         /// 鍦扮悊鍥存爮=8;
-        /// 绌烘皵璐ㄩ噺=9;
+        /// 绌烘皵璐ㄩ噺=9(搴熷純);
         /// 鍦烘櫙=10;
         /// </summary>
         public string condition_type = "";
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index b896462..7b289d7 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -842,11 +842,12 @@
         /// <summary>
         /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶ヤ簯绔�
         /// </summary>
-        /// <param name="out_lng">APP缁忓害</param>
-        /// <param name="out_lat">APP绾害</param>
+        /// <param name="out_lng">APP GPS缁忓害</param>
+        /// <param name="out_lat">APP GPS绾害</param>
         private void AutomatedGeofenceStatusReporting(double out_lng, double out_lat)
         {
             List<LogicData> logicDataList = new List<LogicData>();
+            logicDataList.Clear();
             //鑾峰彇閫昏緫ID鍒楄〃
             var idStr = Send.GetLogicIdList();
             if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "")
@@ -863,19 +864,30 @@
                     ///鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忎笉澶勭悊
                     if (string.IsNullOrEmpty(logicDate.geo_fence.latitude) || string.IsNullOrEmpty(logicDate.geo_fence.longitude))
                     {
-                        //缁忕含搴︿负绌猴紝涓嶅鐞�
+                        //缁忕含搴︿负绌�,璁や负鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忥紝涓嶅鐞�;
                         continue;
                     }
                     //鑷姩鍖栫含搴�
                     double lat = Convert.ToDouble(logicDate.geo_fence.latitude);
                     //鑷姩鍖栫粡搴�
                     double lon = Convert.ToDouble(logicDate.geo_fence.longitude);
-                    //鑷姩鍖栧崐寰�<鍗曚綅绫�>
+                    //鑷姩鍖栭厤缃緭鍏ユ潯浠�<鍦扮悊鍥存爮鍗婂緞><鍗曚綅锛屽叕閲屻�佸崈绫�.绫�>
                     int radius = int.Parse(logicDate.geo_fence.radius);
                     //璁$畻2涓粡绾害涔嬮棿鐨勮窛绂�
                     int r =Infrastructure.Service.Helper.CalculatedDistance.Distance(out_lat, out_lng, lat, lon);
+                    //瀹氫箟涓�涓眬閮ㄥ彉閲�
+                    string direction = string.Empty;
+                    //涓ょ偣璺濈灏忎簬閰嶇疆璺濈<鏃㈣嚜鍔ㄥ寲閰嶇疆杈撳叆鏉′欢鍦扮悊鍥存爮鍗婂緞>,璇存槑杩涘叆鍖哄煙
+                    if (r<radius) {
+                        //鍒拌揪鏌愬湴
+                        direction = "arrive";
+                    } else {
+                        //绂诲紑
+                        direction = "leave";
+                    }
+                     bool f= Send.GeoFenceStateReport(logicDate.userLogicId,logicDate.sid, direction);
                     //if () { }
-
+                    //Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
                 }
 
             }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs
index 661dbcd..0e7d6c0 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs
@@ -129,31 +129,31 @@
                 {
                     case StringId.wendugaoyu:
                         {
-                            keyValue = "outdoor_temp";
+                            keyValue = "temperature";
                             comparator = ">";
                         }
                         break;
                     case StringId.wendudiyu:
                         {
-                            keyValue = "outdoor_temp";
+                            keyValue = "temperature";
                             comparator = "<";
                         }
                         break;
                     case StringId.shidugaoyu:
                         {
-                            keyValue = "outdoor_humity";
+                            keyValue = "humidity";
                             comparator = ">";
                         }
                         break;
                     case StringId.shidudiyu:
                         {
-                            keyValue = "outdoor_humity";
+                            keyValue = "humidity";
                             comparator = "<";
                         }
                         break;
                 }
 
-                AddDic(keyValue, comparator, value);
+                AddDic(keyValue, comparator, value,"float");
             });
         }
         /// <summary>
@@ -169,24 +169,24 @@
                , (text) =>
                {
                    var value= pmView.GetValue("pm25", text);
-                   AddDic("pm2.5", "in", value);
+                   AddDic("pm25", "in", value, "integer");
                });
         }
         /// <summary>
         /// 灏佽鏁版嵁
         /// </summary>
-        /// <param name="keyValue">绫诲瀷鍊�(pm2.5锛沷utdoor_temp锛沷utdoor_humity)</param>
+        /// <param name="keyValue">绫诲瀷鍊�(pm25锛泃emperature锛沨umidity)</param>
         /// <param name="comparator">姣旇緝鍏崇郴</param>
         /// <param name="value">鍊�</param>
-        private void AddDic(string keyValue, string comparator, string value)
+        public void AddDic(string keyValue, string comparator,string value,string data_type)
         {
             Input input = new Input();
             input.sid = LogicMethod.CurrLogicMethod.NewSid();
-            input.condition_type = "4";
+            input.condition_type = "6";
             Dictionary<string, string> dic = new Dictionary<string, string>();
             LogicMethod.CurrLogicMethod.dictionary(dic, "key", keyValue);
             LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", comparator);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "float");
+            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", data_type);
             LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
             input.condition.Add(dic);
             AddCondition(input, keyValue, comparator);
@@ -204,7 +204,7 @@
             for (var i = 0; i < Logic.currlogic.input.Count; i++)
             {
                 var condition_type = Logic.currlogic.input[i].condition_type;
-                if (condition_type == "4")
+                if (condition_type == "6")
                 {
                     var dicList = Logic.currlogic.input[i].condition;
                     if (ExistKey(dicList, keyValue, comparator))
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index 35aa688..3097608 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -350,6 +350,38 @@
             }
             return responsePackNew;
         }
+
+
+        /// <summary> 
+        /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶�
+        /// </summary>
+        /// <param name="userLogicId">鑷姩鍖栦簯绔痠d<澶囨敞锛歭ogicSid涓巙serLogicId 涓嶈兘鍚屾椂涓虹┖></param>
+        /// <param name="logicSid">鑷姩鍖杝id<澶囨敞锛歭ogicSid涓巙serLogicId 涓嶈兘鍚屾椂涓虹┖></param>
+        /// <param name="direction">arrive:鍒拌揪(杩涘叆) leave锛氱寮�</param>
+        /// <returns></returns>
+        public static bool GeoFenceStateReport(string userLogicId, string logicSid, string direction)
+        {
+            var jObject = new JObject();
+            jObject.Add("homeId", LogicMethod.CurrLogicMethod.HomeId);
+            jObject.Add("userLogicId", userLogicId);
+            jObject.Add("sid", logicSid);
+            jObject.Add("direction", direction);
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_GeoFenceStateReport);
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                GeoFenceStateReport(userLogicId, logicSid, direction);
+            }
+            if (responsePackNew.Code == "0")
+            {
+                //鎴愬姛
+                return true;
+            }
+            //澶辫触
+            return false;
+        }
+
         /// <summary>
         ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� 
         /// </summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
index 7bbf196..1c7ba43 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
@@ -86,13 +86,13 @@
             LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
             LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
             input.condition.Add(dic);
-            AddCondition(input);
+            AddCondition(input, "weather",  "=");
         }
         /// <summary>
         /// 娣诲姞鏉′欢
         /// </summary>
         /// <param name="input"></param>
-        private void AddCondition(Input input)
+        private void AddCondition(Input input, string keyValue, string comparator)
         {
             ///璁板綍绱㈠紩鍊�
             int index = -1;
@@ -101,6 +101,13 @@
                 var condition_type = Logic.currlogic.input[i].condition_type;
                 if (condition_type == "6")
                 {
+                    var dicList = Logic.currlogic.input[i].condition;
+                    if (ExistKey(dicList, keyValue, comparator))
+                    {
+                        ///鎵惧埌鏍囪绱㈠紩锛岄��鍑哄惊鐜綋
+                        index = i;
+                        break;
+                    }
                     ///鎵惧埌鏍囪绱㈠紩锛岄��鍑哄惊鐜綋
                     index = i;
                     break;
@@ -125,5 +132,27 @@
             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
 
         }
+        /// <summary>
+        /// 鍒ゆ柇鏄惁瀛樺湪Key
+        /// </summary>
+        /// <param name="dicList"></param>
+        /// <param name="keyValue"></param>
+        /// <param name="comparator">姣旇緝鍏崇郴</param>
+        /// <returns></returns>
+        private bool ExistKey(List<Dictionary<string, string>> dicList, string keyValue, string comparator)
+        {
+            for (int i = 0; i < dicList.Count; i++)
+            {
+                var dic = dicList[i];
+                string key = dic["key"];
+                string comparatorValue = dic["comparator"];
+                if (key == keyValue && comparatorValue == comparator)
+                {
+                    //鍒ゆ柇鏄惁瀛樺湪
+                    return true;
+                }
+            }
+            return false;
+        }
     }
 }

--
Gitblit v1.8.0