Example #1
0
        public async Task <IActionResult> Edit(int id, [Bind("MonthDataId,BranchId,Month,HouseAmount,HouseTotal,HouseCount,Earning,Expend,SaleAmount,SaleProfit")] FncMonthData fncMonthData)
        {
            if (id != fncMonthData.MonthDataId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(fncMonthData);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FncMonthDataExists(fncMonthData.MonthDataId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(PartialView("~/Areas/Finance/Views/FncMonthData/CreateEdit.cshtml", fncMonthData));
        }
        public async Task <JsonResult> UpdateList([FromBody] FDAParams fdaParams)
        {
            if (fdaParams.Ids.Count > 0)
            {
                _context.BrhExpendRecord.Where(x => fdaParams.Ids.Contains(x.ExpendRecordId) && !x.IsFinance).ToList().ForEach(x =>
                {
                    x.IsFinance = true;
                    _context.Update(x);
                });
                await _context.SaveChangesAsync();
            }

            var expendList = await _context.BrhExpendRecord.Where(x => x.Branch == fdaParams.BranchName && DateTime.Compare(fdaParams.StartDate, x.EnteringDate) <= 0 && DateTime.Compare(x.EnteringDate, fdaParams.EndDate) < 0).ToListAsync();

            var pie1List = expendList.GroupBy(x => new { x.ExpendType }).Select(x => new
            {
                ExpendType = x.Key.ExpendType,
                Total      = x.Sum(s => s.Amount),
            }).ToList();

            var days = (fdaParams.EndDate - fdaParams.StartDate).Days;
            List <FncMonthData> dailyList = new List <FncMonthData>();

            for (var i = 0; i < days; i++)
            {
                var daily = new FncMonthData();
                daily.Month       = fdaParams.StartDate.AddDays(i).Date;
                daily.HouseAmount = expendList.Where(x => DateTime.Compare(x.EnteringDate.Date, daily.Month) == 0).Select(x => x.Amount).Sum();
                dailyList.Add(daily);
            }
            return(Json(new { expendList, pie1List, dailyList }));
        }
        public async Task <JsonResult> GetFrontList([FromBody] FDAParams fdaParams)
        {
            var payList   = new List <BrhFrontPaymentDetial>();
            var frontList = await _context.BrhFrontDeskAccounts.Include(x => x.BrhFrontPaymentDetial).Where(x => x.Branch == fdaParams.BranchName && x.State != StateType.已删除 && DateTime.Compare(fdaParams.StartDate, x.StartDate) <= 0 && DateTime.Compare(x.StartDate, fdaParams.EndDate) < 0).ToListAsync();

            foreach (var fr in frontList)
            {
                if (fr.BrhFrontPaymentDetial.Count > 0)
                {
                    payList.AddRange(fr.BrhFrontPaymentDetial);
                }
            }
            var pie1List = frontList.GroupBy(x => new { x.Channel }).Select(x => new
            {
                Channel = x.Key.Channel,
                CTotal  = x.Sum(s => s.Count),
                ATotal  = x.Sum(s => s.BrhFrontPaymentDetial.Select(b => b.PayAmount).Sum())
            }).ToList();
            var pie2List = payList.GroupBy(x => new { x.PayWay }).Select(x => new
            {
                PayWay = x.Key.PayWay,
                Total  = x.Sum(s => s.PayAmount),
            }).ToList();

            var days = (fdaParams.EndDate - fdaParams.StartDate).Days;
            List <FncMonthData> dailyList = new List <FncMonthData>();

            for (var i = 0; i < days; i++)
            {
                var daily = new FncMonthData();
                daily.Month       = fdaParams.StartDate.AddDays(i).Date;
                daily.HouseTotal  = fdaParams.Count;
                daily.HouseAmount = frontList.Where(x => DateTime.Compare(x.StartDate.Date, daily.Month) <= 0 && DateTime.Compare(daily.Month, x.EndDate.Date) < 0).Select(x => x.UnitPrice).Sum();
                daily.HouseCount  = frontList.Where(x => DateTime.Compare(x.StartDate.Date, daily.Month) <= 0 && DateTime.Compare(daily.Month, x.EndDate.Date) < 0).Select(x => x.Count).Count();
                if (daily.HouseTotal != 0)
                {
                    daily.Rate         = (double)daily.HouseCount / (double)daily.HouseTotal;
                    daily.ValidAverage = daily.HouseAmount / daily.HouseTotal;
                }
                else
                {
                    daily.Rate         = 0;
                    daily.ValidAverage = 0;
                }
                if (daily.HouseCount != 0)
                {
                    daily.Average = daily.HouseAmount / daily.HouseCount;
                }
                else
                {
                    daily.Average = 0;
                }
                daily.SaleAmount = dailyList.Select(x => x.HouseAmount).Sum() + daily.HouseAmount;
                dailyList.Add(daily);
            }
            return(Json(new { frontList, pie1List, pie2List, dailyList }));
        }
Example #4
0
        public async Task <IActionResult> Create([Bind("MonthDataId,BranchId,Month,HouseAmount,HouseTotal,HouseCount,Earning,Expend,SaleAmount,SaleProfit")] FncMonthData fncMonthData)
        {
            if (ModelState.IsValid)
            {
                _context.Add(fncMonthData);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(PartialView("~/Areas/Finance/Views/FncMonthData/CreateEdit.cshtml", fncMonthData));
        }
Example #5
0
        public async Task <JsonResult> GetMonthData([FromBody] FncBranch fncBranch)
        {
            var frontList   = _context.BrhFrontDeskAccounts.Where(x => x.Branch == fncBranch.BranchName && x.State != StateType.已删除 && DateTime.Compare(x.StartDate.Date, DateTime.Now.Date) <= 0).ToList();
            var earningList = _context.BrhEarningRecord.Where(x => x.Branch == fncBranch.BranchName).ToList();
            var expendList  = _context.BrhExpendRecord.Where(x => x.Branch == fncBranch.BranchName).ToList();
            var stewardList = _context.BrhStewardAccounts.Where(x => x.Branch == fncBranch.BranchName).ToList();
            var start       = frontList.Select(x => x.StartDate).Min().Date;

            start = start.AddDays(1 - start.Day);
            var end = frontList.Select(x => x.EndDate).Max().Date;

            if (DateTime.Compare(end, DateTime.Now) < 0)
            {
                end = DateTime.Now.AddDays(1).Date;
            }
            end = end.AddDays(1 - end.Day);
            var ms = (end.Year * 12 + end.Month) - (start.Year * 12 + start.Month);

            if (ms == 0)
            {
                return(Json(new { }));
            }
            var monthDataList    = new List <MonthData>();
            var fncMonthDataList = _context.FncMonthData.Where(x => x.BranchId == fncBranch.BranchId).ToList();
            var monthData_Month  = fncMonthDataList.Select(x => x.Month.ToString("yyyy-MM")).ToList();

            for (var i = 0; i <= ms; i++)
            {
                var fncMonthData = new FncMonthData();
                var cFrontList   = frontList.Where(x => DateTime.Compare(start.AddMonths(i), x.StartDate) <= 0 && DateTime.Compare(x.StartDate, start.AddMonths(i + 1)) < 0).ToList();
                var cEarningList = earningList.Where(x => DateTime.Compare(start.AddMonths(i), x.EnteringDate) <= 0 && DateTime.Compare(x.EnteringDate, start.AddMonths(i + 1)) < 0).ToList();
                var cExpendList  = expendList.Where(x => DateTime.Compare(start.AddMonths(i), x.EnteringDate) <= 0 && DateTime.Compare(x.EnteringDate, start.AddMonths(i + 1)) < 0).ToList();
                var cStewardList = stewardList.Where(x => DateTime.Compare(start.AddMonths(i), x.EnteringDate) <= 0 && DateTime.Compare(x.EnteringDate, start.AddMonths(i + 1)) < 0).ToList();
                if (!monthData_Month.Contains(start.AddMonths(i).ToString("yyyy-MM")))
                {
                    fncMonthData.BranchId    = fncBranch.BranchId;
                    fncMonthData.Earning     = cEarningList.Select(x => x.Amount).Sum();
                    fncMonthData.Expend      = cExpendList.Select(x => x.Amount).Sum();
                    fncMonthData.HouseAmount = cFrontList.Select(x => x.TotalPrice).Sum();
                    fncMonthData.HouseCount  = cFrontList.Select(x => x.Count).Sum();
                    if (i != ms)
                    {
                        fncMonthData.HouseTotal = DateTime.DaysInMonth(start.AddMonths(i).Year, start.AddMonths(i).Month) * fncBranch.Count;
                    }
                    else
                    {
                        fncMonthData.HouseTotal = DateTime.Now.Day * fncBranch.Count;
                    }
                    if (fncMonthData.HouseTotal != 0)
                    {
                        fncMonthData.Rate         = (double)fncMonthData.HouseCount / (double)fncMonthData.HouseTotal;
                        fncMonthData.ValidAverage = fncMonthData.HouseAmount / fncMonthData.HouseTotal;
                    }
                    else
                    {
                        fncMonthData.Rate         = 0;
                        fncMonthData.ValidAverage = 0;
                    }
                    if (fncMonthData.HouseCount != 0)
                    {
                        fncMonthData.Average = fncMonthData.HouseAmount / fncMonthData.HouseCount;
                    }
                    else
                    {
                        fncMonthData.Average = 0;
                    }
                    fncMonthData.Month      = start.AddMonths(i);
                    fncMonthData.SaleAmount = cStewardList.Select(x => x.Amount).Sum();
                    fncMonthData.SaleProfit = cStewardList.Select(x => x.Profit).Sum();
                    _context.Add(fncMonthData);
                    fncMonthDataList.Add(fncMonthData);
                }
                else if (i == ms - 1)
                {
                    var tempMonthData = fncMonthDataList.SingleOrDefault(x => DateTime.Compare(x.Month, start.AddMonths(i)) == 0);
                    tempMonthData.BranchId    = fncBranch.BranchId;
                    tempMonthData.Earning     = cEarningList.Select(x => x.Amount).Sum();
                    tempMonthData.Expend      = cExpendList.Select(x => x.Amount).Sum();
                    tempMonthData.HouseAmount = cFrontList.Select(x => x.TotalPrice).Sum();
                    tempMonthData.HouseCount  = cFrontList.Select(x => x.Count).Sum();
                    tempMonthData.HouseTotal  = DateTime.DaysInMonth(start.AddMonths(i).Year, start.AddMonths(i).Month) * fncBranch.Count;
                    if (tempMonthData.HouseTotal != 0)
                    {
                        tempMonthData.Rate         = (double)tempMonthData.HouseCount / (double)tempMonthData.HouseTotal;
                        tempMonthData.ValidAverage = tempMonthData.HouseAmount / tempMonthData.HouseTotal;
                    }
                    else
                    {
                        tempMonthData.Rate         = 0;
                        tempMonthData.ValidAverage = 0;
                    }
                    if (tempMonthData.HouseCount != 0)
                    {
                        tempMonthData.Average = tempMonthData.HouseAmount / tempMonthData.HouseCount;
                    }
                    else
                    {
                        tempMonthData.Average = 0;
                    }
                    tempMonthData.Month      = start.AddMonths(i);
                    tempMonthData.SaleAmount = cStewardList.Select(x => x.Amount).Sum();
                    tempMonthData.SaleProfit = cStewardList.Select(x => x.Profit).Sum();
                    _context.Update(tempMonthData);
                }
                else if (i == ms)
                {
                    var tempMonthData = fncMonthDataList.SingleOrDefault(x => DateTime.Compare(x.Month, start.AddMonths(i)) == 0);
                    tempMonthData.BranchId    = fncBranch.BranchId;
                    tempMonthData.Earning     = cEarningList.Select(x => x.Amount).Sum();
                    tempMonthData.Expend      = cExpendList.Select(x => x.Amount).Sum();
                    tempMonthData.HouseAmount = cFrontList.Select(x => x.TotalPrice).Sum();
                    tempMonthData.HouseCount  = cFrontList.Select(x => x.Count).Sum();
                    tempMonthData.HouseTotal  = DateTime.Now.Day * fncBranch.Count;
                    if (tempMonthData.HouseTotal != 0)
                    {
                        tempMonthData.Rate         = (double)tempMonthData.HouseCount / (double)tempMonthData.HouseTotal;
                        tempMonthData.ValidAverage = tempMonthData.HouseAmount / tempMonthData.HouseTotal;
                    }
                    else
                    {
                        tempMonthData.Rate         = 0;
                        tempMonthData.ValidAverage = 0;
                    }
                    if (tempMonthData.HouseCount != 0)
                    {
                        tempMonthData.Average = tempMonthData.HouseAmount / tempMonthData.HouseCount;
                    }
                    else
                    {
                        tempMonthData.Average = 0;
                    }
                    tempMonthData.Month      = start.AddMonths(i);
                    tempMonthData.SaleAmount = cStewardList.Select(x => x.Amount).Sum();
                    tempMonthData.SaleProfit = cStewardList.Select(x => x.Profit).Sum();
                    _context.Update(tempMonthData);
                }
                await _context.SaveChangesAsync();
            }

            foreach (var fncMonthData1 in fncMonthDataList)
            {
                var monthData1 = new MonthData();
                var ParentType = typeof(FncMonthData);
                var Properties = ParentType.GetProperties();
                foreach (var Propertie in Properties)
                {
                    if (Propertie.CanRead && Propertie.CanWrite)
                    {
                        Propertie.SetValue(monthData1, Propertie.GetValue(fncMonthData1, null), null);
                    }
                }
                var fncMonthData2 = fncMonthDataList.SingleOrDefault(x => x.Month.ToString("yyyy-MM") == fncMonthData1.Month.AddMonths(-1).ToString("yyyy-MM"));
                if (fncMonthData2 != null)
                {
                    monthData1.环比增长额   = fncMonthData1.HouseAmount - fncMonthData2.HouseAmount;
                    monthData1.环比增长率   = (double)monthData1.环比增长额 / (double)fncMonthData2.HouseAmount;
                    monthData1.出环比增长额  = (decimal)(fncMonthData1.Rate - fncMonthData2.Rate);
                    monthData1.出环比增长率  = (double)monthData1.出环比增长额 / fncMonthData2.Rate;
                    monthData1.均环比增长额  = fncMonthData1.Average - fncMonthData2.Average;
                    monthData1.均环比增长率  = (double)monthData1.均环比增长额 / (double)fncMonthData2.Average;
                    monthData1.环比增长额   = fncMonthData1.ValidAverage - fncMonthData2.ValidAverage;
                    monthData1.环比增长率   = (double)monthData1.环比增长额 / (double)fncMonthData2.ValidAverage;
                    monthData1.支环比增长额  = fncMonthData1.Expend - fncMonthData2.Expend;
                    monthData1.支环比增长率  = (double)monthData1.支环比增长额 / (double)fncMonthData2.Expend;
                    monthData1.外环比增长额  = fncMonthData1.SaleAmount - fncMonthData2.SaleAmount;
                    monthData1.外环比增长率  = (double)monthData1.外环比增长额 / (double)fncMonthData2.SaleAmount;
                    monthData1.外利环比增长额 = fncMonthData1.SaleProfit - fncMonthData2.SaleProfit;
                    monthData1.外利环比增长率 = (double)monthData1.外利环比增长额 / (double)fncMonthData2.SaleProfit;
                }
                else
                {
                    monthData1.环比增长额   = 0;
                    monthData1.环比增长率   = 0;
                    monthData1.出环比增长额  = 0;
                    monthData1.出环比增长率  = 0;
                    monthData1.均环比增长额  = 0;
                    monthData1.均环比增长率  = 0;
                    monthData1.环比增长额   = 0;
                    monthData1.环比增长率   = 0;
                    monthData1.支环比增长额  = 0;
                    monthData1.支环比增长率  = 0;
                    monthData1.外环比增长额  = 0;
                    monthData1.外环比增长率  = 0;
                    monthData1.外利环比增长额 = 0;
                    monthData1.外利环比增长率 = 0;
                }
                var fncMonthData3 = fncMonthDataList.SingleOrDefault(x => x.Month.ToString("yyyy-MM") == fncMonthData1.Month.AddYears(-1).ToString("yyyy-MM"));
                if (fncMonthData3 != null)
                {
                    monthData1.比增长额    = fncMonthData1.HouseAmount - fncMonthData3.HouseAmount;
                    monthData1.比增长率    = (double)monthData1.比增长额 / (double)fncMonthData3.HouseAmount;
                    monthData1.出同比增长额  = (decimal)(fncMonthData1.Rate - fncMonthData3.Rate);
                    monthData1.出同比增长率  = (double)monthData1.出同比增长额 / fncMonthData3.Rate;
                    monthData1.均同比增长额  = fncMonthData1.Average - fncMonthData3.Average;
                    monthData1.均同比增长率  = (double)monthData1.均同比增长额 / (double)fncMonthData3.Average;
                    monthData1.比增长额    = fncMonthData1.ValidAverage - fncMonthData3.ValidAverage;
                    monthData1.比增长率    = (double)monthData1.比增长额 / (double)fncMonthData3.ValidAverage;
                    monthData1.支同比增长额  = fncMonthData1.Expend - fncMonthData3.Expend;
                    monthData1.支同比增长率  = (double)monthData1.支同比增长额 / (double)fncMonthData3.Expend;
                    monthData1.外同比增长额  = fncMonthData1.SaleAmount - fncMonthData3.SaleAmount;
                    monthData1.外同比增长率  = (double)monthData1.外同比增长额 / (double)fncMonthData3.SaleAmount;
                    monthData1.外利同比增长额 = fncMonthData1.SaleProfit - fncMonthData3.SaleProfit;
                    monthData1.外利同比增长率 = (double)monthData1.外利同比增长额 / (double)fncMonthData3.SaleProfit;
                }
                else
                {
                    monthData1.比增长额    = 0;
                    monthData1.比增长率    = 0;
                    monthData1.出同比增长额  = 0;
                    monthData1.出同比增长率  = 0;
                    monthData1.均同比增长额  = 0;
                    monthData1.均同比增长率  = 0;
                    monthData1.比增长额    = 0;
                    monthData1.比增长率    = 0;
                    monthData1.支同比增长额  = 0;
                    monthData1.支同比增长率  = 0;
                    monthData1.外同比增长额  = 0;
                    monthData1.外同比增长率  = 0;
                    monthData1.外利同比增长额 = 0;
                    monthData1.外利同比增长率 = 0;
                }
                monthDataList.Add(monthData1);
            }
            monthDataList = monthDataList.OrderBy(x => x.Month).ToList();

            var front2List = _context.BrhFrontDeskAccounts.Where(x => x.Branch == fncBranch.BranchName && x.State != StateType.已删除 && x.StartDate.Month != x.EndDate.AddDays(-1).Month).ToList();

            return(Json(new { monthDataList, monthData_Month, front2List }));
        }