Example #1
0
        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);
        }
Example #2
0
        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);
                        }
        }
Example #3
0
        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));
                    }
        }
Example #5
0
        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);
                }
        }
Example #6
0
        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());
                    }
        }
Example #7
0
        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);
                        }
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        // 矩形选择
        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);
        }
Example #11
0
        /// <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);
        }
Example #12
0
 protected override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     Handler.Dispose();
     Handler = null;
 }
Example #13
0
 public OrgModule(UserInfo user) : base(user)
 {
     Handler = new OrganizationHandle(Repository);
 }
        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);
                                }
        }