public IEnumerable <AttendanceModel> Page(string pattern, int page, int size, out int count) { var officerHandler = new OfficerHandle(Repository); var atdHandler = new OfficerAttendanceHandle(Repository); var orgHandler = new OrganizationHandle(Repository); var noDel = (short)DeleteStatus.No; var query = from atd in atdHandler.All(null) join ocr in officerHandler.All(t => t.IsDel == noDel) on atd.OfficerId equals ocr.Id join org in orgHandler.All(t => t.IsDel == noDel) on ocr.OrgId equals org.Id select new { officer = ocr, attendance = atd, org = org }; if (!string.IsNullOrWhiteSpace(pattern)) { query = query.Where(t => t.officer.Name.Contains(pattern) || t.officer.IdentyCode.Contains(pattern)); } if (!User.IsSupperAdministrator) { var orgId = User.Organization.Id; query = query.Where(t => t.officer.OrgId == orgId); } count = query.Count(); var skipCount = (page - 1) * size; var items = query.OrderByDescending(t => t.attendance.STime).Skip(skipCount).Take(size).ToArray() .Select(t => new AttendanceModel { attendance = t.attendance, officer = t.officer, org = t.org }); return(items); }
public IEnumerable <OfficerModel> Page(string orgId, string ptId, string name, string code, int page, int size, out int count) { using (var officerHandler = new OfficerHandle(Repository)) using (var userHandler = new UserHandle(Repository)) using (var orgHandler = new OrganizationHandle(Repository)) using (var ptpHandler = new PoliceTypeHandle(Repository)) { var noDel = (short)DeleteStatus.No; var query = from officer in officerHandler.All(t => t.IsDel == noDel) join useritem in userHandler.All(t => t.IsDel == noDel) on officer.UserId equals useritem.Id into usrs from usr in usrs.DefaultIfEmpty(new User { }) join org in orgHandler.All(t => t.IsDel == noDel) on officer.OrgId equals org.Id join ptp in ptpHandler.All(t => t.IsDel == noDel) on officer.PtId equals ptp.Id select new { officer = officer, usr = usr, org = org, ptp = ptp }; if (!string.IsNullOrWhiteSpace(name)) { query = query.Where(t => t.officer.Name.Contains(name)); } if (!string.IsNullOrWhiteSpace(code)) { query = query.Where(t => t.officer.IdentyCode.Contains(code)); } if (!string.IsNullOrWhiteSpace(ptId)) { query = query.Where(t => t.officer.PtId == ptId); } if (!string.IsNullOrWhiteSpace(orgId)) { query = query.Where(t => t.officer.OrgId == orgId); } if (string.IsNullOrWhiteSpace(orgId) && !User.IsSupperAdministrator) { orgId = User.Organization.Id; query = query.Where(t => t.officer.OrgId == orgId); } count = query.Count(); var skipCount = (page - 1) * size; var items = query.OrderByDescending(t => t.officer.SignupDate).Skip(skipCount).Take(size).ToArray() .Select(t => new OfficerModel { officer = t.officer, org = t.org, ptp = t.ptp, user = t.usr }); return(items); } }
public IEnumerable <CabinetModel> Page(string orgId, string name, int page, int size, out int count) { using (var cabinetHandler = new CabinetHandle(Repository)) using (var orgHandler = new OrganizationHandle(Repository)) using (var officerHandler = new OfficerHandle(Repository)) using (var siteHandler = new SiteHandle(Repository)) { var noDel = (short)DeleteStatus.No; var query = from cab in cabinetHandler.All(t => t.IsDel == noDel) join org in orgHandler.All(t => t.IsDel == noDel) on cab.OrgId equals org.Id join officer in officerHandler.All(t => t.IsDel == noDel) on cab.OfficerId equals officer.Id into officers from off in officers.DefaultIfEmpty(new Officer { }) join site in siteHandler.All(t => t.IsDel == noDel) on cab.StationId equals site.Id into sites from sta in sites.DefaultIfEmpty(new Station { }) select new { cab = cab, org = org, officer = off, sta = sta }; if (!string.IsNullOrWhiteSpace(name)) { query = query.Where(t => t.cab.Name.Contains(name)); } if (!string.IsNullOrWhiteSpace(orgId)) { query = query.Where(t => t.cab.OrgId == orgId); } if (string.IsNullOrWhiteSpace(orgId) && !User.IsSupperAdministrator) { var code = User.Organization.Code; query = query.Where(t => t.org.Code.StartsWith(code)); } count = query.Count(); var skipCount = (page - 1) * size; var items = query.OrderBy(t => t.sta.OrgId).Skip(skipCount).Take(size).ToArray() .Select(t => new CabinetModel { officer = t.officer, org = t.org, cabinet = t.cab }); return(items); } }
public IEnumerable <PoliceTypeStandardEquipment> FeatchAll(string orgId) { using (var cateHandler = new EqtTypeHandle(Repository)) using (var stdHandler = new StandardEquipmentHandle(Repository)) using (var orgHandler = new OrganizationHandle(Repository)) { var noDel = (short)DeleteStatus.No; var query = from ptp in Handler.All(t => t.IsDel == noDel) join org in orgHandler.All(t => t.IsDel == noDel) on ptp.OrgId equals org.Id join stditem in stdHandler.All(t => t.IsDel == noDel) on ptp.Id equals stditem.PtId into stds from std in stds.DefaultIfEmpty(new StandardEquipment { }) join cateitem in cateHandler.All(t => t.IsDel == noDel) on std.CateId equals cateitem.Id into cates from cate in cates.DefaultIfEmpty(new EqtCategory { }) select new { ptp = ptp, org = org, std = std, cate = cate }; if (!User.IsSupperAdministrator && string.IsNullOrWhiteSpace(orgId)) { orgId = string.IsNullOrWhiteSpace(orgId) ? User.Organization.Id : orgId; query = query.Where(t => t.ptp.OrgId == orgId); } if (!string.IsNullOrWhiteSpace(orgId)) { query = query.Where(t => t.ptp.OrgId == orgId); } var items = query.ToArray().GroupBy(t => new { ptpId = t.std.PtId, cateId = t.std.CateId, pk = t.std.IsPrimary, rq = t.std.IsRequire }).Select( t => { var item = t.First(); item.std.Num = (short)(t.Sum(x => x.std.Num)); return(item); }).Select( t => new PoliceTypeStandardEquipment { category = t.cate, equipment = t.std, org = t.org, type = t.ptp }); return(items.OrderBy(t => t.category.Id).OrderBy(t => t.equipment.Num)); } }
public IEnumerable <Role> FeatchAll(string orgId) { using (var orgHandler = new OrganizationHandle(Repository)) using (var roleHandler = new RoleHandle(Repository)) { var parentOrg = orgHandler.First(t => t.Id == orgId); var parentCode = parentOrg.Code; var noDel = (short)DeleteStatus.No; var query = from role in roleHandler.All(t => t.IsDel == noDel) join org in orgHandler.All(t => t.IsDel == noDel) on role.OrgId equals org.Id where org.Code.StartsWith(parentCode) select new { role = role, org = org }; var items = query.ToArray(); var data = items.Select(t => t.role).ToArray(); return(data); } }
public IEnumerable <AccountModel> Page(string orgId, string roleId, int page, int size, out int count) { var noDel = (short)DeleteStatus.No; using (var userHandler = new UserHandle(Repository)) using (var roleHandler = new RoleHandle(Repository)) using (var orgHandler = new OrganizationHandle(Repository)) { var query = from usr in userHandler.All(t => t.IsDel == noDel) join ritem in roleHandler.All(t => t.IsDel == noDel) on usr.RoleId equals ritem.Id into rls from role in rls.DefaultIfEmpty(new Role { }) join orgitem in orgHandler.All(t => t.IsDel == noDel) on usr.OrgId equals orgitem.Id into orgs from org in orgs.DefaultIfEmpty(new Organization { }) select new { usr = usr, role = role, org = org }; var roleEmp = string.IsNullOrWhiteSpace(roleId); if (!roleEmp) { query = query.Where(t => t.role.Id == roleId); } if (roleEmp && !User.IsSupperAdministrator) { orgId = string.IsNullOrWhiteSpace(orgId) ? User.Organization.Id : orgId; query = query.Where(t => t.org.Pid == orgId); } count = query.Count(); var skipCount = (page - 1) * size; return (query.OrderBy(t => t.usr.SignupDate).Skip(skipCount).Take(size).ToArray().Select(t => new AccountModel { org = t.org, role = t.role, user = t.usr }).ToArray()); } }
public IEnumerable <RoleFeatureModel> FeatchAll() { var noDel = (short)DeleteStatus.No; using (var featureHandler = new FeatureHandle(Repository)) using (var roleHandler = new RoleHandle(Repository)) using (var menuHandler = new MenuHandle(Repository)) using (var orgHandler = new OrganizationHandle(Repository)) { var query = from role in roleHandler.All(t => t.IsDel == noDel) join featureitem in featureHandler.All(t => t.IsDel == noDel) on role.Id equals featureitem.RoleId into features from feature in features.DefaultIfEmpty(new Feature { }) join menuitem in menuHandler.All(t => t.IsDel == noDel) on feature.MenuId equals menuitem.Id into menus from menu in menus.DefaultIfEmpty(new Menu { }) select new { feature = feature, role = role, menu = menu }; if (!User.IsSupperAdministrator) { var orgcode = User.Organization.Code; var orgs = orgHandler.All(t => t.IsDel == noDel && t.Code.StartsWith(orgcode)).Select(t => t.Id).ToArray(); query = query.Where(t => orgs.Any(x => t.role.OrgId == x)); } var data = query.ToArray().GroupBy(t => t.role).Select( t => new RoleFeatureModel { role = t.Key, menus = t.GroupBy(x => x.menu).Select(x => new RoleMenuFeatureModel { menu = x.Key, role = t.Key, features = Union(x.Select(f => f.feature)).ToArray() }).ToArray() }).ToArray(); return(data); } }
public IEnumerable <StationModel> Page(string orgId, string siteId, int page, int size, out int count) { var staHandler = new StationHandle(Repository); var orgHandler = new OrganizationHandle(Repository); var noDel = (short)DeleteStatus.No; var query = from sta in staHandler.All(t => t.IsDel == noDel) join orgitem in orgHandler.All(t => t.IsDel == noDel) on sta.OrgId equals orgitem.Id into orgs from org in orgs.DefaultIfEmpty(new Organization { }) select new { sta = sta, org = org }; if (!string.IsNullOrWhiteSpace(siteId)) { query = query.Where(t => t.sta.SiteId.Contains(siteId)); } if (string.IsNullOrWhiteSpace(orgId) && !User.IsSupperAdministrator) { orgId = User.Organization.Id; } if (!string.IsNullOrEmpty(orgId)) { query = query.Where(t => t.sta.OrgId == orgId); } count = query.Count(); var skipCount = (page - 1) * size; var items = query.Skip(skipCount).Take(size).ToArray() .Select(t => new StationModel { org = t.org, station = t.sta }); return(items); }
public IEnumerable <OfficerAttendanceQueryModel> AttendanceSelect(string pattern, DateTime stime, DateTime etime) { var ocrHandler = new OfficerHandle(Repository); var orgHandler = new OrganizationHandle(Repository); var ptHandler = new PoliceTypeHandle(Repository); var atdHandler = new OfficerAttendanceHandle(Repository); var noDel = (short)DeleteStatus.No; var query = from atd in atdHandler.All(null) join ocr in ocrHandler.All(t => t.IsDel == noDel) on atd.OfficerId equals ocr.Id join org in orgHandler.All(t => t.IsDel == noDel) on ocr.OrgId equals org.Id join ptp in ptHandler.All(t => t.IsDel == noDel) on ocr.PtId equals ptp.Id select new { atd = atd, ocr = ocr, org = org, ptp = ptp }; if (!string.IsNullOrWhiteSpace(pattern)) { query = query.Where(t => t.ocr.Name.Contains(pattern) || t.ocr.IdentyCode.Contains(pattern)); } if (!User.IsSupperAdministrator) { var orgId = User.Organization.Id; query = query.Where(t => t.org.Id == orgId); } var items = query.OrderBy(t => t.ocr.Id).OrderByDescending(t => t.atd.STime).ToArray(); if (0 == items.Count()) { return(new OfficerAttendanceQueryModel[0]); } var sttime = items.Select(t => t.atd.STime).Min(); var ettime = DateTime.Now.ToUnixTime(); if (!items.Any(t => t.atd.ETime == 0L)) { ettime = items.Select(t => t.atd.ETime).Max(); } var ids = items.Select(t => t.atd.OfficerId).Distinct().ToArray(); var tracks = OfficerTracks(sttime, ettime, ids); var data = items.Select(t => { var m = new OfficerAttendanceQueryModel { atd = t.atd, officer = t.ocr, org = t.org, ptp = t.ptp }; var sdtime = t.atd.STime; var edtime = ettime; if (t.atd.ETime != 0L) { edtime = t.atd.ETime; } m.tracks = tracks.Where(x => x.track.OfficerId == t.atd.OfficerId && x.track.UpTime >= sdtime && x.track.UpTime <= edtime); return(m); }); return(data); }
// 矩形选择 public IEnumerable <OfficerDispatchQueryModel> RectangleSelect(double x1, double y1, double x2, double y2) { var lcHandler = new OfficerLocationHandle(Repository); var ocHandler = new OfficerHandle(Repository); var orgHandler = new OrganizationHandle(Repository); var ptHandler = new PoliceTypeHandle(Repository); var stHandler = new StationHandle(Repository); var noDel = (short)DeleteStatus.No; var query = from lc in lcHandler.All(null) join oc in ocHandler.All(t => t.IsDel == noDel) on lc.OfficerId equals oc.Id join org in orgHandler.All(t => t.IsDel == noDel) on oc.OrgId equals org.Id join ptp in ptHandler.All(t => t.IsDel == noDel) on oc.PtId equals ptp.Id join sts in stHandler.All(t => t.IsDel == noDel) on lc.SiteId equals sts.SiteId into stas from st in stas.DefaultIfEmpty(new Station { }) select new { location = lc, officer = oc, org = org, ptp = ptp, station = st }; // 此处进一步查询 if (!User.IsSupperAdministrator) { var orgId = User.Organization.Id; query = query.Where(t => t.org.Id == orgId); } var xmin = x1; var xmax = x2; if (x1 > x2) { xmax = x1; xmin = x2; } var ymin = y1; var ymax = y2; if (y1 > y2) { ymin = y2; ymax = y1; } var items = query.OrderByDescending(t => t.location.UpTime).ToArray() .Select(t => { OfficerDispatchQueryModel m = null; if (string.IsNullOrWhiteSpace(t.station.SiteId) || (t.station.Lon >= xmin && t.station.Lon <= xmax && t.station.Lat >= ymin && t.station.Lat <= ymax) ) { m = new OfficerDispatchQueryModel { location = t.location, officer = t.officer, org = t.org, ptp = t.ptp, station = t.station }; } return(m); }).Where(t => t != null).ToArray(); return(items); }
/// <summary> /// 使用用户名和密码获取用户内容 /// </summary> /// <param name="userId">用户名</param> /// <param name="passwd">密码</param> /// <param name="user">返回的用户信息</param> /// <returns></returns> public AccountLoginStatus Signin(string userId, string passwd, out UserInfo user) { var userHandler = new UserHandle(Repository); var roleHandler = new RoleHandle(Repository); var officerHandler = new OfficerHandle(Repository); var orgHandler = new OrganizationHandle(Repository); var featureHandler = new FeatureHandle(Repository); var menuHandler = new MenuHandle(Repository); var isDel = (short)DeleteStatus.No; var query = from usr in userHandler.All(t => t.Account == userId && t.IsDel == isDel) join orgitem in orgHandler.All(t => t.IsDel == isDel) on usr.OrgId equals orgitem.Id into orgarr from org in orgarr.DefaultIfEmpty(new data.entity.Organization()) join officeritem in officerHandler.All(t => t.IsDel == isDel) on usr.Id equals officeritem.UserId into officers from officer in officers.DefaultIfEmpty(new data.entity.Officer()) join roleitem in roleHandler.All(t => t.IsDel == isDel) on usr.RoleId equals roleitem.Id into roles from role in roles.DefaultIfEmpty(new data.entity.Role()) join fitem in featureHandler.All(t => t.IsDel == isDel) on role.Id equals fitem.RoleId into farr from feature in farr.DefaultIfEmpty(new data.entity.Feature()) join mitem in menuHandler.All(t => t.IsDel == isDel) on feature.MenuId equals mitem.Id into marr from menu in marr.DefaultIfEmpty(new data.entity.Menu()) select new { usr = usr, org = org, officer = officer, role = role, feature = feature, menu = menu }; user = query .GroupBy(t => new { usr = t.usr, org = t.org, officer = t.officer, role = t.role }) .ToArray() .Select(t => new UserInfo { User = t.Key.usr, Officer = t.Key.officer, Organization = t.Key.org, Role = t.Key.role, Features = t.Select(x => x.feature).Where(x => !string.IsNullOrWhiteSpace(x.MenuId)), Menus = t.Select(x => x.menu).Where(x => !string.IsNullOrWhiteSpace(x.Title)) }) .FirstOrDefault(); if (user == null) { return(AccountLoginStatus.UserNoExist); } if (user.User.Passwd != EscapePassword(userId, passwd)) { return(AccountLoginStatus.PasswordError); } if (user.User.Status == (int)AccountStatus.Exception) { return(AccountLoginStatus.ExceptionAccount); } if (user.User.Status == (int)AccountStatus.Locked) { return(AccountLoginStatus.LockedAccount); } user.User.SigninStatus = (short)AccountSigninStatus.Online; if (null == userHandler.Modify(user.User, true)) { return(AccountLoginStatus.Error); } return(AccountLoginStatus.Success); }
public IEnumerable <EquipmentModel> Page(string orgId, string storageId, string cabinetId, string tagCode, string factorCode, short dataType, int page, int size, out int count) { using (var eqtHandler = new EquipmentHandle(Repository)) using (var cateHandler = new EqtTypeHandle(Repository)) using (var stgHandler = new StorageHandle(Repository)) using (var cabHandler = new CabinetHandle(Repository)) using (var orgHandler = new OrganizationHandle(Repository)) using (var offHandler = new OfficerHandle(Repository)) { var noDel = (short)DeleteStatus.No; var query = from eqt in eqtHandler.All(t => t.IsDel == noDel) join org in orgHandler.All(t => t.IsDel == noDel) on eqt.OrgId equals org.Id join cate in cateHandler.All(t => t.IsDel == noDel) on eqt.CateId equals cate.Id join stg in stgHandler.All(t => t.IsDel == noDel) on eqt.LibId equals stg.Id join cabitem in cabHandler.All(t => t.IsDel == noDel) on eqt.CabId equals cabitem.Id into cabs from cab in cabs.DefaultIfEmpty(new Cabinet { }) join offitem in offHandler.All(t => t.IsDel == noDel) on eqt.OfficerId equals offitem.Id into offs from off in offs.DefaultIfEmpty(new Officer { }) select new { eqt = eqt, org = org, cate = cate, stg = stg, cab = cab, officer = off }; if (!string.IsNullOrWhiteSpace(storageId)) { query = query.Where(t => t.eqt.LibId == storageId); } if (!string.IsNullOrWhiteSpace(cabinetId)) { query = query.Where(t => t.eqt.CabId == cabinetId); } if (!string.IsNullOrWhiteSpace(tagCode)) { query = query.Where(t => t.eqt.TagId.Contains(tagCode)); } if (!string.IsNullOrWhiteSpace(factorCode)) { query = query.Where(t => t.eqt.FactorCode.Contains(factorCode)); } if (!string.IsNullOrWhiteSpace(orgId)) { query = query.Where(t => t.eqt.OrgId == orgId); } if (string.IsNullOrWhiteSpace(orgId) && !User.IsSupperAdministrator) { orgId = User.Organization.Id; query = query.Where(t => t.eqt.OrgId == orgId); } var dispatchStatus = 0; // 布控中 if (dataType == (short)QueryEqtDataType.Dispatching) { dispatchStatus = (short)DispatchedStatus.Doing; query = query.Where(t => t.eqt.Dispatched == dispatchStatus); } // 撤控 if (dataType == (short)QueryEqtDataType.Dispatched) { dispatchStatus = (short)DispatchedStatus.Done; query = query.Where(t => t.eqt.Dispatched == dispatchStatus); } var now = DateTime.Now.ToUnixTime(); // 已过期 if (dataType == (short)QueryEqtDataType.Expired) { query = query.Where(t => t.eqt.ExpiredTime <= now); } // 即将过期 if (dataType == (short)QueryEqtDataType.PreExpired) { var preDate = DateTime.Now.AddDays(PreExpiredInterval).ToUnixTime(); query = query.Where(t => t.eqt.ExpiredTime >= preDate && t.eqt.ExpiredTime < now); } // 尚未过期 if (dataType == (short)QueryEqtDataType.NoExpired) { query = query.Where(t => t.eqt.ExpiredTime >= now); } // 绑定警员 if (dataType == (short)QueryEqtDataType.Bound) { query = query.Where(t => t.eqt.OfficerId != null); } // 已损坏 if (dataType == (short)QueryEqtDataType.Destoried) { var sta = (short)EquipmentStatus.Destory; query = query.Where(t => t.eqt.Status == sta); } // 低电量 if (dataType == (short)QueryEqtDataType.LowPower) { query = query.Where(t => t.eqt.Power <= LowPowerFlag); } count = query.Count(); var skipCount = (page - 1) * size; var items = query.OrderByDescending(t => t.eqt.InputTime).Skip(skipCount).Take(size).ToArray() .Select(t => new EquipmentModel { cabinet = t.cab, category = t.cate, equipment = t.eqt, officer = t.officer, org = t.org, storage = t.stg }); return(items); } }