public List <InvoiceReportValueModel> GetInvoiceListByChangeType(InvoiceIndexApiModel invoice) { var sql = from r in _context.StoreRecord join t in _context.DataStoreChangeType on r.ChangeTypeId equals t.Id where r.CreateTime > invoice.StartDate && r.CreateTime < invoice.EndDate.Date.AddDays(1) && r.HospitalDepartmentId == invoice.HospitalDepartment.Id select new { r.ChangeTypeId, ChangeTypeName = t.Name, RecordId = r.Id, r.Price, r.ChangeQty, }; var reports = sql.Select(x => new InvoiceReportValueModel { Id = x.ChangeTypeId, Name = x.ChangeTypeName }).Distinct().ToList(); foreach (var item in reports) { item.Amount = sql.Where(x => x.ChangeTypeId == item.Id).Sum(x => x.Price * x.ChangeQty); item.StoreRecordIds = sql.Where(x => x.ChangeTypeId == item.Id).Select(x => x.RecordId).ToList(); } return(reports); }
public List <InvoiceReportValueModel> GetInvoiceListByClient(InvoiceIndexApiModel invoice) { var sql = from r in _context.StoreRecord join b in _context.StoreRecordBillno on r.Id equals b.StoreRecordId join p in _context.PurchaseGoodsBillno on b.PurchaseGoodsBillnoId equals p.Id join c in _context.PurchaseGoods on p.PurchaseGoodsId equals c.Id join ht in _context.HospitalClient on c.HospitalClientId equals ht.Id where r.CreateTime > invoice.StartDate && r.CreateTime < invoice.EndDate.Date.AddDays(1) && r.HospitalDepartmentId == invoice.HospitalDepartment.Id select new { c.HospitalClientId, HospitalClientName = ht.Name, RecordId = r.Id, r.Price, r.ChangeQty, }; var reports = sql.Select(x => new InvoiceReportValueModel { Id = x.HospitalClientId, Name = x.HospitalClientName }).Distinct().ToList(); foreach (var item in reports) { item.Amount = sql.Where(x => x.HospitalClientId == item.Id).Sum(x => x.Price * x.ChangeQty); item.StoreRecordIds = sql.Where(x => x.HospitalClientId == item.Id).Select(x => x.RecordId).ToList(); } return(reports); }