using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter.DeviceDoorLock { /// /// 门锁的历史记录界面 /// public class DoorLockHistoryLogForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private VerticalFrameRefreshControl listView = null; /// /// 日期From控件 /// private DateSelectControl dateFromControl = null; /// /// 日期To控件 /// private DateSelectControl dateToControl = null; /// /// 成员信息 /// private List listMenberInfo = null; /// /// 设备对象 /// private CommonDevice DeviceDoor = null; /// /// 检索对象的ID(-1:所有 -9999:其他) /// private List listSearchUserId = new List() { "-1" }; /// /// 检索开锁方式的ID(-1:所有 0:密码 15:指纹 3:IC卡 9000:常开模式(自定义的)) /// private List listSearchLockId = new List() { -1 }; /// /// 获取到的历史记录 /// private List listHistoryInfo = null; /// /// 其他消息的主键,它存在另外的一张数据库表中 /// private List listOtherMsgId = new List(); #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 门锁的Mac地址 public void ShowForm(string i_DeviceMac) { this.DeviceDoor = HdlDeviceCommonLogic.Current.GetDevicesByMac(i_DeviceMac, false)[0]; //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryLog)); //成员不允许清空记录 if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2) { //删除 var btnDelete = new MostRightIconControl(69, 69); btnDelete.UnSelectedImagePath = "Item/DeleteIcon2Selected.png"; topFrameLayout.AddChidren(btnDelete); btnDelete.InitControl(); btnDelete.ButtonClickEvent += (sender, e) => { var form = new TopRightMenuControl(1, 2); //清空记录 form.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uClearLog), "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => { if (this.listView.frameTable.ChildrenCount == 0) { //无数据可删 return; } //确认清空当前记录? this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uConfirmClearNowLog), () => { HdlThreadLogic.Current.RunThread(() => { //清空所有记录 this.ClearAllHistoryLog(); }); }); }); }; } //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); //初始化头部检索控件 this.InitTitleSearchControl(); //初始化记录列表 this.InitLogListInfo(true); } /// /// 初始化头部检索控件 /// private void InitTitleSearchControl() { var frameTitle = new FrameRowControl(); frameTitle.UseClickStatu = false; frameTitle.Height = Application.GetRealHeight(115); frameTitle.BackgroundColor = topFrameLayout.BackgroundColor; bodyFrameLayout.AddChidren(frameTitle); var btnDateIcon = frameTitle.AddLeftIcon(69); btnDateIcon.UnSelectedImagePath = "Item/DateSearchIcon.png"; dateFromControl = new DateSelectControl(Language.StringByID(R.MyInternationalizationString.uStartDate)); dateFromControl.Y = Application.GetRealHeight(35); dateFromControl.X = Application.GetRealWidth(138); dateFromControl.dateValue = DateTime.Now.ToString("yyyyMMdd"); frameTitle.AddChidren(dateFromControl, ChidrenBindMode.NotBind); dateFromControl.DateSelectEvent += (dateValue) => { //初始化记录列表 this.InitLogListInfo(true); }; var btnTemp = new NormalViewControl(26, 58, true); btnTemp.Y = Application.GetRealHeight(29); btnTemp.X = dateFromControl.Right + Application.GetRealWidth(12); btnTemp.TextColor = UserCenterColor.Current.TextGrayColor1; btnTemp.Text = "-"; frameTitle.AddChidren(btnTemp, ChidrenBindMode.NotBind); dateToControl = new DateSelectControl(Language.StringByID(R.MyInternationalizationString.uEndDate)); dateToControl.Y = Application.GetRealHeight(35); dateToControl.X = btnTemp.Right + Application.GetRealWidth(12); dateToControl.dateValue = DateTime.Now.ToString("yyyyMMdd"); frameTitle.AddChidren(dateToControl, ChidrenBindMode.NotBind); dateToControl.DateSelectEvent += (dateValue) => { //初始化记录列表 this.InitLogListInfo(true); }; //类型筛选 var btnScreening = frameTitle.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uScreeningType), 145); btnScreening.TextSize = 12; btnScreening.Width = btnScreening.GetRealWidthByText(); btnScreening.X = frameTitle.Width - Application.GetRealWidth(58) - btnScreening.Width; btnScreening.ButtonClickEvent += (sender, e) => { //显示类型筛选界面 this.ShowDoorLockScreeningTypeForm(); }; frameTitle.ChangedChidrenBindMode(btnScreening, ChidrenBindMode.NotBind); //类型筛选的图标 var btnScreeningIcon = new IconViewControl(69); btnScreeningIcon.X = btnScreening.X - Application.GetRealWidth(12) - btnScreeningIcon.IconSize; btnScreeningIcon.Gravity = Gravity.CenterVertical; btnScreeningIcon.UnSelectedImagePath = "Item/ScreeningType.png"; frameTitle.AddChidren(btnScreeningIcon, ChidrenBindMode.NotBind); btnScreeningIcon.ButtonClickEvent += (sender, e) => { //显示类型筛选界面 this.ShowDoorLockScreeningTypeForm(); }; //底线 frameTitle.AddBottomLine(); this.listView = new VerticalFrameRefreshControl(29); listView.Y = frameTitle.Bottom - Application.GetRealHeight(3); listView.Height = bodyFrameLayout.Height - frameTitle.Bottom + Application.GetRealHeight(3); bodyFrameLayout.AddChidren(listView); listView.frameTable.BackgroundColor = UserCenterColor.Current.White; listView.BeginHeaderRefreshingAction += () => { //下拉刷新 this.InitLogListInfo(true); }; } #endregion #region ■ 初始化记录列表_____________________ /// /// 初始化记录列表 /// /// 是否从新从云端读取数据 private void InitLogListInfo(bool reReadData) { this.listView.frameTable.RemoveAll(); listView.frameTable.Height = bodyFrameLayout.Height - Application.GetRealHeight(115 - 3); //如果From>To的时候,不鸟它 if (Convert.ToInt32(dateFromControl.dateValue) > Convert.ToInt32(dateToControl.dateValue)) { //开始时间大于结束时间 this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uFromTimeIsOverToTime)); return; } if (reReadData == true) { //置空后,重新获取 this.listHistoryInfo = null; } HdlThreadLogic.Current.RunThread(() => { //打开进度条 this.ShowProgressBar(); //成员列表 var result = this.GetMemberListInfo(); if (result == false) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } //成员信息 var dicMemberName = new Dictionary(); for (int i = 0; i < listMenberInfo.Count; i++) { dicMemberName.Add(listMenberInfo[i].ChildAccountId, listMenberInfo[i].ShowName); } //历史记录 var historyLog = this.GetHistoryLogInfo(dicMemberName); if (historyLog == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } //关闭进度条 this.CloseProgressBar(); HdlThreadLogic.Current.RunMain(() => { for (int i = 0; i < historyLog.Count; i++) { //添加记录行 this.AddLogInfoRow(historyLog[i], dicMemberName, i != historyLog.Count - 1); } //隐藏下拉刷新特效 listView.EndHeaderRefreshing(); if (listView.frameTable.ChildrenCount == 0) { return; } //调整列表控件的高度 listView.AdjustTableHeight(Application.GetRealHeight(23)); }); }); } /// /// 获取成员列表信息 /// /// private bool GetMemberListInfo() { if (listMenberInfo != null) { //只初始化一次 return true; } listMenberInfo = new List(); //把自己也加进去 var myInfo = new MemberInfoRes() { ChildAccountEmail = HdlUserCenterResourse.UserInfo.UserEmail, ChildAccountPhone = HdlUserCenterResourse.UserInfo.UserPhone, ChildNickName = HdlUserCenterResourse.UserInfo.NickName, ChildAccountId = Common.Config.Instance.Guid }; listMenberInfo.Add(myInfo); if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 3) { //成员只能看自己的 return true; } //获取成员列表 var listInfo = HdlMemberLogic.Current.GetMemberListInfo(ShowNetCodeMode.YES); if (listInfo == null) { return false; } var checkList = new List(); foreach (MemberInfoRes infoRes in listInfo) { if (checkList.Contains(infoRes.ChildAccountId) == true) { continue; } checkList.Add(infoRes.ChildAccountId); listMenberInfo.Add(infoRes); } return true; } #endregion #region ■ 添加记录行_________________________ /// /// 添加记录行 /// /// 历史记录 /// 名字 /// 添加底线 private void AddLogInfoRow(DoorHistoryLogInfo historyInfo, Dictionary dicName, bool addLine = true) { var frameTable = new FrameRowControl(listView.rowSpace / 2); frameTable.UseClickStatu = false; this.listView.AddChidren2(frameTable); //图标 var btnIcon = frameTable.AddLeftIcon(); //信息 var btnMsg = frameTable.AddTopView("", 600); //人物 string perName = dicName.ContainsKey(historyInfo.UserId) == true ? dicName[historyInfo.UserId] : Language.StringByID(R.MyInternationalizationString.uOther); frameTable.AddBottomView(perName, 600); //时间 if (this.dateFromControl.dateValue == this.dateToControl.dateValue) { //如果日期范围一样,则不显示年月日 frameTable.AddMostRightView(HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(historyInfo.UnlockTime).ToString("HH:mm:ss"), 400); } else { //如果日期范围不一样,则显示年月日 frameTable.AddMostRightView(HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(historyInfo.UnlockTime).ToString("yyyy/MM/dd HH:mm:ss"), 700); } //底线 if (addLine == true) { frameTable.AddBottomLine(); } //其他消息 if (historyInfo.UnLockMode == -1) { //图片 var device = HdlDeviceCommonLogic.Current.GetDevice(historyInfo.DeviceMac, historyInfo.DeviceEpoint); if (device == null) { btnIcon.UnSelectedImagePath = "Device/IntelligentLocks.png"; } else { HdlDeviceCommonLogic.Current.SetDeviceIconToControl(btnIcon, device); } //消息 btnMsg.Text = historyInfo.AlarmMsg; } //门锁常开模式 else if (historyInfo.UnLockMode == 9000) { //图片 btnIcon.UnSelectedImagePath = "Item/NormallyOpen.png"; //这里是网关或者门锁自己推送 btnMsg.Text = historyInfo.AlarmMsg; } //常开模式手动开启 else if (historyInfo.UnLockMode == 9001) { //图片 btnIcon.UnSelectedImagePath = "Item/NormallyOpen.png"; btnMsg.TextID = R.MyInternationalizationString.uNormallyOpenModeManualOpen; } //常开模式手动取消 else if (historyInfo.UnLockMode == 9002) { //图片 btnIcon.UnSelectedImagePath = "Item/NormallyOpen.png"; btnMsg.TextID = R.MyInternationalizationString.uNormallyOpenModeManualClose; } //常开模式启用{0}小时 else if (historyInfo.UnLockMode == 9003) { //图片 btnIcon.UnSelectedImagePath = "Item/NormallyOpen.png"; btnMsg.Text = Language.StringByID(R.MyInternationalizationString.uNormallyOpenModeOpenSomeTime).Replace("{0}", historyInfo.NormallyOpenContinuedTime); } //常开自动化手动取消 else if (historyInfo.UnLockMode == 9004) { //图片 btnIcon.UnSelectedImagePath = "Item/NormallyOpen.png"; btnMsg.Text = Language.StringByID(R.MyInternationalizationString.uNormallyOpenLogicManualClose); } //开锁成功 else if (historyInfo.IsUnlockSuccess == true) { //图片 btnIcon.UnSelectedImagePath = "Item/UnLockSuccess.png"; //消息 if (historyInfo.UnLockMode == 0) { //密码开锁成功 btnMsg.TextID = R.MyInternationalizationString.uUnlockByPasswordSuccess; } else if (historyInfo.UnLockMode == 3) { //IC卡开锁成功 btnMsg.TextID = R.MyInternationalizationString.uUnlockByICcardSuccess; } else if (historyInfo.UnLockMode == 13) { //静脉纹开锁成功 btnMsg.TextID = R.MyInternationalizationString.uStriaVenosusUnLockSuccess; } else if (historyInfo.UnLockMode == 14) { //人脸识别开锁成功 btnMsg.TextID = R.MyInternationalizationString.uFaceRecognitionUnLockSuccess; } else if (historyInfo.UnLockMode == 15) { //指纹开锁成功 btnMsg.TextID = R.MyInternationalizationString.uUnlockByFingerPrintSuccess; } } //开锁失败 else { //图片 btnIcon.UnSelectedImagePath = "Item/UnLockFail.png"; //消息 if (historyInfo.UnLockMode == 0) { //密码开锁失败 btnMsg.TextID = R.MyInternationalizationString.uUnlockByPasswordFail; } else if (historyInfo.UnLockMode == 3) { //IC卡开锁失败 btnMsg.TextID = R.MyInternationalizationString.uUnlockByICcardFail; } else if (historyInfo.UnLockMode == 13) { //静脉纹开锁失败 btnMsg.TextID = R.MyInternationalizationString.uStriaVenosusUnLockFail; } else if (historyInfo.UnLockMode == 14) { //人脸识别开锁失败 btnMsg.TextID = R.MyInternationalizationString.uFaceRecognitionUnLockFail; } else if (historyInfo.UnLockMode == 15) { //指纹开锁失败 btnMsg.TextID = R.MyInternationalizationString.uUnlockByFingerPrintFail; } } } #endregion #region ■ 类型筛选___________________________ /// /// 显示类型筛选界面 /// private void ShowDoorLockScreeningTypeForm() { var dic = new Dictionary(); for (int i = 0; i < listMenberInfo.Count; i++) { dic.Add(listMenberInfo[i].ChildAccountId, listMenberInfo[i].ShowName); } //显示底部类型筛选 var form = new DoorLockScreeningTypeForm(); form.AddForm(dic, listSearchUserId, listSearchLockId); form.FinishSelectEvent += (selectUser, selectLock) => { listSearchUserId.Clear(); listSearchUserId.AddRange(selectUser); listSearchLockId.Clear(); listSearchLockId.AddRange(selectLock); //初始化记录列表 this.InitLogListInfo(false); }; } #endregion #region ■ 筛选记录___________________________ /// /// 筛选历史记录 /// /// private List ScreeningHistoryData(Dictionary dicMemberName) { //历史记录太麻烦了,存在不同的数据库表里,并且数据还不一样,只能这样一个个判断了 var listScreeningData = new List(); //清除掉之前的记录 this.listOtherMsgId = new List(); //是否选择全选用户 bool selectAllUser = this.listSearchUserId.Contains("-1"); //是否单选了其他 bool selectOtherUser = this.listSearchUserId.Contains("-9999"); //是否选择全选开锁方式 bool selectAllLockMode = this.listSearchLockId.Contains(-1); //一个个去遍历 foreach (var data in this.listHistoryInfo) { //检测该历史记录能否显示 bool result = this.CheckHistoryDataCanShow(data, dicMemberName, selectAllUser, selectOtherUser, selectAllLockMode); if (result == true) { listScreeningData.Add(data); } } return listScreeningData; } /// /// 检测该历史记录能否显示 /// /// 检测对象 /// 成员信息 /// 是否选择全选用户 /// 是否单选了其他 /// 是否选择全选开锁方式 private bool CheckHistoryDataCanShow(DoorHistoryLogInfo info, Dictionary dicMemberName, bool selectAllUser, bool selectOtherUser, bool slectAllLockMode) { //如果没有选择 全选用户 if (selectAllUser == false) { //如果这个用户ID不包含在指定选择的成员列表里面 if (this.listSearchUserId.Contains(info.UserId) == false) { if (dicMemberName.ContainsKey(info.UserId) == true) { //如果能够识别这个id的话,则表示它不属于其他类,并且也不再选择目标内 return false; } //如果没有选择 其他的话,不显示 if (selectOtherUser == false) { return false; } } } //如果是成员身份,并且用户ID不为空 if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 3 && info.UserId != string.Empty) { //成员不能看到 其他人的记录(成员的时候,这个变量里面只有他自己一个) if (dicMemberName.ContainsKey(info.UserId) == false) { return false; } } //如果没有选择 全选开锁方式 if (slectAllLockMode == false) { //如果这个开锁方式不在选择的列表里面的话 if (this.listSearchLockId.Contains(info.UnLockMode) == false) { return false; } } //另一张表的数据主键 if (info.UnLockMode == -1 || info.UnLockMode == 9000) { if (info.MsgKeyId != string.Empty) { //其他消息的主键,它存在另外的一张数据库表中 this.listOtherMsgId.Add(info.MsgKeyId); } } return true; } #endregion #region ■ 获取门锁打开记录___________________ /// /// 获取历史记录 /// /// private List GetHistoryLogInfo(Dictionary dicMemberName) { if (this.listHistoryInfo != null) { //不二次获取,主要针对的是筛选功能 return this.ScreeningHistoryData(dicMemberName); } var dateFrom = new DateTime(dateFromControl.Year, dateFromControl.Month, dateFromControl.Day, 0, 0, 0); var dateTo = new DateTime(dateToControl.Year, dateToControl.Month, dateToControl.Day, 23, 59, 59); //获取门锁的打开和关闭记录 var listAllLog = HdlDeviceDoorLockLogic.Current.GetDoorHistoryLogInfo(this.GetDoorId(), dateFrom, dateTo); //获取门锁的其他记录 var listOtherLog = this.GetDoorOtherHistoryLog(dateFrom, dateTo); listAllLog.AddRange(listOtherLog); //排序一下 var dicAllData = new Dictionary>(); var listSortTime = new List(); foreach (var data in listAllLog) { //按时间分组 if (dicAllData.ContainsKey(data.UnlockTime) == false) { dicAllData[data.UnlockTime] = new List(); listSortTime.Add(data.UnlockTime); } dicAllData[data.UnlockTime].Add(data); } //执行排序,时间大的在前面 listSortTime.Sort(); this.listHistoryInfo = new List(); for (int i = listSortTime.Count - 1; i >= 0; i--) { this.listHistoryInfo.AddRange(dicAllData[listSortTime[i]]); } //筛选历史记录 return this.ScreeningHistoryData(dicMemberName); } #endregion #region ■ 获取门锁其他记录___________________ /// /// 获取门锁的其他记录 /// /// private List GetDoorOtherHistoryLog(DateTime beginTime, DateTime endTime) { var listLog = new List(); //转为utc时间 var utcFrom = beginTime.ToUniversalTime(); var utcTo = endTime.ToUniversalTime(); //去另一张表去获取它的其他消息记录 var listMsg = HdlMessageLogic.Current.GetListMessageFromDb(); if (listMsg == null) { return listLog; } foreach (var msgInfo in listMsg) { //时间不是13位的都不理 if (msgInfo.CreateTime.Length != 13) { continue; } //获取门锁其他类信息上报 if (msgInfo.MessageTitle == "/Alarms/SendAlarmInform") { //判断是不是这个时间段 var checkDate = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(msgInfo.CreateTime); if (utcFrom <= checkDate && checkDate <= utcTo) { this.AdjustDoorOtherAlarmData(ref listLog, msgInfo); } } //从自动化中,获取常开模式记录 else if (msgInfo.MessageTitle == "/Logic/Execute_Respon") { //判断是不是这个时间段 var checkDate = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(msgInfo.CreateTime); if (utcFrom <= checkDate && checkDate <= utcTo) { this.AdjustDoorNormallyOpenData(ref listLog, msgInfo); } } //获取门锁临时密码开锁记录 else if (msgInfo.MessageTitle == "/DoorLock/DoorLockOperatingEventNotificationCommand") { //判断是不是这个时间段 var checkDate = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(msgInfo.CreateTime); if (utcFrom <= checkDate && checkDate <= utcTo) { this.AdjustDoorTemporaryPasswordData(ref listLog, msgInfo); } } } return listLog; } /// /// 处理门锁常开模式记录信息 /// /// /// private void AdjustDoorOtherAlarmData(ref List listLog, MessageRecordInfo i_msgData) { string doorKey = this.GetDoorId(); //设备对象 var jobject = Newtonsoft.Json.Linq.JObject.Parse(i_msgData.MessageExpand); string deviceAddr = jobject.Value("DeviceAddr"); int deviceEpoint = jobject.Value("Epoint"); if (doorKey != deviceAddr + "_" + deviceEpoint) { //不是同一个门锁的记录 return; } var data = new DoorHistoryLogInfo(); data.DeviceMac = deviceAddr; data.DeviceEpoint = deviceEpoint; //消息 var msgInfo = HdlAlarmsLogic.Current.GetDoorLockAlarmInfo(jobject); data.AlarmMsg = msgInfo != null ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uDoorLocksAlarmHadTriggered); //时间 data.UnlockTime = i_msgData.CreateTime; //主键 data.MsgKeyId = i_msgData.Id; //消息区分 if (msgInfo.MsgDiv == 9000) { data.UnLockMode = 9000; } listLog.Add(data); } /// /// 处理门锁常开模式信息上报 /// /// /// private void AdjustDoorNormallyOpenData(ref List listLog, MessageRecordInfo i_msgData) { string doorKey = this.GetDoorId(); var jobject = Newtonsoft.Json.Linq.JObject.Parse(i_msgData.MessageExpand); var myActionData = Newtonsoft.Json.JsonConvert.DeserializeObject(jobject["Data"].ToString()); if (myActionData.ActionData == null || myActionData.ActionData.Actiontype != 8) { //不是常开模式的自动化 return; } string deviceAddr = myActionData.ActionData.MacStr; int deviceEpoint = myActionData.ActionData.Epoint; if (doorKey != deviceAddr + "_" + deviceEpoint) { //不是同一个门锁的记录 return; } var data = new DoorHistoryLogInfo(); data.DeviceMac = deviceAddr; data.DeviceEpoint = deviceEpoint; //消息 if (myActionData.ActionData.PassDataString == "055704010112") { //常开模式开启(自动化触发) data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg11); } else if (myActionData.ActionData.PassDataString == "055704010113") { //常开模式结束(自动化触发) data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg12); } else { return; } //时间 data.UnlockTime = i_msgData.CreateTime; //主键 data.MsgKeyId = i_msgData.Id; //消息区分 data.UnLockMode = 9000; listLog.Add(data); } /// /// 处理门锁临时密码上报 /// /// /// private void AdjustDoorTemporaryPasswordData(ref List listLog, MessageRecordInfo i_msgData) { string doorKey = this.GetDoorId(); var jobject = Newtonsoft.Json.Linq.JObject.Parse(i_msgData.MessageExpand); string deviceAddr = jobject.Value("DeviceAddr"); int deviceEpoint = jobject.Value("Epoint"); if (doorKey != deviceAddr + "_" + deviceEpoint) { //不是同一个门锁的记录 return; } var myActionData = Newtonsoft.Json.JsonConvert.DeserializeObject(jobject["Data"].ToString()); if (myActionData.UserID != 246) { //不是临时密码 return; } var data = new DoorHistoryLogInfo(); data.DeviceMac = deviceAddr; data.DeviceEpoint = deviceEpoint; //消息 if (myActionData.OperationEventCode == 2) { //临时密码开锁成功 data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg13); } else { //临时密码开锁失败 data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg14); } //时间 data.UnlockTime = i_msgData.CreateTime; //主键 data.MsgKeyId = i_msgData.Id; listLog.Add(data); } #endregion #region ■ 清空记录___________________________ /// /// 清空所有记录 /// private void ClearAllHistoryLog() { DateTime dateFrom = new DateTime(dateFromControl.Year, dateFromControl.Month, dateFromControl.Day, 0, 0, 0); DateTime dateTo = new DateTime(dateToControl.Year, dateToControl.Month, dateToControl.Day, 23, 59, 59); //打开进度条 this.ShowProgressBar(); //不管结果 var result = HdlDeviceDoorLockLogic.Current.ClearAllDoorHistoryLog(this.GetDoorId(), dateFrom, dateTo, listOtherMsgId); //清空 this.listOtherMsgId = new List(); this.listHistoryInfo = null; HdlThreadLogic.Current.RunMain(() => { //重新刷新界面 this.InitLogListInfo(true); }); } #endregion #region ■ 一般方法___________________________ /// /// 获取访问云端的DoorID /// /// private string GetDoorId() { return this.DeviceDoor.DeviceAddr + "_" + this.DeviceDoor.DeviceEpoint; } #endregion #region ■ 结构体_____________________________ /// /// 临时密码数据 /// private class PasswordOperationData { /// /// 0:密码 15:指纹 3:IC卡 /// public int OperationEventSoure = -1; /// /// 2:开锁成功 /// public int OperationEventCode = -1; /// /// 246代表临时密码 /// public int UserID = -1; } #endregion } }