From a9d1161b1df96e7ddad566335989a1444e433ef5 Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期二, 28 三月 2023 11:54:45 +0800 Subject: [PATCH] 2023年03月28日11:52:02 --- HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 423 insertions(+), 32 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs index 1c9b2bc..1c62cfb 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs @@ -24,10 +24,38 @@ /// 瀹氫箟涓�涓彉閲忥紝璁板綍閫変腑鐘舵�� /// </summary> private string selectedState = "unknown"; + /// <summary> + /// 鏄笉鏄啀娆$紪杈� + /// </summary> + private bool mEdit; + /// <summary> + /// 杈撳叆鏉′欢鍒楄〃绱㈠紩鍊� + /// </summary> + private int mIndex; + /// <summary> + /// 鍙瀵硅涓撶敤 + /// </summary> + private string identifier; + + private static ConditionDeviceFunList m_Current = null; + + public static ConditionDeviceFunList Current + { + get + { + if (m_Current == null) + { + m_Current = new ConditionDeviceFunList(); + } + return m_Current; + } + } public void Show(Entity.Function device, int index, bool edit) { this.function = device; + this.mEdit = edit; + this.mIndex = index; #region 鐣岄潰甯冨眬 this.BackgroundColor = CSS.CSS_Color.viewMiddle; LogicView.TopView topView = new LogicView.TopView(); @@ -61,7 +89,6 @@ //绌鸿皟 case SPK.AcStandard: case SPK.HvacAC: - case SPK.HvacCac://姣涚粏绌鸿皟 //鍦扮儹 case SPK.FloorHeatStandard: case SPK.HvacFloorHeat: @@ -190,6 +217,40 @@ view1.frameLayout.Y = view.frameLayout.Bottom; view1.btnText.TextID = StringId.fangchaigongneng; fLayout.AddChidren(view1.FLayoutView()); + + + int intValue = 0; + if (edit) + { + Input inputs = Logic.currlogic.input[index]; + var dicList = inputs.condition; + foreach (var dic in dicList) + { + if (dic["key"] == "people_status") + { + //鏈変汉/鏃犱汉 + intValue = 1; + } + else + { + //闃叉媶鍔熻兘 + intValue = 2; + } + break; + + } + } + if (intValue == 1) + { + //鏈変汉/鏃犱汉 + view1.frameLayout.Visible = false; + + } + else if (intValue == 2) + { + //闃叉媶鍔熻兘 + view1.frameLayout.Y = Application.GetRealHeight(0); + } view1.btnClick.MouseUpEventHandler += (sender, e) => { DeviceView(device, view1.btnState, StringId.zaixian, StringId.buzaixian); @@ -201,8 +262,70 @@ } } break; - //姣背娉紶鎰熷櫒 + //姣背娉紶鎰熷櫒(鑷爺鍖楅偖) case SPK.SenesorMegahealth: + case SPK.SensorMmvPose: + { + + LogicView.FunTypeView view1 = new LogicView.FunTypeView(); + view1.btnText.TextID = StringId.diedaobaojing; + view1.btnState.Name = Language.StringByID(StringId.diedaobaojing); + fLayout.AddChidren(view1.FLayoutView()); + view1.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1); + }; + + LogicView.FunTypeView view2 = new LogicView.FunTypeView(); + view2.frameLayout.Y = view1.frameLayout.Bottom; + view2.btnText.TextID = StringId.yourenbaojing; + view2.btnState.Name = Language.StringByID(StringId.yourenbaojing); + fLayout.AddChidren(view2.FLayoutView()); + int intValue = 0; + if (edit) + { + Input inputs = Logic.currlogic.input[index]; + var dicList = inputs.condition; + foreach (var dic in dicList) + { + if (dic["key"] == "target_status") + { + //璺屽�掓姤璀� + intValue = 1; + } + else + { + //鏈変汉鎶ヨ + intValue = 2; + } + break; + + } + } + if (intValue == 1) + { + //璺屽�掓姤璀� + view2.frameLayout.Visible = false; + + } + else if (intValue == 2) + { + //鏈変汉鎶ヨ + view2.frameLayout.Y = Application.GetRealHeight(0); + } + + view2.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view2.btnState, StringId.youren, StringId.wuren, 2); + }; + if (edit) + { + GetEditState(device, index, view1.btnState, view2.btnState, null, null); + } + + } + break; + //姣背娉紶鎰熷櫒(鍏嗚涓撶敤浜戜簯瀵规帴) case SPK.SenesorMegahealth2: { LogicView.FunTypeView view = new LogicView.FunTypeView(); @@ -219,7 +342,7 @@ } break; //鐜妫�娴嬩紶鎰熷櫒 - case SPK.SensorEnvironment: + case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin: case SPK.SensorEnvironment2: case SPK.SensorEnvironment3: { @@ -251,7 +374,7 @@ { fLayout.AddChidren(tvocView.FLayoutView()); } - + #endregion #region 鐐瑰嚮浜嬩欢 ///娓╁害鐐瑰嚮浜嬩欢 @@ -259,7 +382,7 @@ { new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) => { - InputBoxAction(device,intText, index, edit); + InputBoxAction(device, intText, index, edit); }); }; ///婀垮害鐐瑰嚮浜嬩欢 @@ -267,30 +390,30 @@ { new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) => { - InputBoxAction(device,intText, index, edit); + InputBoxAction(device, intText, index, edit); }); }; ///pm2.5鐐瑰嚮浜嬩欢 pm25View.btnClick.MouseUpEventHandler += (sender, e) => { - PmCo2TvocAction(this,device, "pm25",StringId.pm25, index,edit); + PmCo2TvocAction(this, device, "pm25", StringId.pm25, index, edit); }; ///co2鐐瑰嚮浜嬩欢 co2View.btnClick.MouseUpEventHandler += (sender, e) => { - PmCo2TvocAction(this,device, "co2", StringId.co2, index, edit); + PmCo2TvocAction(this, device, "co2", StringId.co2, index, edit); }; ///tvoc鐐瑰嚮浜嬩欢 tvocView.btnClick.MouseUpEventHandler += (sender, e) => { - PmCo2TvocAction(this,device, "tvoc", StringId.tvoc, index, edit); + PmCo2TvocAction(this, device, "tvoc", StringId.tvoc, index, edit); }; #endregion } break; - //娓╁害浼犳劅鍣� + //娓╁害浼犳劅鍣� case SPK.SensorTemperature: { ///娓╁害 @@ -343,6 +466,21 @@ }; } break; + //pm10 + case SPK.SensorPm10: + { + ///pm210 + LogicView.FunTypeView pm10View = new LogicView.FunTypeView(); + pm10View.btnText.TextID = StringId.pm10; + fLayout.AddChidren(pm10View.FLayoutView()); + + ///pm10鐐瑰嚮浜嬩欢 + pm10View.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this, device, "pm10", StringId.pm10, index, edit); + }; + } + break; //pm2.5 case SPK.SensorPm25: { @@ -361,6 +499,7 @@ //tvoc case SPK.SensorTVOC: { + ///tvoc LogicView.FunTypeView tvocView = new LogicView.FunTypeView(); tvocView.btnText.TextID = StringId.tvoc; @@ -389,6 +528,115 @@ }; } break; + //闂ㄩ攣 + case SPK.DoorLock: + { + + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.shifoukaisuoshi; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.shi, StringId.offLogic, 1); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //鍙瀵硅 + case SPK.doorgate: + { + + LogicView.FunTypeView view1 = new LogicView.FunTypeView(); + view1.btnText.TextID = StringId.shipintonghuahujiao; + view1.btnText.Name = Language.StringByID(StringId.shipintonghuahujiao); + fLayout.AddChidren(view1.FLayoutView()); + view1.btnClick.MouseUpEventHandler += (sender, e) => + { + this.identifier = "door_call_cloud_event"; + this.DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1); + }; + + LogicView.FunTypeView view2 = new LogicView.FunTypeView(); + view2.frameLayout.Y = view1.frameLayout.Bottom; + view2.btnText.TextID = StringId.renliankaimen; + fLayout.AddChidren(view2.FLayoutView()); + view2.btnClick.MouseUpEventHandler += (sender, e) => + { + this.identifier = "door_pedestrian_records"; + this.FaceAction(this, device, view2.btnState); + }; + + int intValue = 0; + if (edit) + { + Input inputs = Logic.currlogic.input[index]; + if (inputs.identifier == "door_call_cloud_event") + { + intValue = 1; + } + else + { + intValue = 2; + } + } + if (intValue == 1) + { + + view2.frameLayout.Visible = false; + + } + else if (intValue == 2) + { + + view2.frameLayout.Y = Application.GetRealHeight(0); + } + if (edit) + { + this.GetEditState(device, index, view1.btnState, view2.btnState, null, null); + } + } + break; + //澶у崕鎽勫儚澶� + case SPK.IpCam_Imou: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.quyuruqingaojing; + view.btnText.Name = Language.StringByID(StringId.shipintonghuahujiao); + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + this.identifier = "ipcam_region_alram_event"; + this.DeviceView(device, view.btnState, StringId.shi, StringId.offLogic, 1); + }; + + if (edit) + { + this.GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //钀ょ煶瑙嗛闂ㄩ攣 + case SPK.VideoDoorLock: + { + LogicView.FunTypeView view1 = new LogicView.FunTypeView(); + view1.btnText.TextID=StringId.yonghurenyuan; + view1.btnText.Name = Language.StringByID(StringId.shipinmensuo); + fLayout.AddChidren(view1.FLayoutView()); + view1.btnClick.MouseUpEventHandler += (sender, e) => + { + this.identifier = "open_door";//寮�閿佷簨浠� + this.VideoDoorLockAction(this, device, view1.btnState); + }; + if (edit) + { + this.GetEditState(device, index, view1.btnState,null, null, null); + } + } + break; + } #region 淇濆瓨 ///淇濆瓨View @@ -398,7 +646,7 @@ this.AddChidren(saveView.FLayoutView()); saveView.btnClick.MouseUpEventHandler += (sen, e) => { - Save(device,index, edit); + this.SaveInput(device,index, edit); }; #endregion @@ -409,7 +657,7 @@ /// </summary> /// <param name="index">绱㈠紩鍊�</param> /// <param name="edit"></param> - private void Save(Entity.Function device,int index, bool edit) + private void SaveInput(Entity.Function device,int index, bool edit) { if (selectedState != "unknown") @@ -417,7 +665,36 @@ Input inputDevice = new Input(); inputDevice.condition_type = "3"; inputDevice.sid = device.sid; - inputDevice.condition = dicSateteList; + inputDevice.condition.AddRange(dicSateteList); + if (device.spk == SPK.doorgate) + { + //鍙瀵硅 + inputDevice.condition_type = "9"; + inputDevice.identifier = this.identifier; + if (this.identifier == "door_call_cloud_event") + { + inputDevice.condition = new List<Dictionary<string, string>>(); + } + } + else if (device.spk == SPK.IpCam_Imou) + { + //澶у崕鎽勫儚澶� + inputDevice.condition_type = "9"; + inputDevice.identifier = this.identifier; + if (this.identifier == "ipcam_region_alram_event") + { + //condition榛樿[] + inputDevice.condition = new List<Dictionary<string, string>>(); + } + } + else if (device.spk == SPK.VideoDoorLock) + { + ////钀ょ煶瑙嗛闂ㄩ攣 + inputDevice.condition_type = "9"; + inputDevice.identifier = this.identifier; + } + + if (edit) { //绉婚櫎鏃ф暟鎹� @@ -441,7 +718,7 @@ this.RemoveFromParent(); return; } - LogicMethod.CurrLogicMethod.RemoveAllView(); + LogicMethod.Current.RemoveAllView(); if (MainView.IsGatewayType) { //A缃戝叧 var addLogic = new AddLogic(); @@ -466,12 +743,13 @@ /// <param name="button">閫変腑鐘舵�佹樉绀烘枃鏈珺tn鎺т欢</param> /// <param name="btnText1">灞炴�х姸鎬佸�兼枃鏈�1</param> /// <param name="btnText2">灞炴�х姸鎬佸�兼枃鏈�2</param> - private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2) + /// <param name="viewCount">view鏁伴噺</param> + private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2,int viewCount=2) { FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence }; this.AddChidren(frame); LogicView.SwitchView switchView = new LogicView.SwitchView(); - switchView.FLayoutView(frame, btnText1, btnText2, button.Text, (intValue) => + switchView.FLayoutView(frame, btnText1, btnText2, button.Text, viewCount,(intValue) => { //璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�; string keyVlaue = "on_off"; @@ -514,6 +792,23 @@ } break; case SPK.SenesorMegahealth: + { + if (button != null) + { + + if (button.Name == Language.StringByID(StringId.yourenbaojing)) + { + keyVlaue = "people_status"; + + } + else + { + keyVlaue = "target_status"; + } + } + + } + break; case SPK.SenesorMegahealth2: { keyVlaue = "action_state"; @@ -521,6 +816,11 @@ { keyVlaue = "megahealth_state"; } + } + break; + case SPK.DoorLock: + { + keyVlaue = "door_status"; } break; @@ -556,13 +856,33 @@ break; case StringId.wuren: { - if (device.spk == SPK.SenesorMegahealth || device.spk == SPK.SenesorMegahealth2) + if (device.spk == SPK.SenesorMegahealth2) { value = "uninhabited"; } else { value = "false"; + } + } + break; + case StringId.shi: + { + value = "open"; + if (button != null) + { + + if (button.Name == Language.StringByID(StringId.yourenbaojing)) + { + //鐘舵��(鏈変汉) + value = "true"; + + } + else if(button.Name == Language.StringByID(StringId.diedaobaojing)) + { + //璺屽�� + value = "4"; + } } } break; @@ -590,11 +910,29 @@ { value = "fall"; }; break; + + } //鏄剧ず鏂囨湰 button.TextID = intValue; selectedState = device.spk + "_" + value; AddDictionary(keyVlaue, value, "string"); + if (button != null) + { + + + if (button.Name == Language.StringByID(StringId.yourenbaojing) + || (button.Name == Language.StringByID(StringId.diedaobaojing))) + { + //鍙湁姣背娉紶鎰熷櫒(鑷爺) + SaveInput(device, mIndex, mEdit); + } + else if (button.Name == Language.StringByID(StringId.shipintonghuahujiao)) { + //鍙湁姣背娉紶鎰熷櫒(鑷爺) + SaveInput(device, mIndex, mEdit); + } + } + }); @@ -614,7 +952,7 @@ if (inputs.condition.Count != 0) { //鏈夋暟鎹噸鏂拌祴鍊� - dicSateteList = inputs.condition; + dicSateteList.AddRange(inputs.condition); } } new LogicView.TipPopView { }.InputBox(textInt, stateValue, (value) => @@ -653,7 +991,7 @@ } selectedState = device.spk + "_" + value; AddDictionary(keyValue, value, data_type, comparator); - Save(device,index, edit); + SaveInput(device,index, edit); }); } /// PM2.5,Co2,Tvoc璁剧疆鍊� @@ -666,7 +1004,7 @@ /// <param name="stateValue">缂栬緫涔嬪墠鐨勭姸鎬佸��,榛樿涓�""</param> public void PmCo2TvocAction(FrameLayout frame, Entity.Function device, string key, int title, int index, bool edit, string stateValue = "") { - if (edit) + if (edit) { /// this.function = device; @@ -676,16 +1014,23 @@ if (inputs.condition.Count != 0) { //鏈夋暟鎹噸鏂拌祴鍊� - dicSateteList = inputs.condition; + dicSateteList.AddRange(inputs.condition); } } PublicInterface view = new PublicInterface(); - var listStr = view.GetViewList(key); - view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetString(key, stateValue) + + var listStr = view.GetSensorLevelList(device);//2022骞�05鏈�25鏃�10:01:33 浜у搧缁忕悊鍚涚厡瑕佹眰鏀规垚鍔ㄦ�� + //if (listStr.Count == 0) + //{ + // //鍚鏄负浜嗗吋鐢ㄥ緢鑰佸緢鑰佺殑椤圭洰 + // listStr = view.GetViewList(key); + //} + view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetSensorLevelText(device, stateValue,true) , (text) => { - var value = view.GetValue(key, text); + //var value = view.GetValue(key, text); + var values = view.GetSensorLevelText(device,text,false); selectedState = device.spk + "_" + key; switch (device.spk) { @@ -695,6 +1040,7 @@ case SPK.SensorPm25: case SPK.SensorTVOC: case SPK.SensorHcho: + case SPK.SensorPm10: { if (!Is_SpkAttribute(key)) { @@ -703,10 +1049,55 @@ } break; } - AddDictionary(key, value, "integer", "in"); - Save(device, index, edit); + AddDictionary(key, values, "integer", "in"); + SaveInput(device, index, edit); }); } + /// <summary> + /// 鍙瀵硅涓撶敤 + /// </summary> + /// <param name="frame">褰撳墠鐣岄潰</param> + /// <param name="device">褰撳墠璁惧</param> + /// <param name="btnState">鏃х姸鎬�</param> + public void FaceAction(FrameLayout frame, Entity.Function device,Button btnState) { + selectedState = device.spk + "_"; + Loading loading = new Loading(); + frame.AddChidren(loading); + loading.Start(); + System.Threading.Tasks.Task.Run(() => + { + try + { + var faceIDList = Send.Current.GetListHomeFace(device.deviceId,true); + List<string> faceNameList = new List<string>(); + for (int i = 0; i < faceIDList.Count; i++) + { + var face = faceIDList[i]; + faceNameList.Add(face.userName); + } + Application.RunOnMainThread(() => + { + loading.Hide(); + PublicInterface publicInterface = new PublicInterface(); + publicInterface.FrameOrVv(this, faceNameList, new List<string> { btnState.Text }, device.name, (index) => + { + var face = faceIDList[index]; + //鐣岄潰鏄剧ず閫変腑鍊� + btnState.Text = face.userName; + //鏁版嵁灏佽 + AddDictionary("open_type", "1", "integer"); + AddDictionary("user_id", face.userId, "string"); + + }, false); + + }); + } + catch { } + + }); + + } + /// <summary> /// 鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬� /// </summary> @@ -725,9 +1116,9 @@ if (dicList.Count != 0) { //鏈夋暟鎹噸鏂拌祴鍊� - dicSateteList = dicList; + dicSateteList.AddRange(dicList); } - InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4); + InpOrOutLogicMethod.Current.EditDeviceState(device, dicList, button1, button2, button3, button4); } /// <summary> /// 娣诲姞閫変腑鏁版嵁 @@ -740,10 +1131,10 @@ { //鏁版嵁灏佽 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", data_type); - LogicMethod.CurrLogicMethod.dictionary(dic, "value", selectedValue); + LogicMethod.Current.dictionary(dic, "key", KeyValue); + LogicMethod.Current.dictionary(dic, "comparator", comparator); + LogicMethod.Current.dictionary(dic, "data_type", data_type); + LogicMethod.Current.dictionary(dic, "value", selectedValue); AddDictionaryList(dic); } /// <summary> -- Gitblit v1.8.0