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