public ActionResult SettlementSummary(SettlementSummaryModelFilterModel filterModel) { var param = new SettlementSummaryParam(); filterModel.CopyTo(param); var model = new SettlementSummaryModelViewModel() { FilterModel = filterModel, PagedList = _settlementService.GetSettlementSummaryExtPagedList(param), }; return(View(model)); }
public IPagedList <SettlementSummaryExt> GetSettlementSummaryExtPagedList(SettlementSummaryParam param) { var ctx = this.UnitOfWork as LMS_DbContext; Check.Argument.IsNotNull(ctx, "数据库对象"); var query = from w in ctx.WayBillInfos join c in ctx.Customers on w.CustomerCode equals c.CustomerCode join cb in ctx.CustomerBalances on w.CustomerCode equals cb.CustomerCode where w.Status == (int)WayBill.StatusEnum.Have && (c.PaymentTypeID == 3 || c.PaymentTypeID == 4) select new { w.CustomerCode, c.Name, SalesMan = c.CustomerManager, cb.Balance, }; var querySummary = from w in (from rx in ctx.ReceivingExpenses join wb in ctx.WayBillInfos on rx.WayBillNumber equals wb.WayBillNumber where wb.Status == (int)WayBill.StatusEnum.Have select new { wb.CustomerCode, ShippingMethodName = wb.InShippingMethodName, wb.Weight, wb.SettleWeight, Fee = ctx.ReceivingExpenseInfos.Where( e => e.OperationType == 1 && e.ReceivingExpenseID == rx.ReceivingExpenseID) .Sum(e => e.Amount), }) group w by new { w.CustomerCode, w.ShippingMethodName } into g select new SettlementShippingMethodSummaryExt { CustomerCode = g.Key.CustomerCode, ShippingMethodName = g.Key.ShippingMethodName, HaveWaybillCount = g.Count(), TotalWeight = g.Sum(s => s.Weight), TotalSettleWeight = g.Sum(s => s.SettleWeight), TotalFee = g.Sum(s => s.Fee), }; var list = query.GroupBy(g => new { g.Balance, g.CustomerCode, g.Name, g.SalesMan }) .WhereIf(g => g.Key.Balance >= 0, param.Status == 2) .WhereIf(g => g.Key.Balance < 0, param.Status == 1) .WhereIf(g => g.Key.CustomerCode == param.CustomerCode, !string.IsNullOrWhiteSpace(param.CustomerCode)) .OrderBy(g => g.Key.CustomerCode) .Select(g => new SettlementSummaryExt { Balance = g.Key.Balance, CustomerCode = g.Key.CustomerCode, CustomerName = g.Key.Name, HaveWaybillCount = g.Count(), SalesMan = g.Key.SalesMan, }).ToPagedList(param.Page, param.PageSize); list.InnerList.ForEach(p => { p.SettlementShippingMethodSummaryExts = querySummary.Where(s => s.CustomerCode == p.CustomerCode).ToList(); }); return(list); }
public IPagedList <SettlementSummaryExt> GetSettlementSummaryExtPagedList(SettlementSummaryParam param) { return(_settlementInfoRepository.GetSettlementSummaryExtPagedList(param)); }