计次就餐

MVC 计算每人每天就餐的次数
开发工具:Visual Studio 2015、Microsoft SQL Server 2014
开发语言:C# .NET MVC、bootstrap
图如下:
在这里插入图片描述

Controller代码如下:

 public ActionResult SelectDayExpense(string punchClockDates, BsgridPageVo1 bsgridPage)
        {
            var employeeID = Session["EmployeeID"] as string[];
            Session["punchClockDates"] = punchClockDates;
            List<ExpenseDetailVo1> list = new List<ExpenseDetailVo1>();
            if (employeeID == null || punchClockDates == "")
            {
                var linqDayExpense = (from tbExpenseDetail in myModels.B_ExpenseDetail
                                        join tbEatPart in myModels.B_EatPart on tbExpenseDetail.EatPartID equals tbEatPart.EatPartID
                                        join tbEmployee in myModels.B_Employee on tbExpenseDetail.EmployeeID equals tbEmployee.EmployeeID
                                        join tbOrganization in myModels.B_Organization on tbEmployee.OrganizationID equals tbOrganization.OrganizationID
                                        select new ExpenseDetailVo1
                                        {
                                            ExpenseDetailID = tbExpenseDetail.ExpenseDetailID,
                                            EmployeeID = tbExpenseDetail.EmployeeID,
                                            OrganizationID = tbEmployee.OrganizationID,
                                            EmployeeNumber = tbEmployee.EmployeeNumber,
                                            EmployeeName = tbEmployee.EmployeeName,
                                            OrganizationName = tbOrganization.OrganizationName,
                                            PunchClockDate = tbExpenseDetail.PunchClockDate,
                                            PunchClockDates = tbExpenseDetail.PunchClockDate.ToString(),
                                            EatPartID = tbExpenseDetail.EatPartID,
                                            EatPartName = tbEatPart.EatPartName,
                                            Money = tbEatPart.Money.ToString(),
                                            Moneys = tbEatPart.Money
                                        }).ToList();

                if (!string.IsNullOrEmpty(punchClockDates))
                {
                    try
                    {
                        DateTime dtreleaseTime = Convert.ToDateTime(punchClockDates);
                        linqDayExpense = linqDayExpense.Where(s => s.PunchClockDate == dtreleaseTime).ToList();
                    }
                    catch (Exception e)
                    {

                    }
                }

                var linq2 = linqDayExpense.GroupBy(m => new { m.EmployeeNumber, m.PunchClockDates, m.EmployeeName, m.OrganizationName }).Select(g => (new
                {
                    EmployeeNumber = g.Key.EmployeeNumber,
                    EmployeeName = g.Key.EmployeeName,
                    OrganizationName = g.Key.OrganizationName,
                    PunchClockDates = g.Key.PunchClockDates,
                    NumberTotal = g.Count(),
                    MoneyTotal = g.Sum(i => i.Moneys)
                })).ToList();
                for (int i = 0; i < linq2.Count; i++)
                {
                    ExpenseDetailVo1 my = new ExpenseDetailVo1();
                    my.EmployeeNumber = linq2[i].EmployeeNumber;
                    my.EmployeeName = linq2[i].EmployeeName;
                    my.OrganizationName = linq2[i].OrganizationName;
                    my.PunchClockDates = linq2[i].PunchClockDates;
                    my.NumberTotal = linq2[i].NumberTotal;
                    my.MoneyTotal = linq2[i].MoneyTotal;
                    var test = linqDayExpense.Where(m => m.EmployeeNumber == linq2[i].EmployeeNumber && m.PunchClockDates == linq2[i].PunchClockDates).ToList();
                    for (int j = 0; j < test.Count; j++)
                    {
                        if (test[j].EatPartName.Trim() == "早餐")
                        {
                            my.BreakfastMoney += Convert.ToDecimal(test[j].Money);
                            my.BreakfastNumber += 1;
                        }
                        else if (test[j].EatPartName.Trim() == "午餐")
                        {
                            my.LunchMoney += Convert.ToDecimal(test[j].Money);
                            my.LunchNumber += 1;
                        }
                        else if (test[j].EatPartName.Trim() == "晚餐")
                        {
                            my.DinnerMoney += Convert.ToDecimal(test[j].Money);
                            my.DinnerNumber += 1;
                        }
                        else
                        {
                            my.MidnightMoney += Convert.ToDecimal(test[j].Money);
                            my.MidnightNumber += 1;
                        }
                    }
                    my.BreakfastMoneys = my.BreakfastMoney.ToString();
                    my.LunchMoneys = my.LunchMoney.ToString();
                    my.DinnerMoneys = my.DinnerMoney.ToString();
                    my.MidnightMoneys = my.MidnightMoney.ToString();
                    my.MoneyTotals = my.MoneyTotal.ToString();
                    list.Add(my);
                }               
            }
            else
            {
                DateTime PunchClockDates = DateTime.Parse(punchClockDates);
                int attendance = PunchClockDates.Subtract(PunchClockDates).Days + 1;
                Session["attendance"] = attendance;
                List<string> listString = new List<string>();
                foreach (string foreachString in employeeID)
                {
                    //把重复添加进去的数据合并为一条
                    if (!listString.Contains(foreachString))
                    {
                        listString.Add(foreachString);
                    }
                }
                List<string> H = listString;
                foreach (var Str in H)
                {
                    var employeeNumber = "";
                    var employeeName = "";
                    decimal breakfastMoney = 0;
                    decimal lunchMoney = 0;
                    decimal dinnerMoney = 0;
                    decimal midnightMoney = 0;
                    var breakfastNumber = 0;
                    var lunchNumber = 0;
                    var dinnerNumber = 0;
                    var midnightNumber = 0;
                    var punchclockdates = "";
                    var numberTotal = 0;
                    decimal moneyTotal = 0;
                    var EmployeeID = Convert.ToInt32(Str);
                    var linqDayExpense = (from tbExpenseDetail in myModels.B_ExpenseDetail
                                          join tbEatPart in myModels.B_EatPart on tbExpenseDetail.EatPartID equals tbEatPart.EatPartID
                                          join tbEmployee in myModels.B_Employee on tbExpenseDetail.EmployeeID equals tbEmployee.EmployeeID
                                          join tbOrganization in myModels.B_Organization on tbEmployee.OrganizationID equals tbOrganization.OrganizationID
                                          where tbExpenseDetail.EmployeeID == EmployeeID && tbExpenseDetail.PunchClockDate == PunchClockDates
                                          select new ExpenseDetailVo1
                                          {
                                              ExpenseDetailID = tbExpenseDetail.ExpenseDetailID,
                                              EmployeeID = tbExpenseDetail.EmployeeID,
                                              EmployeeNumber = tbEmployee.EmployeeNumber,
                                              EmployeeName = tbEmployee.EmployeeName,
                                              PunchClockDate = tbExpenseDetail.PunchClockDate,
                                              PunchClockDates = tbExpenseDetail.PunchClockDate.ToString(),
                                              EatPartID = tbExpenseDetail.EatPartID,
                                              EatPartName = tbEatPart.EatPartName,
                                              Money = tbEatPart.Money.ToString(),
                                              Moneys = tbEatPart.Money,
                                              OrganizationID = tbEmployee.OrganizationID,
                                              OrganizationName = tbOrganization.OrganizationName
                                          }).ToList();
                    var SingleEmployee = (from tbEmployee in myModels.B_Employee
                                          join tbOrganization in myModels.B_Organization on tbEmployee.OrganizationID equals tbOrganization.OrganizationID
                                          where tbEmployee.EmployeeID == EmployeeID
                                          select new
                                          {
                                              EmployeeID = tbEmployee.EmployeeID,
                                              EmployeeName = tbEmployee.EmployeeName,
                                              EmployeeNumber = tbEmployee.EmployeeNumber,
                                              OrganizationID = tbEmployee.OrganizationID,
                                              OrganizationName = tbOrganization.OrganizationName
                                          }).Single();
                    for (var h = 0; h < attendance; h++)
                    {
                        var linq2 = linqDayExpense.GroupBy(m => new { m.EmployeeNumber, m.PunchClockDates, m.EmployeeName }).Select(g => (new
                        {
                            EmployeeNumber = g.Key.EmployeeNumber,
                            PunchClockDates = g.Key.PunchClockDates,
                            EmployeeName = g.Key.EmployeeName,
                            NumberTotal = g.Count(),
                            MoneyTotal = g.Sum(i => i.Moneys)
                        })).ToList();
                        for (int i = 0; i < linq2.Count; i++)
                        {
                            employeeNumber += linq2[i].EmployeeNumber;
                            punchclockdates += linq2[i].PunchClockDates;
                            employeeName += linq2[i].EmployeeName;
                            numberTotal += linq2[i].NumberTotal;
                            moneyTotal += Convert.ToDecimal(linq2[i].MoneyTotal);
                            var test = linqDayExpense.Where(m => m.EmployeeNumber == linq2[i].EmployeeNumber && m.PunchClockDates == linq2[i].PunchClockDates).ToList();
                            for (int j = 0; j < test.Count; j++)
                            {
                                if (test[j].EatPartName.Trim() == "早餐")
                                {
                                    breakfastMoney += Convert.ToDecimal(test[j].Money);
                                    breakfastNumber += 1;
                                }
                                else if (test[j].EatPartName.Trim() == "午餐")
                                {
                                    lunchMoney += Convert.ToDecimal(test[j].Money);
                                    lunchNumber += 1;
                                }
                                else if (test[j].EatPartName.Trim() == "晚餐")
                                {
                                    dinnerMoney += Convert.ToDecimal(test[j].Money);
                                    dinnerNumber += 1;
                                }
                                else
                                {
                                    midnightMoney += Convert.ToDecimal(test[j].Money);
                                    midnightNumber += 1;
                                }
                            }
                        }
                        ExpenseDetailVo1 my = new ExpenseDetailVo1();
                        my.EmployeeNumber = SingleEmployee.EmployeeNumber;
                        my.EmployeeName = SingleEmployee.EmployeeName;
                        my.OrganizationName = SingleEmployee.OrganizationName;
                        my.PunchClockDates = punchClockDates;
                        my.NumberTotal = numberTotal;
                        my.MoneyTotal = moneyTotal;
                        my.BreakfastMoney = breakfastMoney;
                        my.BreakfastNumber = breakfastNumber;
                        my.LunchMoney = lunchMoney;
                        my.LunchNumber = lunchNumber;
                        my.DinnerMoney = dinnerMoney;
                        my.DinnerNumber = dinnerNumber;
                        my.MidnightMoney = midnightMoney;
                        my.MidnightNumber = midnightNumber;
                        my.BreakfastMoneys = breakfastMoney.ToString();
                        my.LunchMoneys = lunchMoney.ToString();
                        my.DinnerMoneys = dinnerMoney.ToString();
                        my.MidnightMoneys = midnightMoney.ToString();
                        my.MoneyTotals = moneyTotal.ToString();
                        list.Add(my);
                    }
                }              
            }
            int intTotalRow = list.Count();
            List<ExpenseDetailVo1> listExpenseDetail = list.OrderByDescending(s => s.ExpenseDetailID).Skip(bsgridPage.GetStartIndex()).Take(bsgridPage.pageSize).ToList();
            BsgridVo<ExpenseDetailVo1> bsgrid = new BsgridVo<ExpenseDetailVo1>()
            {
                success = true,
                totalRows = intTotalRow,
                curPage = bsgridPage.curPage,
                data = listExpenseDetail
            };
            return Json(bsgrid, JsonRequestBehavior.AllowGet);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值