/// <summary> /// 月份统计 /// </summary> /// <param name="req"></param> /// <returns></returns> public async Task <List <MonthSumListInfo <string> > > SumMonthAsync(MonthSumReq req) { //收入 var reqIn = new InSumReq(); reqIn.GroupType = EnmInGroupType.Month; reqIn.IsContainBorrowRepay = req.IsContainBorrowRepay; var taskIn = this.SumInComeAsync(reqIn); //支出 var reqOut = new OutSumReq(); reqOut.GroupType = EnmOutGroupType.Month; reqOut.IsContainBorrowRepay = req.IsContainBorrowRepay; var taskOut = this.SumOutPutAsync(reqOut); //结果 var list = new List <MonthSumListInfo <string> >(); //收入 var lstIn = await taskIn; foreach (var income in lstIn) { list.Add(new MonthSumListInfo <string>() { name = income.name, value = income.value, DataType = EnmDataType.In, DataTypeName = this.Res.Cst.DT.In }); } //支出 var lstOut = await taskOut; foreach (var output in lstOut) { list.Add(new MonthSumListInfo <string>() { name = output.name, value = -output.value, DataType = EnmDataType.Out, DataTypeName = this.Res.Cst.DT.Out }); } //排序 list = list.OrderByDescending(m => m.name).ThenByDescending(m => m.value).ToList(); return(list); }
/// <summary> /// 按年度统计 /// </summary> /// <param name="familyID">家庭ID</param> /// <param name="req">条件</param> /// <returns></returns> public async Task <List <SumListInfo <string> > > SumInComeYearAsync(int familyID, InSumReq req) { using (IOSysContext db = new IOSysContext()) { //条件 var q = this.GetSumInComeWhere(db, familyID, req.StartDate, req.EndDate); //统计 var list = await(from m in q group m by m.InDate.Year into g select new SumListInfo <string>() { name = CvtHelper.ToStr(g.Key), value = g.Sum(m => m.Amount) }).ToListAsync(); return(list); } }
/// <summary> /// 按账户统计 /// </summary> /// <param name="familyID">家庭ID</param> /// <param name="req">条件</param> /// <returns></returns> public async Task <List <SumListInfo <int> > > SumInComeAmountAccountAsync(int familyID, InSumReq req) { using (IOSysContext db = new IOSysContext()) { //条件 var q = this.GetSumInComeWhere(db, familyID, req.StartDate, req.EndDate); //统计 var list = await(from m in q group m by m.AmountAccountID into g select new SumListInfo <int> { name = g.Key, value = g.Sum(m => m.Amount) }).ToListAsync(); return(list); } }
public async Task <ResultList <SumListInfo <string> > > SumInComeAsync([FromQuery] InSumReq req) { var list = await this.bll.SumInComeAsync(req); return(new ResultList <SumListInfo <string> >(true, this.bll.Res.Gen.OK, list)); }
/// <summary> /// 收入统计 /// </summary> /// <param name="req">条件</param> /// <returns></returns> public async Task <List <SumListInfo <string> > > SumInComeAsync(InSumReq req) { //借还统计条件 var reqSumBR = new BorrowRepaySumReq(); reqSumBR.StartDate = req.StartDate; reqSumBR.EndDate = req.EndDate; reqSumBR.LstBRType.Add((int)EnmBorrowRepayType.BorrowIn); reqSumBR.LstBRType.Add((int)EnmBorrowRepayType.RepayIn); //统计类型 switch (req.GroupType) { case EnmInGroupType.InType: #region 类型 { //类型 var taskInType = BasicDAL.Inst.QueryInTypeAsync(this.LoginInfo.FamilyID); //统计 var taskSum = ReportDAL.Inst.SumInComeInTypeAsync(this.LoginInfo.FamilyID, req); //统计借还 Task <List <BorrowRepaySumListInfo <int> > > taskSumBR = null; //是否包含借还 if (req.IsContainBorrowRepay) { reqSumBR.GroupType = EnmBorrowRepayGroupType.BRType; taskSumBR = ReportDAL.Inst.SumBorrowRepayBRTypeAsync(this.LoginInfo.FamilyID, reqSumBR); } //等待查询完成 var lstInType = await taskInType; var lstSum = await taskSum; //返回值 var list = new List <SumListInfo <string> >(); foreach (var temp in lstSum) { var item = new SumListInfo <string>(); list.Add(item); var inType = lstInType.Find(m => m.ID == temp.name); item.name = inType != null ? inType.Name : string.Empty; item.value = temp.value; } //是否包含借还 if (req.IsContainBorrowRepay) { var lstSumBR = await taskSumBR; foreach (var sumBR in lstSumBR) { var item = new SumListInfo <string>(); list.Add(item); item.name = this.GetBorrowRepayTypeName(sumBR.BRType); item.value = sumBR.value; } } list = list.OrderByDescending(m => m.value).ToList(); return(list); } #endregion case EnmInGroupType.AmountAccount: #region 账户 { //账户 var taskAmountAccount = BasicDAL.Inst.QueryAmountAccountAsync(this.LoginInfo.FamilyID); //统计 var taskSum = ReportDAL.Inst.SumInComeAmountAccountAsync(this.LoginInfo.FamilyID, req); //统计借还 Task <List <BorrowRepaySumListInfo <int> > > taskSumBR = null; //是否包含借还 if (req.IsContainBorrowRepay) { reqSumBR.GroupType = EnmBorrowRepayGroupType.AmountAccount; taskSumBR = ReportDAL.Inst.SumBorrowRepayAmountAccountAsync(this.LoginInfo.FamilyID, reqSumBR); } //等待查询完成 var lstAmountAccount = await taskAmountAccount; var lstSum = await taskSum; //是否包含借还 if (req.IsContainBorrowRepay) { var lstSumBR = await taskSumBR; lstSum.AddRange(lstSumBR); lstSum = (from m in lstSum group m by m.name into g select new SumListInfo <int>() { name = g.Key, value = g.Sum(m => m.value) }).ToList(); } //返回值 var list = new List <SumListInfo <string> >(); foreach (var temp in lstSum) { var item = new SumListInfo <string>(); list.Add(item); var amountAccount = lstAmountAccount.Find(m => m.ID == temp.name); item.name = amountAccount != null ? amountAccount.Name : string.Empty; item.value = temp.value; } list = list.OrderByDescending(m => m.value).ToList(); return(list); } #endregion case EnmInGroupType.Month: #region 月份 { //统计 var taskSum = ReportDAL.Inst.SumInComeMonthAsync(this.LoginInfo.FamilyID, req); //统计借还 Task <List <BorrowRepaySumListInfo <string> > > taskSumBR = null; //是否包含借还 if (req.IsContainBorrowRepay) { reqSumBR.GroupType = EnmBorrowRepayGroupType.Month; taskSumBR = ReportDAL.Inst.SumBorrowRepayMonthAsync(this.LoginInfo.FamilyID, reqSumBR); } //等待查询完成 var lstSum = await taskSum; //是否包含借还 if (req.IsContainBorrowRepay) { var lstSumBR = await taskSumBR; lstSum.AddRange(lstSumBR); lstSum = (from m in lstSum group m by m.name into g select new SumListInfo <string>() { name = g.Key, value = g.Sum(m => m.value) }).ToList(); } lstSum = lstSum.OrderByDescending(m => m.name).ToList(); return(lstSum); } #endregion case EnmInGroupType.Year: #region 年度 { //统计 var taskSum = ReportDAL.Inst.SumInComeYearAsync(this.LoginInfo.FamilyID, req); //统计借还 Task <List <BorrowRepaySumListInfo <string> > > taskSumBR = null; //等待查询完成 var lstSum = await taskSum; //是否包含借还 if (req.IsContainBorrowRepay) { reqSumBR.GroupType = EnmBorrowRepayGroupType.Year; taskSumBR = ReportDAL.Inst.SumBorrowRepayYearAsync(this.LoginInfo.FamilyID, reqSumBR); } //是否包含借还 if (req.IsContainBorrowRepay) { var lstSumBR = await taskSumBR; lstSum.AddRange(lstSumBR); lstSum = (from m in lstSum group m by m.name into g select new SumListInfo <string>() { name = g.Key, value = g.Sum(m => m.value) }).ToList(); } lstSum = lstSum.OrderByDescending(m => m.name).ToList(); return(lstSum); } #endregion } return(new List <SumListInfo <string> >()); }