public static Mall_DoorDevice GetMall_DoorDeviceSDKKeyByID(int ID) { var data = Mall_DoorDevice.GetMall_DoorDevice(ID); if (data == null) { return(null); } if (data.IsDelete) { return(null); } DateTime now = DateTime.Now; if (string.IsNullOrEmpty(data.SDKKey) || data.SDKKeyExpireDate <= now) { data.SDKKey = string.Empty; data.SDKKeyExpireDate = DateTime.MinValue; string error = string.Empty; var response = Utility.LLingHelper.doQueryDeviceSDKKeyList(new int[] { data.DeviceID }, out error); if (response.ContainsKey(data.DeviceID)) { data.SDKKey = response[data.DeviceID]; data.SDKKeyExpireDate = now.AddDays(99); } data.Save(); } if (string.IsNullOrEmpty(data.SDKKey)) { return(null); } return(data); }
private static void UpdateMall_DoorDeviceOnLineStatus() { var db_list = Mall_DoorDevice.GetMall_DoorDevices().ToArray(); List <Mall_DoorDevice> all_device_list = new List <Mall_DoorDevice>(); var device_list = Utility.LLingHelper.doQueryDeviceList(); if (device_list.Count > 0) { foreach (var item in device_list) { var my_device = db_list.FirstOrDefault(p => p.DeviceID == item.deviceId); if (my_device == null) { my_device = new Mall_DoorDevice(); my_device.AddTime = DateTime.Now; my_device.DeviceID = item.deviceId; my_device.ProjectID = 0; my_device.AddUserName = "******"; my_device.DeviceName = item.deviceName; } my_device.IsDelete = false; my_device.Status = item.isOnline; my_device.DeviceCode = item.deviceCode; all_device_list.Add(my_device); } } List <int> DeviceIDList = device_list.Select(p => p.deviceId).ToList(); var useless_list = db_list.Where(p => !DeviceIDList.Contains(p.DeviceID)).ToArray(); foreach (var item in useless_list) { item.IsDelete = true; all_device_list.Add(item); } using (SqlHelper helper = new SqlHelper()) { try { helper.BeginTransaction(); foreach (var item in all_device_list) { item.Save(helper); } helper.Commit(); } catch (Exception) { helper.Rollback(); } } }
private void SetInfo(Foresight.DataAccess.Mall_DoorDevice data) { this.tdProjectID.Value = data.ProjectID > 0 ? data.ProjectID.ToString() : ""; this.tdDeviceName.Value = data.DeviceName; this.tdDeviceCode.Value = data.DeviceCode; this.tdUseForAll.Value = data.IsUseAll ? "1" : "2"; var list = Mall_DoorDeviceProject.GetMall_DoorDeviceProjectListByDeviceID(data.ID); if (list.Length > 0) { List <int> ProjectIDList = list.Select(p => p.ProjectID).ToList(); var projects = Foresight.DataAccess.Project.GetProjectListByIDs(ProjectIDList); if (projects.Length > 0) { this.hdRoomID.Value = JsonConvert.SerializeObject(projects.Select(p => p.ID).ToArray()); this.tdRoomID.Value = string.Join(",", projects.Select(p => p.Name).ToArray()); } } this.tdSortOrder.Value = data.SortOrder > 0 ? data.SortOrder.ToString("0") : ""; this.tdDisableQrCodeOpen.Value = data.DisableQrCodeOpen ? "0" : "1"; }
public static Ui.DataGrid GetMall_DoorCardDetailGridByKeywords(string keywords, long startRowIndex, int pageSize, List <int> ProjectIDList, List <int> RoomIDList, DateTime StartTime, DateTime EndTime) { long totalRows = 0; string OrderBy = " order by [CardName] asc, [SortOrder] asc, [AddTime] desc"; List <SqlParameter> parameters = new List <SqlParameter>(); List <string> conditions = new List <string>(); conditions.Add("1=1"); if (StartTime > DateTime.MinValue) { conditions.Add("Convert(nvarchar(10),[AddTime],120)>=@StartTime"); parameters.Add(new SqlParameter("@StartTime", StartTime)); } if (EndTime > DateTime.MinValue) { conditions.Add("Convert(nvarchar(10),[AddTime],120)<=@EndTime"); parameters.Add(new SqlParameter("@EndTime", EndTime)); } if (!string.IsNullOrEmpty(keywords)) { conditions.Add("([CardName] like @keywords or [CardSummary] like @keywords or [CardUID] like @keywords or [DoorNumber] like @keywords or ([ID] in (select [DoorCardID] from [Mall_DoorCardDevice] where [DoorDeviceID] in (select [DeviceID] from [Mall_DoorDevice] where [DeviceName] like @keywords))))"); parameters.Add(new SqlParameter("@keywords", "%" + keywords + "%")); } List <int> EqualIDList = new List <int>(); List <int> InIDList = new List <int>(); if (ProjectIDList.Count > 0 && RoomIDList.Count == 0) { Project.GetMyProjectListByProjectIDList(ProjectIDList, out EqualIDList, out InIDList); } List <string> cmdlist = new List <string>(); if (RoomIDList.Count > 0) { conditions.Add("exists(select 1 from [RoomPhoneRelation] where [ID]=[A].[RoomPhoneRelationID] and[RoomID] in (" + string.Join(",", RoomIDList.ToArray()) + "))"); } if (EqualIDList.Count > 0) { cmdlist.Add("[ProjectID] in (" + string.Join(",", EqualIDList.ToArray()) + ")"); cmdlist.Add("exists(select 1 from [RoomPhoneRelation] where [ID]=[A].[RoomPhoneRelationID] and exists(select 1 from [Project] where ID=[RoomPhoneRelation].[RoomID] and [ProjectID] in (" + string.Join(",", EqualIDList.ToArray()) + ")))"); conditions.Add("(" + string.Join(" or ", cmdlist.ToArray()) + ")"); } if (InIDList.Count > 0) { cmdlist = new List <string>(); foreach (var InID in InIDList) { cmdlist.Add("([ProjectID] in (select ID from [Project] where AllParentID like '%," + InID.ToString() + ",%'))"); cmdlist.Add("exists(select 1 from [RoomPhoneRelation] where [ID]=[A].[RoomPhoneRelationID] and exists(select 1 from [Project] where ID=[RoomPhoneRelation].[RoomID] and AllParentID like '%," + InID.ToString() + ",%'))"); } conditions.Add("(" + string.Join(" or ", cmdlist.ToArray()) + ")"); } string fieldList = "[A].*"; string Statement = " from (select *,(select top 1 [StartTime] from [RoomFeeHistory] where [ChargeID] in (select ID from [ChargeSummary] where [ChargeFeeType]=1) and ChargeState in (1,4) and [RoomID] in (select [RoomID] from [RoomPhoneRelation] where [ID]=[Mall_DoorCard].RoomPhoneRelationID) order by ChargeTime desc) as StartTime,(select top 1 [EndTime] from [RoomFeeHistory] where [ChargeID] in (select ID from [ChargeSummary] where [ChargeFeeType]=1) and ChargeState in (1,4) and [RoomID] in (select [RoomID] from [RoomPhoneRelation] where [ID]=[Mall_DoorCard].RoomPhoneRelationID) order by ChargeTime desc) as EndTime,(select top 1 [StartTime] from [RoomFee] where [ChargeID] in (select ID from [ChargeSummary] where [ChargeFeeType]=1) and [RoomID] in (select [RoomID] from [RoomPhoneRelation] where [ID]=[Mall_DoorCard].RoomPhoneRelationID) and StartTime is not null order by StartTime asc) as FeeStartTime from [Mall_DoorCard])A where " + string.Join(" and ", conditions.ToArray()); Mall_DoorCardDetail[] list = GetList <Mall_DoorCardDetail>(fieldList, Statement, parameters, OrderBy, startRowIndex, pageSize, out totalRows).ToArray(); if (list.Length > 0) { var mList = list.Where(p => p.UserID > 0).ToArray(); int MinUserID = 0; int MaxUserID = 0; if (mList.Length > 0) { MinUserID = mList.Min(p => p.UserID); MaxUserID = mList.Max(p => p.UserID); } var userList = User.GetSysUserList(IncludeLock: false, MinUserID: MinUserID, MaxUserID: MaxUserID); List <int> card_idlist = list.Select(p => p.ID).ToList(); var card_device_list = Mall_DoorCardDevice.GetMall_DoorCardDevices().Where(p => card_idlist.Contains(p.DoorCardID)).ToArray(); var device_list = Mall_DoorDevice.GetALLActiveMall_DoorDeviceList().ToArray(); mList = list.Where(p => p.RoomPhoneRelationID > 0).ToArray(); int MinID = 0; int MaxID = 0; if (mList.Length > 0) { MinID = mList.Min(p => p.RoomPhoneRelationID); MaxID = mList.Max(p => p.RoomPhoneRelationID); } var relationList = RoomPhoneRelation.GetRoomPhoneRelationListByMinMaxID(MinID, MaxID); int MinRoomID = 0; int MaxRoomID = 0; if (relationList.Length > 0) { MinRoomID = relationList.Min(p => p.RoomID); MaxRoomID = relationList.Max(p => p.RoomID); } var projectList = Project.GetProjectListByMinMaxID(MinRoomID, MaxRoomID); foreach (var item in list) { var my_card_device_list = card_device_list.Where(p => p.DoorCardID == item.ID).ToArray(); List <int> my_deviceidlist = my_card_device_list.Select(p => p.DoorDeviceID).ToList(); var my_device_list = device_list.Where(p => my_deviceidlist.Contains(p.DeviceID)).ToArray(); if (my_device_list.Length > 0) { item.DeviceInfo = string.Join(",", my_device_list.Select(p => { return("【" + p.DeviceID + "," + p.DeviceName + "】"); }).ToArray()); } var myRelation = relationList.FirstOrDefault(p => p.ID == item.RoomPhoneRelationID); if (myRelation != null) { var myProject = projectList.FirstOrDefault(p => p.ID == myRelation.RoomID); item.UserInfo = myRelation.RelationName; if (myProject != null) { item.UserInfo += "【" + myProject.FullName + "-" + myProject.Name + "】"; } } var myUser = userList.FirstOrDefault(q => q.LoginName == item.AddUserName); if (myUser != null) { item.AddUserName = myUser.FinalRealName; } } } DataAccess.Ui.DataGrid dg = new Ui.DataGrid(); dg.rows = list; dg.total = totalRows; dg.page = pageSize; return(dg); }
public static Ui.DataGrid GetMall_DoorRemoteUserDetailGridByKeywords(string keywords, long startRowIndex, int pageSize) { long totalRows = 0; string OrderBy = " order by [AddTime] desc"; List <SqlParameter> parameters = new List <SqlParameter>(); List <string> conditions = new List <string>(); conditions.Add("1=1"); if (!string.IsNullOrEmpty(keywords)) { conditions.Add("([Title] like @keywords or [UserID] in (select [UserID] from [User] where [NickName] like @keywords or [PhoneNumber] like @keywords) or [ProjectName] like @keywords)"); parameters.Add(new SqlParameter("@keywords", "%" + keywords + "%")); } string fieldList = "[Mall_DoorRemoteUser].*"; string Statement = " from [Mall_DoorRemoteUser] where " + string.Join(" and ", conditions.ToArray()); Mall_DoorRemoteUserDetail[] list = GetList <Mall_DoorRemoteUserDetail>(fieldList, Statement, parameters, OrderBy, startRowIndex, pageSize, out totalRows).ToArray(); DataAccess.Ui.DataGrid dg = new Ui.DataGrid(); dg.rows = list; if (list.Length > 0) { List <int> remote_idlist = list.Select(p => p.ID).ToList(); var remote_device_list = Mall_DoorRemoteUserDevice.GetMall_DoorRemoteUserDevices().Where(p => remote_idlist.Contains(p.DoorRemoteID)).ToArray(); int MinRelationID = list.Min(p => p.RoomPhoneRelationID); int MaxRelationID = list.Max(p => p.RoomPhoneRelationID); var device_list = Mall_DoorDevice.GetALLActiveMall_DoorDeviceList().ToArray(); var user_list = Foresight.DataAccess.RoomPhoneRelation.GetRoomPhoneRelationListByMinMaxID(MinRelationID, MaxRelationID); int MinRoomID = 0; int MaxRoomID = 0; if (user_list.Length > 0) { MinRoomID = user_list.Min(p => p.RoomID); MaxRoomID = user_list.Max(p => p.RoomID); } var projectList = Project.GetProjectListByMinMaxID(MinRoomID, MaxRoomID); foreach (var item in list) { var my_remote_device_list = remote_device_list.Where(p => p.DoorRemoteID == item.ID).ToArray(); List <int> my_deviceidlist = my_remote_device_list.Select(p => p.DoorDeviceID).ToList(); var my_device_list = device_list.Where(p => my_deviceidlist.Contains(p.DeviceID)).ToArray(); if (my_device_list.Length > 0) { item.DeviceInfo = string.Join(",", my_device_list.Select(p => { return("【" + p.DeviceID + "," + p.DeviceName + "】"); }).ToArray()); } var my_user = user_list.FirstOrDefault(p => p.ID == item.RoomPhoneRelationID); if (my_user != null) { item.NickName = my_user.RelationName; item.PhoneNumber = my_user.RelatePhoneNumber; var myProject = projectList.FirstOrDefault(p => p.ID == my_user.RoomID); if (myProject != null) { item.FullName = myProject.FullName + "-" + myProject.Name; item.RoomName = myProject.Name; } } } dg.rows = list; } dg.total = totalRows; dg.page = pageSize; return(dg); }
public static Mall_DoorDevice[] GetMall_DoorDeviceSDKKeyByUserID(int UserID, int SelfUserID = 0) { var project_list = Project.GetProjectListByAPPUserID(UserID, SelfUserID: SelfUserID); if (project_list.Length == 0) { return(new Mall_DoorDevice[] { }); } List <int> AllParentIDList = new List <int>(); foreach (var project in project_list) { string[] all_parent_project_ids = project.AllParentID.Split(',').ToArray(); foreach (var all_parent_id in all_parent_project_ids) { if (string.IsNullOrEmpty(all_parent_id)) { continue; } int AllParentID = 0; int.TryParse(all_parent_id, out AllParentID); if (AllParentID <= 0) { continue; } AllParentIDList.Add(AllParentID); } AllParentIDList.Add(project.ID); } if (AllParentIDList.Count == 0) { return(new Mall_DoorDevice[] { }); } var device_project_list = Mall_DoorDeviceProject.GetMall_DoorDeviceProjects().Where(p => AllParentIDList.Contains(p.ProjectID)).ToArray(); List <int> device_idlist = device_project_list.Select(p => p.DoorDeviceID).Distinct().ToList(); var list = Mall_DoorDevice.GetALLActiveMall_DoorDeviceList().Where(p => device_idlist.Contains(p.ID) || (p.IsUseAll && AllParentIDList.Contains(p.ProjectID))).ToArray(); if (list.Length == 0) { return(list); } DateTime now = DateTime.Now; var valid_list = list.Where(p => !string.IsNullOrEmpty(p.SDKKey) && p.SDKKeyExpireDate > now).ToList(); var invalid_list = list.Where(p => string.IsNullOrEmpty(p.SDKKey) || p.SDKKeyExpireDate <= now).ToList(); if (invalid_list.Count > 0) { string error = string.Empty; var response = Utility.LLingHelper.doQueryDeviceSDKKeyList(invalid_list.Select(p => p.DeviceID).ToArray(), out error); foreach (var item in invalid_list) { item.SDKKey = string.Empty; item.SDKKeyExpireDate = DateTime.MinValue; if (response.ContainsKey(item.DeviceID)) { item.SDKKey = response[item.DeviceID]; item.SDKKeyExpireDate = now.AddDays(99); } item.Save(); } } valid_list.AddRange(invalid_list); var results = valid_list.Where(p => !string.IsNullOrEmpty(p.SDKKey) && p.SDKKeyExpireDate > now).ToArray(); //Utility.LogHelper.WriteInfo("DeviceIDList." + UserID.ToString(), Utility.JsonConvert.SerializeObject(results.Select(p => p.DeviceName))); return(results); }