Пример #1
0
        public async Task <PagingResponseMessage <CostInfoResponse> > SearchDetail(UserInfo User, [FromBody] CostSearchRequest request)
        {
            var r = new PagingResponseMessage <CostInfoResponse>();

            try
            {
                r = await _chargeManager.SearchCost(User, request);
            }
            catch (Exception e)
            {
                r.Code    = ResponseCodeDefines.ServiceError;
                r.Message = "服务器错误:" + e.Message;
                Logger.Error("查询费用明细失败:\r\n{0}", e.ToString());
            }
            return(r);
        }
        public async Task <PagingResponseMessage <CostInfoResponse> > SearchCost(UserInfo user, CostSearchRequest request)
        {
            PagingResponseMessage <CostInfoResponse> r = new PagingResponseMessage <CostInfoResponse>();

            var query = _Store.CostQuery;

            List <int> statusList = new List <int>()
            {
                (int)ChargeStatus.Confirm
            };
            var orgList = await _permissionExpansion.GetOrganizationOfPermission(user.Id, PERMISSION_MXB);

            query = query.Where(c => c.ChargeInfo.IsDeleted == false && statusList.Contains(c.ChargeInfo.Status));

            if (request != null)
            {
                if (!String.IsNullOrEmpty(request.ReimburseDepartment))
                {
                    var orgChildren = await _permissionExpansion.GetLowerDepartments(request.ReimburseDepartment);

                    orgList = orgList.Where(x => orgChildren.Contains(x)).ToList();
                }
            }

            query = query.Where(c => orgList.Contains(c.ChargeInfo.ReimburseDepartment));

            if (request != null)
            {
                if (request.StartDate != null)
                {
                    var dt = request.StartDate.Value.Date;
                    query = query.Where(c => c.ChargeInfo.CreateTime >= dt);
                }
                if (request.EndDate != null)
                {
                    var dt = request.EndDate.Value.Date.AddDays(1);
                    query = query.Where(c => c.ChargeInfo.CreateTime < dt);
                }
                if (request.IsPayment != null)
                {
                    query = query.Where(c => c.ChargeInfo.IsPayment == request.IsPayment);
                }
                if (request.IsBackup != null)
                {
                    query = query.Where(c => c.ChargeInfo.IsBackup == request.IsBackup);
                }
                if (!String.IsNullOrWhiteSpace(request.Keyword))
                {
                    query = query.Where(c => (c.ChargeInfo.ReimburseUserInfo.Name.Contains(request.Keyword) || c.ChargeInfo.ReimburseUserInfo.UserID.Contains(request.Keyword) || c.Memo.Contains(request.Keyword) || c.ChargeInfo.Memo.Contains(request.Keyword) || c.ChargeInfo.ChargeNo.Contains(request.Keyword)));
                }

                if (request.PageIndex > 0 && request.PageSize > 0)
                {
                    r.TotalCount = await query.CountAsync();

                    r.PageSize  = request.PageSize;
                    r.PageIndex = request.PageIndex;

                    query = query.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize);
                }
            }

            var list = await query.ToListAsync();

            r.Extension = _mapper.Map <List <CostInfoResponse> >(list);

            return(r);
        }