using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; using Shared.Common; using Shared.Phone.UserView; using Shared.R; using ZigBee.Device; namespace Shared.Phone.Device.Logic { public class SkipView:FrameLayout { /// /// 其它界面跳进来的入口 /// public async static void SkipAddLogic(int intvalue, DoorLock doorLock = null, UserCenter.MemberInfoRes accountObj = null) { /// 0.正常自动化;1.门锁自动化;2.Sone门锁; switch (intvalue) { case 0: { //new一个新逻辑对象; //新增正常自动化入口 Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 Common.Logic.CurrentLogic.LogicType = 0;//标记逻辑类型 Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1); var addLogicPage = new AddLogicPage(); UserView.HomePage.Instance.AddChidren(addLogicPage); UserView.HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } break; case 1: { //进入门锁联动事件入口 Send.UserMemberInfoRes = accountObj; Send.CurrentDoorLock = doorLock; if (accountObj == null) { ///防止抛异常 Send.UserMemberInfoRes = new UserCenter.MemberInfoRes(); } if (doorLock == null) { ///防止抛异常 Send.CurrentDoorLock = new DoorLock(); } ///进来刷新一次设备列表; Common.Logic.LogicDviceList.Clear(); if (Common.Logic.LogicDviceList.Count == 0) { Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); } var doorLockLogicList = new DoorLockLogic.LockLogicList(); UserView.HomePage.Instance.AddChidren(doorLockLogicList); UserView.HomePage.Instance.PageIndex += 1; doorLockLogicList.Show(); } break; } } #region ◆ 自动化__________________________ /// /// 自动化功能代码入口 /// public static void ShowAutotionView(FrameLayout functionSceneAutoBodyView) { //functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; #region ---推荐模板的组件 //推荐模板背景控件 var bjFrameLayout = new FrameLayout { Width = Application.GetRealWidth(1080 - 58), Height = Application.GetRealHeight(170), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, X = Application.GetRealWidth(58), //Radius = (uint)Application.GetRealHeight(50), Y = Application.GetRealHeight(30), }; functionSceneAutoBodyView.AddChidren(bjFrameLayout); bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft); //图标控件 var sigBtn = new Button { Width = Application.GetMinRealAverage(84), Height = Application.GetMinRealAverage(84), UnSelectedImagePath = "ZigeeLogic/sign.png", X = Application.GetRealWidth(58), Gravity = Gravity.CenterVertical, }; bjFrameLayout.AddChidren(sigBtn); //推荐模板文本控件 var recommendtextBtn = new Button { Width = Application.GetMinRealAverage(300), Height = Application.GetMinRealAverage(84), X = sigBtn.Right + Application.GetRealWidth(35), TextAlignment = TextAlignment.CenterLeft, //Text = "推荐模板", TextID = MyInternationalizationString.logictemplate, Gravity = Gravity.CenterVertical, TextColor = ZigbeeColor.Current.LogicBtnSelectedColor, TextSize = 15, }; bjFrameLayout.AddChidren(recommendtextBtn); //推荐模板开关控件 var recommendswitchBtn = new Button { Width = Application.GetRealWidth(104), Height = Application.GetRealHeight(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58), Gravity = Gravity.CenterVertical, }; bjFrameLayout.AddChidren(recommendswitchBtn); #endregion //默认推荐模板左右可滑控件 var scenehorizontalScrol = new HorizontalScrolViewLayout { Width = Application.GetRealWidth(1080 - 58), X = Application.GetRealWidth(58), Y = bjFrameLayout.Bottom + Application.GetRealHeight(30), Height = Application.GetRealHeight(0), }; functionSceneAutoBodyView.AddChidren(scenehorizontalScrol); //显示自动化列表上下可滑控件 var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout { Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30), //BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/ X = Application.GetRealWidth(58), Y = scenehorizontalScrol.Bottom, }; functionSceneAutoBodyView.AddChidren(logicScrolView); logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); bool no = false; //显示默认模板的界面事件 recommendswitchBtn.MouseUpEventHandler += (sender, e) => { int Yheight = 0; recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected; scenehorizontalScrol.RemoveAll(); if (recommendswitchBtn.IsSelected) { no = true; scenehorizontalScrol.Height = Application.GetRealHeight(246); Yheight = 20; for (int i = 1; i < 4; i++) { var frameLayout = new FrameLayout { Width = Application.GetMinRealAverage(369 + 46), Height = Application.GetMinRealAverage(246), }; scenehorizontalScrol.AddChidren(frameLayout); var logiciocnBtn = new Button { Width = Application.GetMinRealAverage(369), Height = Application.GetMinRealAverage(246), UnSelectedImagePath = "ZigeeLogic/" + i + ".png", Tag = i, }; frameLayout.AddChidren(logiciocnBtn); var logicnameBtn = new Button { Width = Application.GetMinRealAverage(250), Height = Application.GetMinRealAverage(80), X = Application.GetRealWidth(23), Y = Application.GetRealHeight(246 - 23 - 80), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, TextSize = 14, }; frameLayout.AddChidren(logicnameBtn); if (i == 1) { logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight); } else if (i == 2) { logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight); } else if (i == 3) { logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1); } EventHandler iconclick = (sender1, e1) => { Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 if (logiciocnBtn.Tag.ToString() == "3") { Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text; //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext); var addLogicPage = new Device.Logic.AddLogicPage(); HomePage.Instance.AddChidren(addLogicPage); HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } else { Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text; //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext); Device.Logic.TemplatePage templatePage = new Device.Logic.TemplatePage(); Device.Logic.TemplatePage.s = logiciocnBtn.Tag.ToString(); HomePage.Instance.AddChidren(templatePage); HomePage.Instance.PageIndex += 1; templatePage.Show(); } }; logiciocnBtn.MouseUpEventHandler += iconclick; logicnameBtn.MouseUpEventHandler += iconclick; } } else { no = false; scenehorizontalScrol.Height = Application.GetRealHeight(0); Yheight = 0; } logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight; logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight; Automationview(logicScrolView, no); }; //下拉刷新自动化列表的事件 logicScrolView.BeginHeaderRefreshingAction += () => { if (!Config.Instance.Home.IsVirtually) {//虚拟的不获取网关逻辑列表 //重新刷新logic列表 Common.Logic.LogicList.Clear(); Read(logicScrolView, no); } //关闭刷新View; logicScrolView.EndHeaderRefreshing(); }; //自动化 Read(logicScrolView, no); } /// /// 读取自动化列表数据; /// /// private static async void Read(VerticalRefreshLayout logicScrolView, bool no) { //if (Config.Instance.HomeId != UserCenter.UserCenterResourse.AccountOption.OldHomeStringId) //{ // //切换住宅清除之前缓存数据; // Common.Logic.LogicList.Clear(); // Common.Logic.LockLogicList.Clear(); // Common.Logic.SoneLogicList.Clear(); //} CommonPage.Loading.Start(); try { if (!Config.Instance.Home.IsVirtually)//虚拟的不获取网关逻辑列表 { if (Common.Logic.LogicList.Count == 0) { var Idlist1 = await Send.GetLogicId(0);// var Idlist2 = await Send.GetLogicId(2);//门锁常开模式 if (Idlist1.Count != 0) { var listlogic1 = await Send.ReadList(Idlist1.Count, 0); for (int j = 0; j < listlogic1.Count; j++) { var logic = listlogic1[j]; if (logic.LogicType != 0) { continue; } Common.Logic.LogicList.Add(logic); } } if (Idlist2.Count != 0) { var listlogic2 = await Send.ReadList(Idlist2.Count, 2); for (int j = 0; j < listlogic2.Count; j++) { var logic = listlogic2[j]; if (logic.LogicType != 2) { continue; } Common.Logic.LogicList.Add(logic); } } } } } catch (Exception e) { var dd = e.Message; } //自动化 Automationview(logicScrolView, no); CommonPage.Loading.Hide(); } static RowLayout selectedRow = new RowLayout() { Tag = "0" };//记录左滑状态 /// /// 加载自动化列表界面 /// /// Refresview. private static async void Automationview(VerticalRefreshLayout refresview, bool no) { refresview.RemoveAll(); if (Common.Logic.LogicList.Count == 0 && no == false) { //就是为了显示引导添加图标; refresview.BackgroundColor = 0x00000000; var noFrameLayout = new FrameLayout { Height = Application.GetRealHeight(434 + 200 + 32 + 294 - 55), //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; refresview.AddChidren(noFrameLayout); var noIconBtn = new Button { Y = Application.GetRealHeight(294 - 55), Width = Application.GetMinRealAverage(757), Height = Application.GetMinRealAverage(435), UnSelectedImagePath = "Item/NoFunction.png", X = Application.GetRealWidth(104), }; noFrameLayout.AddChidren(noIconBtn); var noTextBtn = new Button() { Y = noIconBtn.Bottom, Height = Application.GetRealHeight(200) + Application.GetRealHeight(32), Width = Application.GetRealWidth(700), //Gravity = Gravity.CenterHorizontal, Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, TextAlignment = TextAlignment.Center, IsMoreLines = true, X = Application.GetRealWidth(190 - 58), }; noFrameLayout.AddChidren(noTextBtn); } else { if (Common.Logic.LogicList.Count == 0 && no == true) { ///改变滑动view的颜色; refresview.BackgroundColor = 0x00000000; } else { refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; } } int i = 1;//局部变量,默认是第一条逻辑; foreach (var logic in Common.Logic.LogicList) { var fLayout = new FrameLayout { Height = Application.GetRealHeight(190 + 30), Width = Application.GetRealWidth(1080 - 58), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; refresview.AddChidren(fLayout); var logicRowlayout = new RowLayout { Height = Application.GetRealHeight(190 + 30), Width = Application.GetRealWidth(1080 - 58), LineColor = ZigbeeColor.Current.LogicBackgroundColor, BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, SubViewWidth = Application.GetRealWidth(184),//改变编辑控件宽度多少; Tag = i.ToString(), }; fLayout.AddChidren(logicRowlayout); //左滑菜单事件 logicRowlayout.OpenMenuAction += () => { if (selectedRow.Tag.ToString() != logicRowlayout.Tag.ToString()) { //保留左滑只有一个; selectedRow.HideMenu();// } selectedRow = logicRowlayout; }; if (i == 1) { //实现android显示逻辑列表的圆角; fLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); logicRowlayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); } i++; var logicnameBtn = new Button { Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(350), Text = logic.LogicName, X = Application.GetRealWidth(12 + 46), Y = Application.GetRealHeight(30), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextSize = 14, }; logicRowlayout.AddChidren(logicnameBtn); var logicswitchBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = logicRowlayout.Width - Application.GetRealWidth(104 + 58), Y = Application.GetRealHeight(58 + 30 + 9 + 30), }; logicRowlayout.AddChidren(logicswitchBtn); logicswitchBtn.MouseUpEventHandler += (sender1, e1) => { logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected; if (logicswitchBtn.IsSelected) { //逻辑开 logic.IsEnable = 1; StatusColor(logic, logicRowlayout, 1); } else { //逻辑关 logic.IsEnable = 0; StatusColor(logic, logicRowlayout, 0); } if (!Config.Instance.Home.IsVirtually) { Send.LogicControlSwitch(logic); } //Logic.Send.AddModifyLogic(logic); }; if (logic.IsEnable == 1) { logicswitchBtn.IsSelected = true; StatusColor(logic, logicRowlayout, 1); } else if (logic.IsEnable == 0) { logicswitchBtn.IsSelected = false; StatusColor(logic, logicRowlayout, 0); } ///编辑 var edit = new Button { BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRowlayout.AddRightView(edit); if (logic.LogicType == 2) { edit.TextID = MyInternationalizationString.look; } edit.MouseUpEventHandler += (sender, e) => { Common.Logic.CurrentLogic = logic; if (Common.Logic.CurrentLogic.LogicType == 2) { var oneLogic = new OneLogic(); UserView.HomePage.Instance.AddChidren(oneLogic); UserView.HomePage.Instance.PageIndex += 1; oneLogic.Show(true); } else { var logicCommunalPage = new LogicCommunalPage(); HomePage.Instance.AddChidren(logicCommunalPage); HomePage.Instance.PageIndex += 1; logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview, no); }); } }; ///删除 var del = new Button { BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRowlayout.AddRightView(del); del.MouseUpEventHandler += (sender, e) => { var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm, Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); alert.ConfirmClickEvent += () => { Common.Logic.LogicList.Remove(logic); Automationview(refresview, no); if (!Config.Instance.Home.IsVirtually) { Send.DelLogic(logic.LogicId); } }; }; var line = new Button { Y = fLayout.Height - 1, Height = 1, X = Application.GetRealWidth(58), Width = Application.GetRealWidth(1080 - 58), BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; fLayout.AddChidren(line); } } /// /// 显示自动化输出功能模块图标的颜色 /// /// /// /// private static void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue) { var logictimeBtn = new Button { Height = Application.GetRealHeight(58), Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350), Y = Application.GetRealHeight(30), X = Application.GetRealWidth(365), TextAlignment = TextAlignment.CenterRight, TextColor = ZigbeeColor.Current.LogicListWeekTextColor, }; logicRowlayout.AddChidren(logictimeBtn); ///显示执行周期 Method.UpdateWeek(logictimeBtn, logic); List indexlist = new List(); List iconIndexlist = new List(); for (int i = 0; i < logic.Actions.Count; i++) { var linkType = logic.Actions[i]["LinkType"].ToString(); var d = indexlist.Find((value) => { return value == linkType; }); if (d == null) { indexlist.Add(linkType); } } //排列图标顺序; if (indexlist.Contains("0") || indexlist.Contains("8")) { iconIndexlist.Add("0"); } if (indexlist.Contains("2")) { iconIndexlist.Add("2"); } if (indexlist.Contains("6")) { iconIndexlist.Add("6"); } if (indexlist.Contains("7")) { iconIndexlist.Add("7"); } for (int i = 0; i < iconIndexlist.Count; i++) { var iconindex = iconIndexlist[i]; var typebjBtn = new FrameLayout { Width = Application.GetMinRealAverage(82), Height = Application.GetMinRealAverage(82), X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i), Y = Application.GetRealHeight(58 + 30 + 30), Radius = (uint)Application.GetMinRealAverage(41), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; logicRowlayout.AddChidren(typebjBtn); var typeIconBtn = new Button { Width = Application.GetMinRealAverage(58), Height = Application.GetMinRealAverage(58), Gravity = Gravity.Center, }; typebjBtn.AddChidren(typeIconBtn); var connectIconBtn = new Button { Y = typebjBtn.Y + Application.GetRealHeight(35), X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i), Width = Application.GetRealWidth(48), Height = Application.GetRealHeight(15), UnSelectedImagePath = "ZigeeLogic/connect.png", }; logicRowlayout.AddChidren(connectIconBtn); if (iconIndexlist.Count - 1 == i) { connectIconBtn.Visible = false; } switch (iconindex) { case "0": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; case "2": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; case "6": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; case "7": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; } } } #endregion /// /// 门锁失效设置用的方法(相当一个关闭常开模式按钮,分类-自动化-不需要显示该自动化) /// /// 时间值 /// 设备 /// public static async System.Threading.Tasks.Task LockAddModifyLogic(int timeVlaue, CommonDevice common) { //读取系统当前时间:时-分 var h = DateTime.Now.ToString("HH"); var m = DateTime.Now.ToString("mm"); Dictionary timeConditionsInfo = new Dictionary(); timeConditionsInfo.Add("Type", "0"); timeConditionsInfo.Add("IsValid", "1"); timeConditionsInfo.Add("DateType", "0"); timeConditionsInfo.Add("RemindTime", "0"); timeConditionsInfo.Add("EnDelay", "0"); timeConditionsInfo.Add("DelayTime", "0"); timeConditionsInfo.Add("StartHour", h); timeConditionsInfo.Add("StartMin", m); if (UserCenter.UserCenterResourse.HideOption.DoorLockNomallyOpenTimeMode == 1) { //强制变更时间模式为分钟 timeConditionsInfo.Add("DoorLockOpenDelayTime", (timeVlaue * 60).ToString()); } else { timeConditionsInfo.Add("DoorLockOpenDelayTime", (timeVlaue * 3600).ToString()); } Dictionary actionsInfo = new Dictionary(); actionsInfo.Add("LinkType", 8); actionsInfo.Add("DeviceAddr", common.DeviceAddr); actionsInfo.Add("Epoint", "200"); actionsInfo.Add("PassData", "055704010113");//默认门锁常关 Dictionary accounts = new Dictionary(); accounts.Add("Type", "8"); accounts.Add("Option4", common.DeviceAddr.ToString());//用于判断识别是哪个门锁; accounts.Add("Option2", common.DeviceEpoint.ToString()); Common.Logic currentLogic = new Common.Logic(); currentLogic.IsEnable = 1;//默认为开 currentLogic.TimeAttribute.Repeat = 0;//执行一次 currentLogic.LogicType = 3;//标记逻辑类型 currentLogic.LogicName = Language.StringByID(R.MyInternationalizationString.openmode); currentLogic.Conditions.Add(timeConditionsInfo); currentLogic.Actions.Add(actionsInfo); currentLogic.Accounts.Add(accounts); var logicIfon = await Send.AddModifyLogic(currentLogic); if (logicIfon != null && logicIfon.LogicId != 0) { //添加门锁失效时间的历史记录 UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog((DoorLock)common, 9003, timeVlaue.ToString()); return logicIfon.LogicId;//表示添加成功; } return 0;//表示添加失败; } /// /// s-one门锁是否存在自动化的方法; /// 注意(参数:2-常开自动化;3-失效时间自动化); /// 返回值:0不存在;其它值都存在; /// public static async System.Threading.Tasks.Task Exist(int valueInt, ZigBee.Device.DoorLock doorLock) { int exist = 0; var IdList = await Send.GetLogicId(valueInt); if (IdList.Count != 0) { for (int i = 0; i < IdList.Count; i++) { var id = IdList[i]; var logic = await Send.GetLogic(id, valueInt); if (logic != null) { if (ExistLogic(logic, doorLock)) { exist = id; ///找到退出 break; } } } } return exist; } /// ///获取门锁时效性逻辑信息 /// 返回值:null不存在;其它值都存在; /// public static async System.Threading.Tasks.Task GetLogicIfon(ZigBee.Device.DoorLock doorLock) { Common.Logic logic = null; var Idlist = await Send.GetLogicId(3); if (Idlist.Count != 0) { //默认取第一个逻辑ID(时效性只有一条逻辑) int exist = Idlist[0]; logic = await Send.GetLogic(exist, 3); if (!ExistLogic(logic, doorLock)) { logic = null; } } return logic; } /// ///删除该门锁所有时效性自动化 /// 返回值:true成功;false失败; /// public static async System.Threading.Tasks.Task DelAllLogic(ZigBee.Device.DoorLock doorLock) { bool _if = false; var Idlist = await Send.GetLogicId(3); if (Idlist.Count != 0) { for (int i = 0; i < Idlist.Count; i++) { int id = Idlist[i]; var logic = await Send.GetLogic(id, 3); if (logic != null) { if (ExistLogic(logic, doorLock)) { //本来只有一条时效性自动化, //防止特殊情况,找到就删除掉; //var valueInt = await Send.DelLogic(id); //if (valueInt == 0) //{ // _if = true; //} //(考虑性能默认删除成功,直接返回成功结果true) _if = true; Send.DelLogic(id); } } } } return _if; } /// /// 查找这一条自动化是否属于该门锁 /// /// public static bool ExistLogic(Common.Logic logic, ZigBee.Device.DoorLock doorLock) { for (int j = 0; j < logic.Accounts.Count; j++) { //Option4是设备mac; if (logic.Accounts[j]["Option4"].ToString() == doorLock.DeviceAddr) { //查找是否是那个门锁; //如果不是该门锁联动事件不显示出来; return true; } } return false; } } }