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); }