From 203c3a3ffde6259413d9743f6a723b95b1e7989c Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 06 七月 2023 22:43:05 +0800 Subject: [PATCH] 门锁功能 --- HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs | 399 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 341 insertions(+), 58 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs index b8b6222..bd46f2d 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs @@ -2,7 +2,7 @@ using Shared; using System.Collections.Generic; using HDL_ON.Entity; - +using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock; namespace HDL_ON.UI.UI2.Intelligence.Automation { @@ -36,6 +36,12 @@ /// 鍙瀵硅涓撶敤 /// </summary> private string identifier; + /// <summary> + /// 浜轰綋浼犳劅鍣ㄦ寔缁椂闂翠笓鐢� + /// </summary> + private string hold_time=string.Empty; + + private static ConditionDeviceFunList m_Current = null; @@ -89,7 +95,7 @@ //绌鸿皟 case SPK.AcStandard: case SPK.HvacAC: - case SPK.HvacCac://姣涚粏绌鸿皟 + case SPK.AcIr: //鍦扮儹 case SPK.FloorHeatStandard: case SPK.HvacFloorHeat: @@ -107,22 +113,6 @@ view.btnClick.MouseUpEventHandler += (sender, e) => { DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic); - }; - if (edit) - { - GetEditState(device, index, view.btnState, null, null, null); - } - } - break; - //绱ф�ュ懠鍙� - case SPK.SensorHelp: - { - LogicView.FunTypeView view = new LogicView.FunTypeView(); - view.btnText.TextID = StringId.qiujiuandzhengchang; - fLayout.AddChidren(view.FLayoutView()); - view.btnClick.MouseUpEventHandler += (sender, e) => - { - DeviceView(device, view.btnState, StringId.qiujiu, StringId.zhengchang); }; if (edit) { @@ -200,6 +190,59 @@ if (edit) { GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //浜轰綋瀛樺湪浼犳劅鍣� + case SPK.SensorPirHold: + { + + + LogicView.FunTypeView view1 = new LogicView.FunTypeView(); + view1.btnText.TextID = StringId.rentijiance; + view1.btnText.Name = Language.StringByID(StringId.rentijiance); + fLayout.AddChidren(view1.FLayoutView()); + view1.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view1.btnState, StringId.youren, StringId.wuren); + + }; + + LogicView.FunTypeView view2 = new LogicView.FunTypeView(); + view2.frameLayout.Y = view1.frameLayout.Bottom; + view2.btnText.TextID = StringId.chixushijian; + fLayout.AddChidren(view2.FLayoutView()); + view2.btnClick.MouseUpEventHandler += (sender, e) => + { + //涓荤晫闈㈡帶浠� + FrameLayout fLayout2 = new FrameLayout + { + BackgroundColor = CSS.CSS_Color.viewTrans60lucence, + }; + this.AddChidren(fLayout2); + TimeView(fLayout2, device, view2.btnState); + + }; + + + if (edit) + { + try + { + Input inputs = Logic.currlogic.input[index]; + if (!string.IsNullOrEmpty(inputs.hold_time) && int.Parse(inputs.hold_time) > 0) + { + int time = int.Parse(inputs.hold_time); + int h = time / (60 * 60); + int m = time % (60 * 60) / 60; + int s = (time % (60 * 60) % 60); + view2.btnState.Text = inputs.hold_time + "s"; + view2.btnState.Name = h + ":" + m + ":" + s; + this.hold_time = inputs.hold_time; + } + } + catch { } + GetEditState(device, index, view1.btnState, view2.btnState, null, null); } } break; @@ -281,6 +324,7 @@ break; //姣背娉紶鎰熷櫒(鑷爺鍖楅偖) case SPK.SenesorMegahealth: + case SPK.SensorMmvPose: { LogicView.FunTypeView view1 = new LogicView.FunTypeView(); @@ -358,7 +402,7 @@ } break; //鐜妫�娴嬩紶鎰熷櫒 - case SPK.SensorEnvironment: + case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin: case SPK.SensorEnvironment2: case SPK.SensorEnvironment3: { @@ -482,6 +526,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: { @@ -556,8 +615,8 @@ fLayout.AddChidren(view1.FLayoutView()); view1.btnClick.MouseUpEventHandler += (sender, e) => { - identifier = "door_call_cloud_event"; - DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1); + this.identifier = "door_call_cloud_event"; + this.DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1); }; LogicView.FunTypeView view2 = new LogicView.FunTypeView(); @@ -566,7 +625,7 @@ fLayout.AddChidren(view2.FLayoutView()); view2.btnClick.MouseUpEventHandler += (sender, e) => { - identifier = "door_pedestrian_records"; + this.identifier = "door_pedestrian_records"; this.FaceAction(this, device, view2.btnState); }; @@ -596,10 +655,48 @@ } if (edit) { - GetEditState(device, index, view1.btnState, view2.btnState, null, null); + 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.kaimenrenyuan; + 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 @@ -609,7 +706,7 @@ this.AddChidren(saveView.FLayoutView()); saveView.btnClick.MouseUpEventHandler += (sen, e) => { - Save(device,index, edit); + this.SaveInput(device,index, edit); }; #endregion @@ -620,7 +717,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") @@ -628,7 +725,7 @@ Input inputDevice = new Input(); inputDevice.condition_type = "3"; inputDevice.sid = device.sid; - inputDevice.condition = dicSateteList; + inputDevice.condition.AddRange(dicSateteList); if (device.spk == SPK.doorgate) { //鍙瀵硅 @@ -639,8 +736,30 @@ 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; + } + else if (device.spk == SPK.SensorPirHold) + { + //浜轰綋瀛樺湪浼犳劅鍣� + inputDevice.hold_time = this.hold_time; + } + + if (edit) { //绉婚櫎鏃ф暟鎹� @@ -682,6 +801,7 @@ } } + /// <summary> /// 璁惧閫夋嫨鏉′欢鐣岄潰 /// </summary> @@ -706,7 +826,6 @@ case SPK.SensorGas: case SPK.SensorWater: case SPK.SensorSmoke: - case SPK.SensorHelp: { keyVlaue = "status"; if (!Is_SpkAttribute(keyVlaue)) { @@ -725,6 +844,7 @@ } } break; + case SPK.SensorPirHold: case SPK.SensorDuiShe: case SPK.SensorShanLan: case SPK.SensorPir: @@ -872,11 +992,11 @@ || (button.Name == Language.StringByID(StringId.diedaobaojing))) { //鍙湁姣背娉紶鎰熷櫒(鑷爺) - Save(device, mIndex, mEdit); + SaveInput(device, mIndex, mEdit); } else if (button.Name == Language.StringByID(StringId.shipintonghuahujiao)) { //鍙湁姣背娉紶鎰熷櫒(鑷爺) - Save(device, mIndex, mEdit); + SaveInput(device, mIndex, mEdit); } } @@ -899,7 +1019,7 @@ if (inputs.condition.Count != 0) { //鏈夋暟鎹噸鏂拌祴鍊� - dicSateteList = inputs.condition; + dicSateteList.AddRange(inputs.condition); } } new LogicView.TipPopView { }.InputBox(textInt, stateValue, (value) => @@ -938,7 +1058,7 @@ } selectedState = device.spk + "_" + value; AddDictionary(keyValue, value, data_type, comparator); - Save(device,index, edit); + SaveInput(device,index, edit); }); } /// PM2.5,Co2,Tvoc璁剧疆鍊� @@ -961,12 +1081,17 @@ if (inputs.condition.Count != 0) { //鏈夋暟鎹噸鏂拌祴鍊� - dicSateteList = inputs.condition; + dicSateteList.AddRange(inputs.condition); } } PublicInterface view = new PublicInterface(); - //var listStr = view.GetViewList(key); + 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) => { @@ -982,6 +1107,7 @@ case SPK.SensorPm25: case SPK.SensorTVOC: case SPK.SensorHcho: + case SPK.SensorPm10: { if (!Is_SpkAttribute(key)) { @@ -991,7 +1117,7 @@ break; } AddDictionary(key, values, "integer", "in"); - Save(device, index, edit); + SaveInput(device, index, edit); }); } /// <summary> @@ -1000,38 +1126,166 @@ /// <param name="frame">褰撳墠鐣岄潰</param> /// <param name="device">褰撳墠璁惧</param> /// <param name="btnState">鏃х姸鎬�</param> - public void FaceAction(FrameLayout frame, Entity.Function device,Button btnState) { + 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(() => + + CommonMethod.Current.SunThread(() => { try { - var faceIDList = Send.Current.GetListHomeFace(device.deviceId,true); - List<string> faceNameList = new List<string>(); - for (int i = 0; i < faceIDList.Count; i++) + var faceIdList = Send.Current.GetListHomeFace(device.deviceId, true); + + CommonMethod.Current.MainThread(() => { - var face = faceIDList[i]; - faceNameList.Add(face.userName); - } + loading.Hide(); + string stateValue = btnState.Tag == null ? "" : btnState.Tag.ToString(); + PublicInterface publicInterface = new PublicInterface(); + publicInterface.MultiSelectShow(this, faceIdList, device.name, stateValue, (indexeList) => + { + if (indexeList.Count > 0) + { + dicSateteList.Clear(); + string s = string.Empty; + string tag = string.Empty; + //鏁版嵁灏佽 + AddDictionary("open_type", "1", "integer"); + for (int i = 0; i < indexeList.Count; i++) + { + + if (i > faceIdList.Count) + { + continue; + } + var indexe = indexeList[i]; + var face = faceIdList[indexe]; + AddDictionary("user_id", face.userId, "string"); + s += face.userName; + s += ","; + tag += face.userId; + tag += "_"; + } + //鐣岄潰鏄剧ず閫変腑鍊� + btnState.Text = s; + btnState.Tag = tag; + } + + }); + }); + } + catch { } + finally + { 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", "string"); - AddDictionary("user_id", face.userId, "string"); + }); + } - }, false); + }); + + } + + /// <summary> + /// 钀ょ煶瑙嗛闂ㄩ攣涓撶敤 + /// </summary> + /// <param name="frame">褰撳墠鐣岄潰</param> + /// <param name="device">褰撳墠璁惧</param> + /// <param name="btnState">鏃х姸鎬�</param> + public void VideoDoorLockAction(FrameLayout frame, Entity.Function device, Button btnState) + { + selectedState = device.spk + "_"; + Loading loading = new Loading(); + frame.AddChidren(loading); + loading.Start(); + CommonMethod.Current.SunThread(() => + { + try + { + var faceIdList = Send.Current.GetVideoDoorLockUserListInfo(device); + CommonMethod.Current.MainThread(() => + { + + loading.Hide(); + string stateValue = btnState.Text == null ? "" : btnState.Text.ToString(); + PublicInterface publicInterface = new PublicInterface(); + publicInterface.MultiSelectShow(this, faceIdList, device.name, stateValue, (indexeList) => + { + if (indexeList.Count > 0) + { + dicSateteList.Clear(); + string s = string.Empty; + string tag = string.Empty; + for (int i = 0; i < indexeList.Count; i++) + { + if (i > faceIdList.Count) + { + continue; + } + var indexe = indexeList[i]; + var face = faceIdList[indexe]; + //鏁版嵁灏佽<楂樿儨璇磋悿鐭抽偅杈规槸鎺ㄩ�佺敤鎴峰悕> + AddDictionary("open_user", face.userName, "string"); + s += face.userName; + s += ","; + tag += face.userId; + tag += "_"; + } + //鐣岄潰鏄剧ず閫変腑鍊� + btnState.Text = s; + btnState.Tag = tag; + } + + }); }); + } + catch { } + finally + { + Application.RunOnMainThread(() => + { + loading.Hide(); + }); + } + + }); + + } + + /// <summary> + /// 鏃堕棿鏂规硶 + /// </summary> + /// <param name="fLayout">鍦ㄥ摢涓晫闈㈡樉绀�</param> + /// <param name="edit">锛坱rue=缂栬緫锛沠alse=鏂板缓锛�</param> + /// <param name="index">缂栬緫鏉′欢鐨勭储寮�</param> + private void TimeView(FrameLayout fLayout,Function device, Button button) + { + + LogicView.TimeView timePointView = new LogicView.TimeView(); + timePointView.FLayoutView(fLayout); + timePointView.Time(fLayout, button.Name, (timeValue) => + { + try + { + if (timeValue.Contains(":")) + { + string[] ary = timeValue.Split(':'); + + int h = int.Parse(ary[0]) * 60 * 60; + int m = int.Parse(ary[1]) * 60; + int s = int.Parse(ary[2]); + this.hold_time = (h + m + s).ToString(); + if (button != null) + { + button.Text = this.hold_time + "s"; + button.Name = timeValue; + } + selectedState = device.spk + "_" + timeValue; + } } catch { } @@ -1057,7 +1311,7 @@ if (dicList.Count != 0) { //鏈夋暟鎹噸鏂拌祴鍊� - dicSateteList = dicList; + dicSateteList.AddRange(dicList); } InpOrOutLogicMethod.Current.EditDeviceState(device, dicList, button1, button2, button3, button4); } @@ -1148,16 +1402,45 @@ var dic = dictionaryB[i]; string key = dic["key"]; string comparatorValue = dic["comparator"]; + string value = dic["value"]; if (dictionaryA["key"] == key && dictionaryA["comparator"] == comparatorValue) { - //鍒ゆ柇鏄惁瀛樺湪 - valueInt = i; - break; + if (this.checkSpk()) + { + //鏈変簺璁惧闇�瑕佸鍔犺繖涓垽鏂� + if (dictionaryA["value"] == value) + { + //鍒ゆ柇鏄惁瀛樺湪 + valueInt = i; + break; + } + } + else + { + //鍒ゆ柇鏄惁瀛樺湪 + valueInt = i; + break; + } } } return valueInt; } /// <summary> + /// 妫�鏌ユ槸鍚︽敮鎸� + /// </summary> + /// <returns></returns> + private bool checkSpk() + { + if (this.function.spk == SPK.VideoDoorLock || + this.function.spk == SPK.doorgate + ) + { + return true; + } + return false; + + } + /// <summary> /// 鍒ゆ柇dictionaryB鏄惁瀹屾暣鍖呭惈鍙︿竴涓猟ictionaryA /// </summary> /// <param name="dictionaryA"></param> -- Gitblit v1.8.0