Пример #1
0
        public BaseResponse <GetOrganListResult> GetOrganList(GetOrganInfoListParameter parameter)
        {
            BaseResponse <GetOrganListResult> response = new BaseResponse <GetOrganListResult>();
            GetOrganListResult result = new GetOrganListResult();

            if (string.IsNullOrEmpty(parameter.Sort))
            {
                parameter.Sort = "OrganCode";
            }
            if (string.IsNullOrEmpty(parameter.Order))
            {
                parameter.Order = "asc";
            }
            if (parameter.Page == 0)
            {
                parameter.Page = 1;
            }
            if (parameter.PageSize == 0)
            {
                parameter.PageSize = 10;
            }
            try
            {
                using (iCMSDbContext dbContext = new iCMSDbContext())
                {
                    var organQuerable = dbContext.Organizations.Where(t => !t.IsDeleted);
                    if (parameter.OrganTypeID.HasValue && parameter.OrganTypeID.Value > 0)
                    {
                        organQuerable = organQuerable.Where(t => t.OrganTypeID == parameter.OrganTypeID.Value);
                    }
                    if (!string.IsNullOrEmpty(parameter.Keyword))
                    {
                        string matchedWord = parameter.Keyword.ToUpper();
                        organQuerable = organQuerable.Where(t => t.OrganCode.ToUpper().Contains(matchedWord) || t.OrganFullName.ToUpper().Contains(matchedWord));
                    }

                    var organListLinq = from organ in organQuerable
                                        join organType in dbContext.MainOrganTypes.Where(t => !t.IsDeleted) on organ.OrganTypeID equals organType.OrganTypeID
                                        into group1
                                        from g1 in group1
                                        //join category in dbContext.OrganCategories.Where(t => !t.IsDeleted) on g1.CategoryID equals category.CategoryID
                                        //into group2
                                        //from g2 in group2


                                        join item in dbContext.Officers.Where(t => !t.IsDeleted && t.IsOnService).GroupBy(t => t.OrganizationID) on organ.OrganID equals item.Key

                                        into group3
                                        from g3 in group3.DefaultIfEmpty()


                                        select new OrganInfo
                    {
                        OrganID        = organ.OrganID,
                        OrganCode      = organ.OrganCode,
                        OrganFullName  = organ.OrganFullName,
                        OrganShortName = organ.OrganShortName,
                        OrganTypeID    = organ.OrganTypeID,
                        OrganTypeName  = g1.OrganTypeName,
                        //OrganCategoryID = g2.CategoryID,
                        //OrganCategoryName = g2.CategoryName,
                        OfficerQuanlity = g3.Count(),
                        AddDate         = organ.AddDate,
                        AreaID          = organ.AreaID
                    };

                    ListSortDirection       sortOrder = parameter.Order.ToLower().Equals("asc") ? ListSortDirection.Ascending : ListSortDirection.Descending;
                    PropertySortCondition[] sortList  = new PropertySortCondition[]
                    {
                        new PropertySortCondition(parameter.Sort, sortOrder),
                        new PropertySortCondition("OrganID", sortOrder),
                    };

                    organListLinq = organListLinq.OrderBy(sortList);

                    int count = organListLinq.Count();
                    if (parameter.Page > -1)
                    {
                        organListLinq = organListLinq
                                        .Skip((parameter.Page - 1) * parameter.PageSize)
                                        .Take(parameter.PageSize);
                    }

                    result.OrganInfoList.AddRange(organListLinq.ToList());
                    result.Total    = count;
                    response.Result = result;

                    #region 操作日志
                    new LogManager().AddOperationLog(parameter.CurrentUserID, "获取部门列表", parameter.RequestIP);
                    #endregion

                    return(response);
                }
            }
            catch (Exception e)
            {
                response.IsSuccessful = false;
                response.Reason       = e.Message;
                return(response);
            }
        }
        public BaseResponse <GetOrganListResult> GetOrganList(GetOrganInfoListParameter parameter)
        {
            BaseResponse <GetOrganListResult> response = new BaseResponse <GetOrganListResult>();
            GetOrganListResult result = new GetOrganListResult();

            try
            {
                using (iCMSDbContext dbContext = new iCMSDbContext())
                {
                    var organQuerable = dbContext.Organizations.Where(t => !t.IsDeleted);
                    if (parameter.OrganTypeID.HasValue && parameter.OrganTypeID.Value > 0)
                    {
                        organQuerable = organQuerable.Where(t => t.OrganTypeID == parameter.OrganTypeID.Value);
                    }
                    if (!string.IsNullOrEmpty(parameter.Keyword))
                    {
                        organQuerable = organQuerable.Where(t => t.OrganCode.ToUpper().Equals(parameter.Keyword.ToUpper()) || t.OrganFullName.ToUpper().Equals(parameter.Keyword.ToUpper()));
                    }

                    var organListLinq = from organ in organQuerable
                                        join organType in dbContext.OrganTypes on organ.OrganTypeID equals organType.OrganTypeID
                                        into group1
                                        from g1 in group1
                                        join category in dbContext.OrganCategories on g1.CategoryID equals category.CategoryID
                                        into group2
                                        from g2 in group2
                                        join item in dbContext.Officers.GroupBy(t => t.OrganizationID) on organ.OrganID equals item.Key
                                        into group3
                                        from g3 in group3
                                        select new OrganInfo
                    {
                        OrganID           = organ.OrganID,
                        OrganCode         = organ.OrganCode,
                        OrganFullName     = organ.OrganFullName,
                        OrganTypeID       = organ.OrganTypeID,
                        OrganTypeName     = g1.OrganTypeName,
                        OrganCategoryID   = g2.CategoryID,
                        OrganCategoryName = g2.CategoryName,
                        OfficerQuanlity   = g3.Count(),
                        AddDate           = organ.AddDate
                    };

                    ListSortDirection       sortOrder = parameter.Order.ToLower().Equals("asc") ? ListSortDirection.Ascending : ListSortDirection.Descending;
                    PropertySortCondition[] sortList  = new PropertySortCondition[]
                    {
                        new PropertySortCondition(parameter.Sort, sortOrder),
                        new PropertySortCondition("UserID", sortOrder),
                    };

                    organListLinq = organListLinq.OrderBy(sortList);

                    int count = organQuerable.Count();
                    if (parameter.Page > -1)
                    {
                        organListLinq = organListLinq
                                        .Skip((parameter.Page - 1) * parameter.PageSize)
                                        .Take(parameter.PageSize);
                    }

                    result.OrganInfoList.AddRange(organListLinq.ToList());
                    result.Total    = count;
                    response.Result = result;

                    return(response);
                }
            }
            catch (Exception e)
            {
                response.IsSuccessful = false;
                response.Reason       = e.Message;
                return(response);
            }
        }