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);
}