Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
            }
        }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        /// <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> >());
        }