Esempio n. 1
0
        public BindEqtResultStatus BindEqt(string officerId, string eqtId, string cabId, string ptpId, string cateId)
        {
            // 获取当前警员已绑定的相关装备
            // 获取当前警员警种绑定当前装备类型的最大
            using (var stdHandler = new StandardEquipmentHandle(Repository))
                using (var eqtHandler = new EquipmentHandle(Repository))
                {
                    var noDel = (short)DeleteStatus.No;
                    var std   = stdHandler.All(t => t.IsDel == noDel && t.PtId == ptpId && t.CateId == cateId).FirstOrDefault();
                    if (std == null)
                    {
                        return(BindEqtResultStatus.Error);
                    }

                    var maxCount     = std.Num;
                    var currentCount = eqtHandler.All(t => t.IsDel == noDel && t.OfficerId == officerId && t.CateId == cateId).Count();
                    if (currentCount >= maxCount)
                    {
                        return(BindEqtResultStatus.Repeate);
                    }

                    // 绑定
                    var items = eqtHandler.ModifyAny(m =>
                    {
                        m.OfficerId = officerId;
                        if (!string.IsNullOrWhiteSpace(cabId))
                        {
                            m.CabId = cabId;
                        }
                        return(m);
                    }, t => t.Id == eqtId, true);

                    if (0 < items.Count())
                    {
                        return(BindEqtResultStatus.Success);
                    }

                    return(BindEqtResultStatus.Failed);
                }
        }
        // 警械相关处理
        //  1,获取标签绑定的警械信息
        //  2,警械当前位置信息处理
        //  3,保存警械移动轨迹
        //  4,其它
        private TagBindModel ExecuteEquipment(UpLoadDataPackage data)
        {
            var eqHandler  = new EquipmentHandle(Repository);
            var offHandler = new OfficerHandle(Repository);
            var noDel      = (short)DeleteStatus.No;
            var query      =
                from eqt in eqHandler.All(t => t.IsDel == noDel)
                join officer in offHandler.All(t => t.IsDel == noDel) on eqt.OfficerId equals officer.Id
                select new { eqt = eqt, officer = officer };
            var tagId = data.TagId;
            var m     = query.Where(t => t.eqt.TagId == tagId).FirstOrDefault();

            if (null != m)
            {
                var bdm = new TagBindModel {
                    Equipment = m.eqt, Officer = m.officer
                };
                ExecuteEquipmentLocation(data, bdm);
                return(bdm);
            }
            return(null);
        }
Esempio n. 3
0
 protected override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     Handler.Dispose();
     Handler = null;
 }
Esempio n. 4
0
        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);
                                }
        }
Esempio n. 5
0
 public EquipmentModule(UserInfo user) : base(user)
 {
     Handler = new EquipmentHandle(Repository);
 }