| | |
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using System.Text;
|
| | | using System.Threading.Tasks;
|
| | | using ZigBee.Device;
|
| | |
|
| | | namespace Shared.Phone.UserCenter.DeviceDoorLock
|
| | |
| | | /// 其他消息的主键,它存在另外的一张数据库表中
|
| | | /// </summary>
|
| | | private List<string> listOtherMsgId = new List<string>();
|
| | | /// <summary>
|
| | | /// 无法识别的开锁记录的用户ID(因为那个密码有可能没有分配给成员)
|
| | | /// </summary>
|
| | | private List<string> listOtherUserId = new List<string>();
|
| | |
|
| | | #endregion
|
| | |
|
| | |
| | | //设置头部信息 |
| | | base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryLog)); |
| | | |
| | | //删除 |
| | | var btnDelete = new MostRightIconControl(69, 69); |
| | | btnDelete.UnSelectedImagePath = "Item/DeleteIcon2Selected.png"; |
| | | topFrameLayout.AddChidren(btnDelete); |
| | | btnDelete.InitControl(); |
| | | btnDelete.ButtonClickEvent += (sender, e) =>
|
| | | //成员不允许清空记录 |
| | | if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
|
| | | {
|
| | | var form = new TopRightMenuControl(1, 2);
|
| | | //清空记录
|
| | | form.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uClearLog), "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
|
| | | //删除
|
| | | var btnDelete = new MostRightIconControl(69, 69);
|
| | | btnDelete.UnSelectedImagePath = "Item/DeleteIcon2Selected.png";
|
| | | topFrameLayout.AddChidren(btnDelete);
|
| | | btnDelete.InitControl();
|
| | | btnDelete.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | if (this.listView.frameTable.ChildrenCount == 0)
|
| | | var form = new TopRightMenuControl(1, 2);
|
| | | //清空记录
|
| | | form.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uClearLog), "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
|
| | | {
|
| | | //无数据可删
|
| | | return;
|
| | | }
|
| | | //确认清空当前记录?
|
| | | this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uConfirmClearNowLog), () =>
|
| | | {
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | if (this.listView.frameTable.ChildrenCount == 0)
|
| | | {
|
| | | //清空所有记录
|
| | | this.ClearAllHistoryLog();
|
| | | //无数据可删
|
| | | return;
|
| | | }
|
| | | //确认清空当前记录?
|
| | | this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uConfirmClearNowLog), () =>
|
| | | {
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | //清空所有记录
|
| | | this.ClearAllHistoryLog();
|
| | | });
|
| | | });
|
| | | });
|
| | | });
|
| | | }; |
| | | };
|
| | | } |
| | | |
| | | //初始化中部信息 |
| | | this.InitMiddleFrame(); |
| | |
| | | this.listHistoryInfo = null;
|
| | | }
|
| | |
|
| | | HdlThreadLogic.Current.RunThread(async () =>
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | //打开进度条
|
| | | this.ShowProgressBar();
|
| | | //成员列表
|
| | | var result = await this.GetMemberListInfo();
|
| | | var result = this.GetMemberListInfo();
|
| | | if (result == false)
|
| | | {
|
| | | //关闭进度条
|
| | |
| | | dicMemberName.Add(listMenberInfo[i].SubAccountDistributedMark, string.IsNullOrEmpty(listMenberInfo[i].UserName) == false ? listMenberInfo[i].UserName : listMenberInfo[i].Account);
|
| | | }
|
| | | //历史记录
|
| | | var historyLog = await this.GetHistoryLogInfo(dicMemberName);
|
| | | var historyLog = this.GetHistoryLogInfo(dicMemberName);
|
| | | if (historyLog == null)
|
| | | {
|
| | | //关闭进度条
|
| | |
| | | /// 获取成员列表信息
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private async Task<bool> GetMemberListInfo()
|
| | | private bool GetMemberListInfo()
|
| | | {
|
| | | if (listMenberInfo != null)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | var pra = new MemberListInfoPra();
|
| | | string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
|
| | | if (result == null)
|
| | | string result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
|
| | | if (string.IsNullOrEmpty(result) == true)
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
| | | {
|
| | | var frameTable = new FrameRowControl(listView.rowSpace / 2);
|
| | | frameTable.UseClickStatu = false;
|
| | | this.listView.AddChidrenFrame2(frameTable);
|
| | | this.listView.AddChidren2(frameTable);
|
| | | //图标
|
| | | var btnIcon = frameTable.AddLeftIcon();
|
| | | //信息
|
| | |
| | | //IC卡开锁成功
|
| | | btnMsg.TextID = R.MyInternationalizationString.uUnlockByICcardSuccess;
|
| | | }
|
| | | else if (historyInfo.OpenLockMode == 13)
|
| | | {
|
| | | //静脉纹开锁成功
|
| | | btnMsg.TextID = R.MyInternationalizationString.uStriaVenosusUnLockSuccess;
|
| | | }
|
| | | else if (historyInfo.OpenLockMode == 14)
|
| | | {
|
| | | //人脸识别开锁成功
|
| | | btnMsg.TextID = R.MyInternationalizationString.uFaceRecognitionUnLockSuccess;
|
| | | }
|
| | | else if (historyInfo.OpenLockMode == 15)
|
| | | {
|
| | | //指纹开锁成功
|
| | |
| | | {
|
| | | //IC卡开锁失败
|
| | | btnMsg.TextID = R.MyInternationalizationString.uUnlockByICcardFail;
|
| | | }
|
| | | else if (historyInfo.OpenLockMode == 13)
|
| | | {
|
| | | //静脉纹开锁失败
|
| | | btnMsg.TextID = R.MyInternationalizationString.uStriaVenosusUnLockFail;
|
| | | }
|
| | | else if (historyInfo.OpenLockMode == 14)
|
| | | {
|
| | | //人脸识别开锁失败
|
| | | btnMsg.TextID = R.MyInternationalizationString.uFaceRecognitionUnLockFail;
|
| | | }
|
| | | else if (historyInfo.OpenLockMode == 15)
|
| | | {
|
| | |
| | | //历史记录太麻烦了,存在不同的数据库表里,并且数据还不一样,只能这样一个个判断了
|
| | | var listScreeningData = new List<HistoryInfo>();
|
| | | //清除掉之前的记录
|
| | | this.listOtherUserId = new List<string>();
|
| | | this.listOtherMsgId = new List<string>();
|
| | |
|
| | | //是否选择全选用户
|
| | |
| | | this.listOtherMsgId.Add(info.MsgKeyId);
|
| | | }
|
| | | }
|
| | | if (info.CloudAccountId != string.Empty && dicMemberName.ContainsKey(info.CloudAccountId) == false
|
| | | && this.listOtherUserId.Contains(info.CloudAccountId) == false)
|
| | | {
|
| | | //无法识别的开锁记录的用户ID(因为那个密码有可能没有分配给成员)
|
| | | this.listOtherUserId.Add(info.CloudAccountId);
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | |
| | | /// 获取历史记录
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private async Task<List<HistoryInfo>> GetHistoryLogInfo(Dictionary<string, string> dicMemberName)
|
| | | private List<HistoryInfo> GetHistoryLogInfo(Dictionary<string, string> dicMemberName)
|
| | | {
|
| | | if (this.listHistoryInfo != null)
|
| | | {
|
| | |
| | | var pra = this.GetReadHistoryPra();
|
| | |
|
| | | //获取门锁的打开和关闭记录
|
| | | var listAllLog = await this.GetDoorOpenHistoryLog(pra);
|
| | | var listAllLog = this.GetDoorOpenHistoryLog(pra);
|
| | | //获取门锁的其他记录
|
| | | var listOtherLog = await this.GetDoorOtherHistoryLog(pra.UnlockTimeBegin, pra.UnlockTimeEnd);
|
| | | var listOtherLog = this.GetDoorOtherHistoryLog(pra.UnlockTimeBegin, pra.UnlockTimeEnd);
|
| | | listAllLog.AddRange(listOtherLog);
|
| | |
|
| | | //排序一下
|
| | |
| | | /// </summary>
|
| | | /// <param name="i_pra"></param>
|
| | | /// <returns></returns>
|
| | | private async Task<List<HistoryInfo>> GetDoorOpenHistoryLog(GetHistoryDataPra i_pra)
|
| | | private List<HistoryInfo> GetDoorOpenHistoryLog(GetHistoryDataPra i_pra)
|
| | | {
|
| | | var listLog = new List<HistoryInfo>();
|
| | |
|
| | |
| | | while (true)
|
| | | {
|
| | | //访问云端
|
| | | var result = await UserCenterLogic.GetResponseDataByRequestHttps("DoorLock/GetDoorLockHistoryPager", true, i_pra);
|
| | | if (result == null)
|
| | | var result = UserCenterLogic.GetResponseDataByRequestHttps("DoorLock/GetDoorLockHistoryPager", true, i_pra);
|
| | | if (string.IsNullOrEmpty(result) == true)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
| | | if (data.OpenLockMode == 9000 && data.OtherOpenLockMode <= 9000)
|
| | | {
|
| | | continue;
|
| | | }
|
| | | if (data.CloudAccountId == null)
|
| | | {
|
| | | data.CloudAccountId = string.Empty;
|
| | | }
|
| | | listLog.Add(data);
|
| | | }
|
| | |
| | | /// 获取门锁的其他记录
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private async Task<List<HistoryInfo>> GetDoorOtherHistoryLog(string beginTime, string endTime)
|
| | | private List<HistoryInfo> GetDoorOtherHistoryLog(string beginTime, string endTime)
|
| | | {
|
| | | var listLog = new List<HistoryInfo>();
|
| | |
|
| | |
| | | pra2.EndTime = endTime;
|
| | | pra2.Topic = "/Alarms/SendAlarmInform";
|
| | | pra2.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
|
| | | var result = await UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
|
| | | if (result == null)
|
| | | var result = UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
|
| | | if (string.IsNullOrEmpty(result) == true)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
| | |
|
| | | //从自动化中,获取常开模式记录
|
| | | pra2.Topic = "/Logic/Execute_Respon";
|
| | | result = await UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
|
| | | if (result == null)
|
| | | result = UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
|
| | | if (string.IsNullOrEmpty(result) == true)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
| | |
|
| | | //获取门锁临时密码开锁记录
|
| | | pra2.Topic = "/DoorLock/DoorLockOperatingEventNotificationCommand";
|
| | | result = await UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
|
| | | if (result == null)
|
| | | result = UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
|
| | | if (string.IsNullOrEmpty(result) == true)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
| | | /// <summary>
|
| | | /// 清空所有记录
|
| | | /// </summary>
|
| | | private async void ClearAllHistoryLog()
|
| | | private void ClearAllHistoryLog()
|
| | | {
|
| | | //获取访问云端接口的启动参数
|
| | | //获取访问云端接口的启动参数(2020.05.08:全部清空)
|
| | | var pra = this.GetDeleteDataPra();
|
| | |
|
| | | //打开进度条
|
| | | this.ShowProgressBar();
|
| | | var result = await UserCenterLogic.GetResultStatuByRequestHttps("DoorLock/ClearDoorLockHistory", true, pra);
|
| | | var result = UserCenterLogic.GetResultStatuByRequestHttps("DoorLock/ClearDoorLockHistory", true, pra);
|
| | | if (result == false)
|
| | | {
|
| | | return;
|
| | |
| | | for (int i = 0; i < listOtherMsgId.Count; i++)
|
| | | {
|
| | | pra2.Id = listOtherMsgId[i];
|
| | | result = await UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/DelMessageCenterItem", true, pra2);
|
| | | result = UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/DelMessageCenterItem", true, pra2);
|
| | | if (result == false)
|
| | | {
|
| | | return;
|
| | |
| | |
|
| | | //清空
|
| | | this.listOtherMsgId = new List<string>();
|
| | | this.listOtherUserId = new List<string>();
|
| | | this.listHistoryInfo = null;
|
| | |
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | |
| | | 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);
|
| | |
|
| | | List<string> listUser = null;
|
| | | //指定用户
|
| | | if (listSearchUserId.Contains("-1") == false)
|
| | | {
|
| | | listUser = new List<string>();
|
| | | listUser.AddRange(listSearchUserId);
|
| | | //如果指定有其他
|
| | | if (listSearchUserId.Contains("-9999") == true)
|
| | | {
|
| | | listUser.AddRange(this.listOtherUserId);
|
| | | }
|
| | | }
|
| | |
|
| | | //全选则为null
|
| | | List<int> listLock = null;
|
| | | if (listSearchLockId.Contains(-1) == false)
|
| | | {
|
| | | listLock = new List<int>();
|
| | | listLock.AddRange(listSearchLockId);
|
| | | }
|
| | |
|
| | | var pra = new DeleteHistoryDataPra();
|
| | | pra.UnlockTimeBegin = dateFrom.ToUniversalTime().ToString();
|
| | | pra.UnlockTimeEnd = dateTo.ToUniversalTime().ToString();
|
| | | pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
|
| | | pra.DoorLockId = this.DeviceDoor.DeviceAddr + "_" + this.DeviceDoor.DeviceEpoint;
|
| | | pra.CloudAccountIds = listUser;
|
| | | pra.OpenLockModes = listLock;
|
| | |
|
| | | return pra;
|
| | | }
|
| | |
| | | private class HistoryInfo
|
| | | {
|
| | | /// <summary>
|
| | | /// 开锁方式 0:密码 15:指纹 3:IC卡 9000:常开模式(自定义的)
|
| | | /// 开锁方式 0:密码 13:静脉纹 14:人脸识别 15:指纹 3:IC卡 9000:常开模式(自定义的)
|
| | | /// </summary>
|
| | | public int OpenLockMode = -1;
|
| | | /// <summary>
|