对于页面上显示 一些跨行扩列 动态加载列 的 各种奇葩表格的 记录
1 
类似这种很多数据的 而且数据列 又不确定的 直接用table

function GetATMNumber() { $("#dataTableATMNumber").html(""); debugger var department = $("#sel_ATMNumber_Department").val(); $.ajax({ type: "POST", url: "/Plan/Summary/GetATMNumber", dataType: "json", data: { "department": department }, success: function (data) { var row = '<tbody>'; $.each(data, function (i, item) { if (i == 0) { //加载头部 var head = '<thead><tr>'; for (var key in item) { head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + key + '</div><div class="fht-cell"></div></th>'; } head += '</tr></thead>'; $("#dataTableATMNumber").append(head); } //加载数据 row += '<tr>'; for (var key in item) { row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item[key] + '</td>'; } row += '</tr>'; }); row += '</tbody>'; $("#dataTableATMNumber").append(row); } }); }
public string GetATMNumber(string department) { DataTable table = ATMNumberList(department); return JsonConvert.SerializeObject(table); } public DataTable ATMNumberList(string department) { #region 查询Branch Guid projectId = department.TogGuid(); var atmlist = (from a in db.AtmAtms join tmp1 in db.SysProjects on a.ProjectId equals tmp1.Id into joinTemp1 from tmp1 in joinTemp1.DefaultIfEmpty() //join tmp2 in db.BaseDataMgrs //on a.GroupId equals tmp2.Id into joinTemp2 //from tmp2 in joinTemp2.DefaultIfEmpty() where !a.Deleted & a.ProjectId == projectId select new { ProjectId = tmp1.Id, ProjectName = tmp1.Name, GroupId = (Guid?)a.GroupId, //GroupId = tmp2.Id, //GroupName = tmp2.GroupName }).ToList(); var atmgroup = (from a in atmlist join tmp2 in db.BaseDataMgrs on a.GroupId equals tmp2.Id into joinTemp2 from tmp2 in joinTemp2.DefaultIfEmpty() select new { GroupId = tmp2 != null ? tmp2.Id : Guid.Empty, GroupName = tmp2 != null ? tmp2.GroupName : "AreaIsNull", }).ToList(); //if (!string.IsNullOrEmpty(department)) //{ // atmlist = atmlist.Where(b => b.ProjectId == projectId).ToList(); //} var dicprojectlist = atmlist.Select(x => new { x.ProjectId, x.ProjectName }).Distinct().ToList(); var dicgrouplist = atmgroup.Select(x => new { x.GroupId, x.GroupName }).Distinct(a => a.GroupName).ToList(); #endregion DataTable table = new DataTable(); table.Columns.Add("Branch"); foreach (var group in dicgrouplist) { table.Columns.Add(group.GroupName); } table.Columns.Add("Total"); DataRow dr; foreach (var project in dicprojectlist) { dr = table.NewRow(); dr["Branch"] = project.ProjectName; foreach (var group in dicgrouplist) { if (group.GroupName != "AreaIsNull") { dr[group.GroupName] = atmlist.Where(a => (a.ProjectId == project.ProjectId && a.GroupId == group.GroupId)).Count(); } else { dr[group.GroupName] = atmlist.Where(a => a.GroupId == null || a.GroupId == Guid.Empty).Count(); } } dr["Total"] = atmlist.Where(a => a.ProjectId == project.ProjectId).Count(); table.Rows.Add(dr); } dr = table.NewRow(); dr["Branch"] = LangResources.Resource.Summary_Total; foreach (var group in dicgrouplist) { if (group.GroupName != "AreaIsNull") { dr[group.GroupName] = atmlist.Where(a => a.GroupId == group.GroupId).Count(); } else { dr[group.GroupName] = atmlist.Where(a => a.GroupId == null || a.GroupId == Guid.Empty).Count(); } } dr["Total"] = atmlist.Count(); table.Rows.Add(dr); //没有行的时候添加一行,否则表头不显示 if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } return table; }

先构成 table 列 然后生成数据
2



public string GetFrequencyATMOrder() { var department = Request["department[]"]; var CustomerType = (Request["CustomerType[]"]); var Jobtype = Request["Jobtype[]"]; var DailyorMonthly = Request["DailyorMonthly"] + ""; var sel_ATMOrder_Month = Request["sel_ATMOrder_Month[]"] + ""; var sel_ATMOrder_Year = Request["sel_ATMOrder_Year"] + ""; var startdate = Request["startdate"] + ""; var enddate = Request["enddate"] + ""; DataTable table = FrequencyATMOrderList(department, CustomerType, Jobtype, DailyorMonthly, sel_ATMOrder_Year, sel_ATMOrder_Month, startdate, enddate); return JsonConvert.SerializeObject(new { Title = string.Format(LangResources.Resource.Summary_AverageFrequency, sel_ATMOrder_Month.Split(',').Count()), data = table }); } public DataTable FrequencyATMOrderList(string department, string CustomerType, string Jobtype, string DailyorMonthly, string sel_ATMOrder_Year, string sel_ATMOrder_Month, string startdate, string enddate) { if (DailyorMonthly == "1") { sel_ATMOrder_Year = startdate.Split('-')[0];//2017-04-23 //var sY = startdate.Split('-')[1]; //var eY = enddate.Split('-')[1]; for (var i = DateTime.Parse(startdate); i <= DateTime.Parse(enddate); i = i.AddMonths(1)) { sel_ATMOrder_Month += i.Month + ","; } sel_ATMOrder_Month = sel_ATMOrder_Month.Substring(0, sel_ATMOrder_Month.Length - 1); } #region 查询Branch var atmlist = (from a in db.AtmAtms join tmp1 in db.SysProjects on a.ProjectId equals tmp1.Id into joinTemp1 from tmp1 in joinTemp1.DefaultIfEmpty() where !a.Deleted select new { ProjectId = tmp1.Id, ProjectName = tmp1.Name }).ToList(); if (!string.IsNullOrEmpty(department)) { Guid projectId = Guid.Parse(department); atmlist = atmlist.Where(b => b.ProjectId == projectId).ToList(); } var dicprojectlist = atmlist.Select(x => new { x.ProjectId, x.ProjectName }).Distinct().ToList(); #endregion #region 查询清机加钞、维修、巡检 int iyear = sel_ATMOrder_Year.ToInt(); var bankorderlist = _iBankOrderService.GetAllEnt().Where(a => a.ImplementTime.HasValue && a.ImplementTime.Value.Year == iyear).Select(a => new { a.AtmAtm.ProjectId, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); var inspectionlist = (from a in _databaseFactory.Get().Inspections.Where(a => a.ImplementTime.HasValue && a.ImplementTime.Value.Year == iyear && a.AtmId.HasValue && !a.Deleted) join b in _databaseFactory.Get().AtmAtms on a.AtmId equals b.Id select new { b.ProjectId, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); var repairlist = _iRepairService.GetAllEnt().Where(a => a.FaultTime.Year == iyear).Select(a => new { a.AtmAtm.ProjectId, WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); #endregion List<Guid> projectlist = new List<Guid>(); DataTable table = new DataTable(); table.Columns.Add("Branch"); table.Columns.Add("Replen"); table.Columns.Add("InspectionRepair"); table.Columns.Add("Total"); DataRow dr; int atmcount = atmlist.Count(); int bankordercount = 0; int inspectioncount = 0; int repaircount = 0; List<string> monthlist = new List<string>(); foreach (var project in dicprojectlist) { projectlist.Add(project.ProjectId); dr = table.NewRow(); dr["Branch"] = project.ProjectName; dr["Replen"] = "0"; dr["InspectionRepair"] = "0"; dr["Total"] = "0"; //统计订单数量 bankordercount = 0; inspectioncount = 0; repaircount = 0; foreach (var m in sel_ATMOrder_Month.Split(',')) { DateTime dt = Convert.ToDateTime(sel_ATMOrder_Year + "-" + m + "-01"); //DateTime enddt = dt.AddMonths(1); string time = dt.Year.ToString() + "-" + dt.Month.ToString(); monthlist.Add(time); var ordercount = bankorderlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); var inspectioncount1 = inspectionlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); var repaircount1 = repairlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); //清机加钞数量 bankordercount += (ordercount == null ? 0 : ordercount.Count); //巡检数量 inspectioncount += (inspectioncount1 == null ? 0 : inspectioncount1.Count); //维修数量 repaircount += (repaircount1 == null ? 0 : repaircount1.Count); } if (atmcount > 0) { dr["Replen"] = (Convert.ToDecimal(bankordercount) / sel_ATMOrder_Month.Split(',').Count() / atmcount).ToString("0.00"); dr["InspectionRepair"] = (Convert.ToDecimal(inspectioncount + repaircount) / sel_ATMOrder_Month.Split(',').Count() / atmcount).ToString("0.00"); dr["Total"] = (Convert.ToDecimal(bankordercount + inspectioncount + repaircount) / sel_ATMOrder_Month.Split(',').Count() / atmcount).ToString("0.00"); } table.Rows.Add(dr); } dr = table.NewRow(); dr["Branch"] = LangResources.Resource.Summary_Total; dr["Replen"] = "0"; dr["InspectionRepair"] = "0"; dr["Total"] = "0"; //统计订单数量 bankordercount = bankorderlist.Where(a => (projectlist.Contains(a.ProjectId) && monthlist.Contains(a.Month))).Sum(a => a.Count); inspectioncount = inspectionlist.Where(a => (projectlist.Contains(a.ProjectId) && monthlist.Contains(a.Month))).Sum(a => a.Count); repaircount = repairlist.Where(a => (projectlist.Contains(a.ProjectId) && monthlist.Contains(a.Month))).Sum(a => a.Count); if (atmcount > 0) { dr["Replen"] = (Convert.ToDecimal(bankordercount) / sel_ATMOrder_Month.Split(',').Count() / atmcount).ToString("0.00"); dr["InspectionRepair"] = (Convert.ToDecimal(inspectioncount + repaircount) / sel_ATMOrder_Month.Split(',').Count() / atmcount).ToString("0.00"); dr["Total"] = (Convert.ToDecimal(bankordercount + inspectioncount + repaircount) / sel_ATMOrder_Month.Split(',').Count() / atmcount).ToString("0.00"); } table.Rows.Add(dr); //没有行的时候添加一行,否则表头不显示 if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } return table; }
组成table 最后加了个total 也是后台处理的
----按日



total 是在js中计算的
----按月






太长了 图分着截
total 在里面写着
public string GetATMOrder() { var department = Request["department[]"]; var CustomerType = (Request["CustomerType[]"]); var Jobtype = Request["Jobtype[]"]; var DailyorMonthly = Request["DailyorMonthly"] + ""; var sel_ATMOrder_Month = Request["sel_ATMOrder_Month[]"] + ""; var sel_ATMOrder_Year = Request["sel_ATMOrder_Year"] + ""; var startdate = Request["startdate"] + ""; var enddate = Request["enddate"] + ""; DataTable table = ATMOrderList(department, CustomerType, Jobtype, DailyorMonthly, sel_ATMOrder_Year, sel_ATMOrder_Month, startdate, enddate); return JsonConvert.SerializeObject(table); } public DataTable ATMOrderList(string department, string CustomerType, string Jobtype, string DailyorMonthly, string sel_ATMOrder_Year, string sel_ATMOrder_Month, string startdate, string enddate) { #region 查询Branch // var atmlist = (from a in db.AtmAtms join tmp1 in db.SysProjects on a.ProjectId equals tmp1.Id into joinTemp1 from tmp1 in joinTemp1.DefaultIfEmpty() where !a.Deleted select new { ProjectId = tmp1.Id, //城市iD ProjectName = tmp1.Name }).ToList(); if (!string.IsNullOrEmpty(department)) //城市过滤 { Guid projectId = Guid.Parse(department); atmlist = atmlist.Where(b => b.ProjectId == projectId).ToList(); } //if (!string.IsNullOrEmpty(CustomerType)) //{ // //Guid Customerid = Guid.Parse(CustomerType); // atmlist = atmlist.Where(b => CustomerType.Contains(b.CustomerType.ToString())).ToList(); //} var dicprojectlist = atmlist.Select(x => new { x.ProjectId, x.ProjectName }).Distinct().ToList(); //所有城市 查询不是重复 否则就很多? #endregion #region 查询清机 加钞、维修、巡检 //if (DailyorMonthly == "1") //{ //} //if (DailyorMonthly == "2") //{ //} //int iyear = year.ToInt(); //?? var bankorder = _iBankOrderService.GetAllEnt().Where(a => a.ImplementTime.HasValue); var inspection = _databaseFactory.Get().Inspections.Where(a => a.ImplementTime.HasValue && a.AtmId.HasValue && !a.Deleted); var repair = _iRepairService.GetAllEnt(); if (!string.IsNullOrEmpty(CustomerType)) { bankorder = bankorder.Where(a => CustomerType.Contains(a.CustomerId.ToString())); inspection = inspection.Where(a => CustomerType.Contains(a.CustomerId.ToString())); repair = repair.Where(a => CustomerType.Contains(a.CustomerId.ToString())); } DateTime dts; if (DailyorMonthly == "1") { if (!string.IsNullOrEmpty(startdate)) { dts = DateTime.Parse(startdate); bankorder = bankorder.Where(a => a.ImplementTime.Value >= dts); inspection = inspection.Where(a => a.ImplementTime.Value >= dts); repair = repair.Where(a => a.FaultTime >= dts); } if (!string.IsNullOrEmpty(enddate)) { dts = DateTime.Parse(enddate); bankorder = bankorder.Where(a => a.ImplementTime.Value <= dts); inspection = inspection.Where(a => a.ImplementTime.Value <= dts); repair = repair.Where(a => a.FaultTime <= dts); } if (!string.IsNullOrEmpty(Jobtype)) {//?? int hasbank = 0; List<int> other = new List<int>(); foreach (string strjob in Jobtype.Split(',')) { if (strjob == "40") hasbank = 1; else other.Add(strjob.ToInt()); } bankorder = bankorder.Where(a => 1 == hasbank); if (other.Count > 0) { inspection = inspection.Where(a => other.Contains(a.OrderFlg)); repair = repair.Where(a => other.Contains(a.OrderFlg)); } else { inspection = inspection.Where(a => 1 != hasbank); repair = repair.Where(a => 1 != hasbank); } } var bankorderlist = bankorder.Select(a => new { a.AtmAtm.ProjectId, a.AtmCustomer.Name, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month + "-" + a.ImplementTime.Value.Day }).GroupBy(a => new { a.ProjectId, a.Name, a.WorkMonth }) //分组求总 .Select(a => new { ProjectId = a.Key.ProjectId, a.Key.Name, Date = a.Key.WorkMonth, Count = a.Count(), }).ToList(); var inspectionlist = (from a in inspection join b in _databaseFactory.Get().AtmAtms on a.AtmId equals b.Id select new { a.AtmCustomer.Name, b.ProjectId, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month + "-" + a.ImplementTime.Value.Day }).GroupBy(a => new { a.ProjectId, a.Name, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, a.Key.Name, Date = a.Key.WorkMonth, Count = a.Count() }).ToList(); var repairlist = repair.Select(a => new { a.AtmAtm.ProjectId, a.AtmCustomer.Name, WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month + "-" + a.FaultTime.Day }).GroupBy(a => new { a.ProjectId, a.Name, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, a.Key.Name, Date = a.Key.WorkMonth, Count = a.Count() }).ToList(); DataTable table = new DataTable(); table.Columns.Add("Branch"); table.Columns.Add("Client"); table.Columns.Add("flg"); List<DateTime> liststr = new List<DateTime>(); //DateTime d1 = DateTime.Parse(startdate); for (DateTime d1 = DateTime.Parse(startdate); d1 <= DateTime.Parse(enddate); d1 = d1.AddDays(1)) { liststr.Add(d1); } foreach (var item in liststr) { table.Columns.Add(item.ToString("yyyy-MM-dd")); } // List<Guid> projectlist = new List<Guid>(); DataRow dr; foreach (var project in dicprojectlist) { projectlist.Add(project.ProjectId); //客户循环 40 foreach (var obj in bankorderlist.Select(a => a.Name).Distinct().ToList()) { dr = table.NewRow(); dr["Branch"] = project.ProjectName; dr["Client"] = obj; dr["flg"] = 40; foreach (var m in liststr) { string ms = m.Year + "-" + m.Month + "-" + m.Day; string mss = m.ToString("yyyy-MM-dd"); var ordercount = bankorderlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Date == ms && a.Name == obj)); dr[mss] = (ordercount == null ? 0 : ordercount.Count); } table.Rows.Add(dr); } //客户循环 10 foreach (var obj in repairlist.Select(a => a.Name).Distinct().ToList()) { dr = table.NewRow(); dr["Branch"] = project.ProjectName; dr["Client"] = obj; dr["flg"] = 10; foreach (var m in liststr) { string ms = m.Year + "-" + m.Month + "-" + m.Day; string mss = m.ToString("yyyy-MM-dd"); var ordercount = repairlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Date == ms && a.Name == obj)); dr[mss] = (ordercount == null ? 0 : ordercount.Count); } table.Rows.Add(dr); } //客户循环 10 foreach (var obj in inspectionlist.Select(a => a.Name).Distinct().ToList()) { dr = table.NewRow(); dr["Branch"] = project.ProjectName; dr["Client"] = obj; dr["flg"] = 10; foreach (var m in liststr) { string ms = m.Year + "-" + m.Month + "-" + m.Day; string mss = m.ToString("yyyy-MM-dd"); var ordercount = inspectionlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Date == ms && a.Name == obj)); dr[mss] = (ordercount == null ? 0 : ordercount.Count); } table.Rows.Add(dr); } } if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } return table; } if (DailyorMonthly == "2") { if (!string.IsNullOrEmpty(sel_ATMOrder_Month)) { int iyear = int.Parse(sel_ATMOrder_Year); //dt = DateTime.Parse(enddate); bankorder = bankorder.Where(a => (sel_ATMOrder_Month.Contains(a.ImplementTime.Value.Month.ToString()) && a.ImplementTime.Value.Year == iyear)); inspection = inspection.Where(a => (sel_ATMOrder_Month.Contains(a.ImplementTime.Value.Month.ToString()) && a.ImplementTime.Value.Year == iyear)); repair = repair.Where(a => (sel_ATMOrder_Month.Contains(a.FaultTime.Month.ToString()) && a.FaultTime.Year == iyear)); } if (!string.IsNullOrEmpty(Jobtype)) {//?? int hasbank = 0; List<int> other = new List<int>(); foreach (string strjob in Jobtype.Split(',')) { if (strjob == "40") hasbank = 1; else other.Add(strjob.ToInt()); } bankorder = bankorder.Where(a => 1 == hasbank); if (other.Count > 0) { inspection = inspection.Where(a => other.Contains(a.OrderFlg)); repair = repair.Where(a => other.Contains(a.OrderFlg)); //repair = repair.Where(a => a.OrderFlg == 10); } } var bankorderlist = bankorder.Select(a => new { a.AtmAtm.ProjectId, a.AtmCustomer.Name, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month }).GroupBy(a => new { a.ProjectId, a.Name, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, a.Key.Name, Month = a.Key.WorkMonth, Count = a.Count(), }).ToList(); var inspectionlist = (from a in inspection join b in _databaseFactory.Get().AtmAtms on a.AtmId equals b.Id select new { a.AtmCustomer.Name, b.ProjectId, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month }).GroupBy(a => new { a.ProjectId, a.Name, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, a.Key.Name, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); var repairlist = repair.Select(a => new { a.AtmAtm.ProjectId, a.AtmCustomer.Name, WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month }).GroupBy(a => new { a.ProjectId, a.Name, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, a.Key.Name, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); #endregion //?? var bankcusnm = bankorderlist.Select(a => new { a.Name, a.Month }).Distinct().ToList(); var wxlistcus = repairlist.Select(a => new { a.Name, a.Month }).Distinct().ToList(); var inscus = inspectionlist.Select(a => new { a.Name, a.Month }).Distinct().ToList(); var arrcount = bankcusnm.Union(wxlistcus).Union(inscus).ToList().Distinct(); DataTable table = new DataTable(); table.Columns.Add("Branch"); if (DailyorMonthly == "2") { foreach (var m in sel_ATMOrder_Month.Split(',')) { // foreach (var mkehu in arrcount.Where(a => (DateTime.Parse(a.Month).Month == int.Parse(m))).ToList()) { table.Columns.Add(sel_ATMOrder_Year + "-" + m + "|" + mkehu.Name + "|" + LangResources.Resource.Summary_Replen); table.Columns.Add(sel_ATMOrder_Year + "-" + m + "|" + mkehu.Name + "|" + LangResources.Resource.Summary_InspectionRepair); } } // List<Guid> projectlist = new List<Guid>(); DataRow dr; foreach (var project in dicprojectlist) { projectlist.Add(project.ProjectId); dr = table.NewRow(); dr["Branch"] = project.ProjectName; foreach (var m in sel_ATMOrder_Month.Split(',')) { // foreach (var mkehu in arrcount.Where(a => (DateTime.Parse(a.Month).Month == int.Parse(m))).ToList()) { DateTime dt = Convert.ToDateTime(sel_ATMOrder_Year + "-" + m + "-01"); //DateTime enddt = dt.AddMonths(1); string time = dt.Year.ToString() + "-" + dt.Month.ToString(); //清机加钞数量 var ordercount = bankorderlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time && a.Name == mkehu.Name)); dr[sel_ATMOrder_Year + "-" + m + "|" + mkehu.Name + "|" + LangResources.Resource.Summary_Replen] = (ordercount == null ? 0 : ordercount.Count); //巡检数量加上维修数量 var inspectioncount = inspectionlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time && a.Name == mkehu.Name)); var repaircount = repairlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time && a.Name == mkehu.Name)); dr[sel_ATMOrder_Year + "-" + m + "|" + mkehu.Name + "|" + LangResources.Resource.Summary_InspectionRepair] = (inspectioncount == null ? 0 : inspectioncount.Count) + (repaircount == null ? 0 : repaircount.Count); } } table.Rows.Add(dr); } // dr = table.NewRow(); dr["Branch"] = LangResources.Resource.Summary_Total; foreach (var m in sel_ATMOrder_Month.Split(',')) { // foreach (var mkehu in arrcount.Where(a => (DateTime.Parse(a.Month).Month == int.Parse(m))).ToList()) { DateTime dt = Convert.ToDateTime(sel_ATMOrder_Year + "-" + m + "-01"); //DateTime enddt = dt.AddMonths(1); //string time = year + "-" + m; string time = dt.Year.ToString() + "-" + dt.Month.ToString(); //清机加钞数量 var ordercount = bankorderlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time && a.Name == mkehu.Name)).Sum(a => a.Count); dr[sel_ATMOrder_Year + "-" + m + "|" + mkehu.Name + "|" + LangResources.Resource.Summary_Replen] = ordercount; //巡检数量加上维修数量 var inspectioncount = inspectionlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time && a.Name == mkehu.Name)).Sum(a => a.Count); var repaircount = repairlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time && a.Name == mkehu.Name)).Sum(a => a.Count); dr[sel_ATMOrder_Year + "-" + m + "|" + mkehu.Name + "|" + LangResources.Resource.Summary_InspectionRepair] = inspectioncount + repaircount; } } table.Rows.Add(dr); //没有行的时候添加一行,否则表头不显示 if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } return table; } } return new DataTable(); //dr = table.NewRow(); //dr["Branch"] = LangResources.Resource.Summary_Total; //foreach (var m in monthArray) //{ // DateTime dt = Convert.ToDateTime(year + "-" + m + "-01"); // //DateTime enddt = dt.AddMonths(1); // //string time = year + "-" + m; // string time = dt.Year.ToString() + "-" + dt.Month.ToString(); // //清机加钞数量 // var ordercount = bankorderlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); // dr[year + "-" + m + "|" + LangResources.Resource.Summary_Replen] = ordercount; // //巡检数量加上维修数量 // var inspectioncount = inspectionlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); // var repaircount = repairlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); // dr[year + "-" + m + "|" + LangResources.Resource.Summary_InspectionRepair] = inspectioncount + repaircount; //} //table.Rows.Add(dr); ////没有行的时候添加一行,否则表头不显示 //if (table == null || table.Rows.Count < 1) //{ // table.Rows.Add(table.NewRow()); //} //return table; } function GetATMOrder() { $("#dataTableATMOrder").html(""); $("#dataTableFrequencyATMOrder").html(""); var department = $("#sel_ATMOrder_Department").val(); var CustomerType = $("#CustomerType").val(); var Jobtype = $("#Jobtype").val(); var DailyorMonthly = $("#DailyorMonthly").val(); var sel_ATMOrder_Month = $("#sel_ATMOrder_Month").val(); var sel_ATMOrder_Year = $("#sel_ATMOrder_Year").val(); var startdate = $("#startdate").val(); var enddate = $("#enddate").val(); if (DailyorMonthly == "1") { if (startdate + "" == "" || enddate + "" == "") { toastr.error(SetStr("Error_SelectDay")); return; } } if (DailyorMonthly == "2") { if (sel_ATMOrder_Month == "" || sel_ATMOrder_Month == null) { toastr.error(SetStr("Error_SelectMonth")); return; } if (sel_ATMOrder_Year == "" || sel_ATMOrder_Year == null) { toastr.error(SetStr("Error_SelectYear")); return; } } //debugger $.ajax({ type: "POST", url: "/Plan/Summary/GetATMOrder", dataType: "json", data: { "department": department, "CustomerType": CustomerType, "Jobtype": Jobtype, "DailyorMonthly": DailyorMonthly, "sel_ATMOrder_Year": sel_ATMOrder_Year, "sel_ATMOrder_Month": sel_ATMOrder_Month, "startdate": startdate, "enddate": enddate }, success: function (data) { //debugger //按月 if (DailyorMonthly == "2") { hasquery = true; var row = '<tbody>'; $.each(data, function (i, item) { if (i == 0) { //加载头部 var head = '<thead><tr>'; var count = 0; var Date = ""; //循环加载月份 for (var key in item) { if (count == 0) { head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan="3"><div class="th-inner ">' + key + '</div><div class="fht-cell"></div></th>'; // } else if (key.split("|")[0] != Date) { //debugger var arrlist = {}; for (var date in item) { if (date == "Branch") continue if (key.split("|")[0] == date.split("|")[0]) { arrlist[date] = item[date]; } } var col = key.split("|"); head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + Object.keys(arrlist).length + '"><div class="th-inner ">' + col[0] + '</div><div class="fht-cell"></div></th>'; Date = key.split("|")[0]; } count++; } //Total head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan="3"><div class="th-inner ">Total</div><div class="fht-cell"></div></th>'; head += '</tr><tr>' count = 0; Dates = ""; var DateArrss = {}; //第二级 客户 for (var key in item) { DateArrss = {}; if (key == "Branch") continue if (key.split("|")[0] == Dates) continue Dates = key.split("|")[0]; for (var key2 in item) { if (key2.split("|")[0] == Dates) { DateArrss[key2] = item[key2]; } } var colinfo = ""; for (var i in DateArrss) { var col = i.split("|"); if (col[1] != colinfo) { head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="2"><div class="th-inner ">' + col[1] + '</div><div class="fht-cell"></div></th>'; colinfo = i.split("|")[1]; } } } head += '</tr><tr>' count = 0; //第三级 for (var key in item) { if (count != 0) { var col = key.split("|"); head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + col[2] + '</div><div class="fht-cell"></div></th>'; } count++; } head += '</tr></thead>' $("#dataTableATMOrder").append(head); } //debugger //加载数据 row += '<tr>'; for (var key in item) { row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item[key] + '</td>'; } //total 每行 var total = 0; for (var key in item) { if (key == "Branch") continue total += Number(item[key]); } row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + total + '</td>'; row += '</tr>'; }); row += '</tbody>'; $("#dataTableATMOrder").append(row); } //按日 if (DailyorMonthly == "1") { hasquery = true; var row = ''; var head = ""; //if (item["flg"] != leixingqf) { head += '<tr>'; var cstouCol = 0; var cstou = {}; head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan=""><div class="th-inner "></div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">Replenishment</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (Object.keys(data[0]).length - 3) + '"><div class="th-inner "></div><div class="fht-cell"></div></th>'; head += '</tr><tr>' head += '<th style="text-align: center; vertical-align: middle; width: 120px;" rowspan="2"></th>' head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan="2"><div class="th-inner ">bank</div><div class="fht-cell"></div></th>'; var arrayObj = {}; for (var ssi in data[0]) { if (ssi == "Branch" || ssi == "Client" || ssi == "flg") continue arrayObj[ssi] = data[0][ssi]; } var yuefentou = ""; for (var icc in arrayObj) { //yuefen if (yuefentou == icc.substring(0, 7)) continue var arrrizi = new Array(); for (var z in arrayObj) { if (icc.substring(0, 7) == z.substring(0, 7)) { arrrizi.push(z.substring(0, 7)); } } head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (arrrizi.length) + '"><div class="th-inner ">' + icc.substring(0, 7) + '</div><div class="fht-cell"></div></th>'; yuefentou = icc.substring(0, 7); } head += '</tr><tr>' for (var tsi in arrayObj) { head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + tsi.substr(tsi.length - 2) + '</div><div class="fht-cell"></div></th>'; } head += '</tr><tr>' //for (var i3 in arrayObj) { // head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">1</div><div class="fht-cell"></div></th>'; //} //head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">1</div><div class="fht-cell"></div></th>'; //head += '</tr>'; for (var datasd in data) { //debugger //if (data[datasd]["Branch"] != item["Branch"]) continue if (data[datasd]["flg"] != "40") continue if (data[datasd]["flg"] == "40") { head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + data[datasd]["Branch"] + '</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + data[datasd]["Client"] + '</div><div class="fht-cell"></div></th>'; for (var i3 in data[datasd]) { if (i3 == "Branch" || i3 == "flg" || i3 == "Client") { continue } head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + data[datasd][i3] + '</div><div class="fht-cell"></div></th>'; } } head += '</tr>' } //统计 head += '<tr>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner "></div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">Total</div><div class="fht-cell"></div></th>'; var totaltal = 0; for (var arrdatea in arrayObj) { for (var datada45 in data) { if (data[datada45]["flg"] == "40") { for (var i99 in data[datada45]) { if (i99 == arrdatea) { totaltal += Number(data[datada45][i99]); } } } } head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + totaltal + '</div><div class="fht-cell"></div></th>'; totaltal = 0; } head += '</tr>'; head += '<tr><td style="background: #fff;border: 0px;"></td></tr>'; head += '<tr><td style=" background: #fff;border: 0px;"></td></tr>'; head += '<tr><td style=" background: #fff;border: 0px;"></td></tr>'; //第二块 // head += '<tr>'; head += '<th style="border: 1px solid #e6e6e6; text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner "></div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">FLM/SLM/PM</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (Object.keys(data[0]).length - 3) + '"><div class="th-inner "></div><div class="fht-cell"></div></th>'; head += '</tr><tr>' head += '<th style="text-align: center; vertical-align: middle; width: 120px;" rowspan="2"></th>' head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan="2"><div class="th-inner ">bank</div><div class="fht-cell"></div></th>'; var arrayObj2 = {}; for (var ssi in data[0]) { if (ssi == "Branch" || ssi == "Client" || ssi == "flg") continue arrayObj2[ssi] = data[0][ssi]; } var yuefentou = ""; for (var icc in arrayObj2) { //yuefen if (yuefentou == icc.substring(0, 7)) continue var arrrizi = new Array(); for (var z in arrayObj2) { if (icc.substring(0, 7) == z.substring(0, 7)) { arrrizi.push(z.substring(0, 7)); } } head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (arrrizi.length) + '"><div class="th-inner ">' + icc.substring(0, 7) + '</div><div class="fht-cell"></div></th>'; yuefentou = icc.substring(0, 7); } head += '</tr><tr>' for (var tsi in arrayObj2) { head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + tsi.substr(tsi.length - 2) + '</div><div class="fht-cell"></div></th>'; } head += '</tr><tr>' for (var datasd in data) { if (data[datasd]["flg"] != "10") continue if (data[datasd]["flg"] == "10") { head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + data[datasd]["Branch"] + '</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + data[datasd]["Client"] + '</div><div class="fht-cell"></div></th>'; for (var i3 in data[datasd]) { if (i3 == "Branch" || i3 == "flg" || i3 == "Client") { continue } head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + data[datasd][i3] + '</div><div class="fht-cell"></div></th>'; } } head += '</tr>' } //统计 head += '<tr>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner "></div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">Total</div><div class="fht-cell"></div></th>'; var totaltal = 0; for (var arrdatea in arrayObj2) { for (var datada45 in data) { if (data[datada45]["flg"] == "10") { for (var i99 in data[datada45]) { if (i99 == arrdatea) { totaltal += Number(data[datada45][i99]); } } } } head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + totaltal + '</div><div class="fht-cell"></div></th>'; totaltal = 0; } head += '</tr>'; // //csqf = item["Branch"]; //} $("#dataTableATMOrder").append(head); } } }) //debugger $.ajax({ type: "POST", url: "/Plan/Summary/GetFrequencyATMOrder", dataType: "json", data: { "department": department, "CustomerType": CustomerType, "Jobtype": Jobtype, "DailyorMonthly": DailyorMonthly, "sel_ATMOrder_Year": sel_ATMOrder_Year, "sel_ATMOrder_Month": sel_ATMOrder_Month, "startdate": startdate, "enddate": enddate }, success: function (data) { //debugger hasquery = true; var row = '<tbody>'; $.each(data.data, function (i, item) { if (i == 0) { //加载头部 var head = '<thead><tr>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan="2"><div class="th-inner ">' + SetStr("Summary_Branch") + '</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="3"><div class="th-inner ">' + data.Title + '</div><div class="fht-cell"></div></th>'; head += '</tr><tr>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + SetStr("Summary_Replen") + '</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + SetStr("Summary_InspectionRepair") + '</div><div class="fht-cell"></div></th>'; head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + SetStr("Summary_Total") + '</div><div class="fht-cell"></div></th>'; head += '</tr></thead>'; $("#dataTableFrequencyATMOrder").append(head); } //加载数据 row += '<tr>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item["Branch"] + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item["Replen"] + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item["InspectionRepair"] + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item["Total"] + '</td>'; row += '</tr>'; }); row += '</tbody>'; $("#dataTableFrequencyATMOrder").append(row); } }); }
思想是这样
3


public string GetSLAList(string year, string[] monthArray, string[] city, string[] Customer4) { //(string year, string[] monthArray, string[] city, string[] Customer4) DataTable table = SLAList(year, monthArray, city, Customer4); return JsonConvert.SerializeObject(table); } public DataTable SLAList(string year, string[] monthArray, string[] city, string[] Customer4) { #region 查询Branch var atmlist = (from a in db.AtmAtms join tmp1 in db.SysProjects on a.ProjectId equals tmp1.Id into joinTemp1 from tmp1 in joinTemp1.DefaultIfEmpty() where !a.Deleted select new { ProjectId = tmp1.Id, ProjectName = tmp1.Name }).ToList(); var dicprojectlist = atmlist.Select(x => new { x.ProjectId, x.ProjectName }).Distinct().ToList(); #endregion #region 查询清机维修、巡检 //var inspectionlist = _iInspectionService.GetAllEnt().ToList(); //var repairlist = _iRepairService.GetAllEnt().ToList(); int iyear = year.ToInt(); // var inspectionlistw = _databaseFactory.Get().Inspections.Where(a => a.ImplementTime.HasValue && a.ImplementTime.Value.Year == iyear && a.AtmId.HasValue && !a.Deleted); var repairlistw = _iRepairService.GetAllEnt().Where(a => a.FaultTime.Year == iyear); var inspectionlist1w = _databaseFactory.Get().Inspections.Where(a => a.ImplementTime.HasValue && a.ImplementTime.Value.Year == iyear && a.AtmId.HasValue && !a.Deleted && (a.OrderStatus == 11 || a.OrderStatus == 17)); var repairlist1w = _iRepairService.GetAll().Where(a => a.FaultTime.Year == iyear && (a.OrderStatus == 11 || a.OrderStatus == 17)); if (Customer4.Length > 0) { int hasdata = 0; if (Customer4.Length == 1) { if (Customer4[0].ToStr() == "") hasdata = 1; } if (hasdata == 0) { inspectionlistw = inspectionlistw.Where(a => Customer4.Contains(a.CustomerId.ToString())); repairlistw = repairlistw.Where(a => Customer4.Contains(a.CustomerId.ToString())); inspectionlist1w = inspectionlist1w.Where(a => Customer4.Contains(a.CustomerId.ToString())); repairlist1w = repairlist1w.Where(a => Customer4.Contains(a.CustomerId.ToString())); } } var inspectionlist = (from a in inspectionlistw join b in _databaseFactory.Get().AtmAtms on a.AtmId equals b.Id select new { b.ProjectId, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month, }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); var repairlist = repairlistw.Select(a => new { a.AtmAtm.ProjectId, WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); var inspectionlist1 = (from a in inspectionlist1w join b in _databaseFactory.Get().AtmAtms on a.AtmId equals b.Id select new { b.ProjectId, WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); var repairlist1 = repairlist1w.Select(a => new { a.AtmAtm.ProjectId, WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) .Select(a => new { ProjectId = a.Key.ProjectId, Month = a.Key.WorkMonth, Count = a.Count() }).ToList(); // // var inspectionlist = (from a in _databaseFactory.Get().Inspections.Where(a => a.ImplementTime.HasValue && a.ImplementTime.Value.Year == iyear && a.AtmId.HasValue && !a.Deleted) // join b in _databaseFactory.Get().AtmAtms // on a.AtmId equals b.Id // select new // { // b.ProjectId, // WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month, // }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) //.Select(a => new //{ // ProjectId = a.Key.ProjectId, // Month = a.Key.WorkMonth, // Count = a.Count() //}).ToList(); // var repairlist = _iRepairService.GetAllEnt().Where(a => a.FaultTime.Year == iyear).Select(a => new // { // a.AtmAtm.ProjectId, // WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month // }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) // .Select(a => new // { // ProjectId = a.Key.ProjectId, // Month = a.Key.WorkMonth, // Count = a.Count() // }).ToList(); // var inspectionlist1 = (from a in _databaseFactory.Get().Inspections.Where(a => a.ImplementTime.HasValue && a.ImplementTime.Value.Year == iyear && a.AtmId.HasValue && !a.Deleted && (a.OrderStatus == 11 || a.OrderStatus == 17)) // join b in _databaseFactory.Get().AtmAtms // on a.AtmId equals b.Id // select new // { // b.ProjectId, // WorkMonth = a.ImplementTime.Value.Year + "-" + a.ImplementTime.Value.Month // }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) // .Select(a => new // { // ProjectId = a.Key.ProjectId, // Month = a.Key.WorkMonth, // Count = a.Count() // }).ToList(); // var repairlist1 = _iRepairService.GetAll().Where(a => a.FaultTime.Year == iyear && (a.OrderStatus == 11 || a.OrderStatus == 17)).Select(a => new // { // a.AtmAtm.ProjectId, // WorkMonth = a.FaultTime.Year + "-" + a.FaultTime.Month // }).GroupBy(a => new { a.ProjectId, a.WorkMonth }) // .Select(a => new // { // ProjectId = a.Key.ProjectId, // Month = a.Key.WorkMonth, // Count = a.Count() // }).ToList(); #endregion DataTable table = new DataTable(); table.Columns.Add("Branch"); foreach (var m in monthArray) { table.Columns.Add(year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_A); table.Columns.Add(year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_F); table.Columns.Add(year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_GrandTotal); } Guid proid = _userInfo.ProjectId; //if (!string.IsNullOrEmpty(city)) //{ // Guid guid = Guid.Parse(city); // proid = guid; // dicprojectlist = dicprojectlist.Where(a => a.ProjectId == guid).ToList(); //} if (city != null && city.Length > 0) { int hasdata = 0; if (city.Length == 1) { if (city[0].ToStr() == "") hasdata = 1; } if (hasdata == 0) { dicprojectlist = dicprojectlist.Where(a => city.Contains(a.ProjectId.ToStr())).ToList(); } } List<Guid> projectlist = new List<Guid>(); DataRow dr; foreach (var project in dicprojectlist) { projectlist.Add(project.ProjectId); dr = table.NewRow(); dr["Branch"] = project.ProjectName; foreach (var m in monthArray) { DateTime dt = Convert.ToDateTime(year + "-" + m + "-01"); //DateTime enddt = dt.AddMonths(1); string time = dt.Year.ToString() + "-" + dt.Month.ToString(); //巡检数量加上维修总数量 var inspectioncount = inspectionlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); var repaircount = repairlist.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); int total = (inspectioncount == null ? 0 : inspectioncount.Count) + (repaircount == null ? 0 : repaircount.Count); //巡检数量加上维修完成数量 var inspectioncount1 = inspectionlist1.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); var repaircount1 = repairlist1.FirstOrDefault(a => (a.ProjectId == project.ProjectId && a.Month == time)); int anum = (inspectioncount1 == null ? 0 : inspectioncount1.Count) + (repaircount1 == null ? 0 : repaircount1.Count); dr[year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_A] = anum; dr[year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_F] = total - anum; dr[year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_GrandTotal] = total; } table.Rows.Add(dr); } dr = table.NewRow(); dr["Branch"] = LangResources.Resource.Summary_Total; foreach (var m in monthArray) { DateTime dt = Convert.ToDateTime(year + "-" + m + "-01"); DateTime enddt = dt.AddMonths(1); string time = dt.Year.ToString() + "-" + dt.Month.ToString(); //巡检数量加上维修数量 var inspectioncount = inspectionlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); var repaircount = repairlist.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); var inspectioncount1 = inspectionlist1.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); var repaircount1 = repairlist1.Where(a => (projectlist.Contains(a.ProjectId) && a.Month == time)).Sum(a => a.Count); int total = inspectioncount + repaircount; //巡检数量加上维修完成数量 int anum = inspectioncount1 + repaircount1; dr[year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_A] = anum; dr[year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_F] = total - anum; dr[year + "-" + m + "|" + LangResources.Resource.SLAInspectionRepair_GrandTotal] = total; } table.Rows.Add(dr); //没有行的时候添加一行,否则表头不显示 if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } return table; } function GetSLA() { debugger $("#dataTableSLA").html(""); var year = $("#sel_SLA_Year").val(); var month = $("#sel_SLA_Month").val(); var city = $("#cityname").val(); //if (city == null) { // city = $("#projectsId").val(); //} if (month == null) { var month = new Date().getMonth() + 1; if ((month + "").length < 2) month = '0' + month; } var Customer4 = $("#Customer4").val(); if (Customer4 = null) Customer4 = []; if (city = null) city = []; //if (month == null) { // month = new Date().getMonth() + 1; // if ((month + "").length < 2) month = '0' + month; //} //if (city == null) {//cityname // var arrop = $("#cityname").find("option"); // for (var i in arrop) { // if ($(arrop[i]).text() == $("#projectsName").val()) { // city = $(arrop[i]).val(); // } // } //} if (year == "" || year == null) { toastr.error(SetStr("Error_SelectYear")); return; } if (month == "" || month == null) { toastr.error(SetStr("Error_SelectMonth")); return; } debugger $.ajax({ type: "POST", url: "/Plan/SLAInspectionRepair/GetSLAList", dataType: "json", data: { "year": year, "monthArray": month, "city": city, "Customer4": Customer4 }, success: function (data) { hasquery = true; var row = '<tbody>'; $.each(data, function (i, item) { if (i == 0) { //加载头部 var head = '<thead><tr>'; var count = 0; //循环加载月份头部 for (var key in item) { if (count == 0) { head += '<th style="text-align: center; vertical-align: middle; width: 120px; " rowspan="2"><div class="th-inner ">' + key + '</div><div class="fht-cell"></div></th>'; } else if (count % 3 == 1) { var col = key.split("|"); head += '<th style="text-align: center; vertical-align: middle; width: 120px; " colspan="3"><div class="th-inner ">' + col[0] + '</div><div class="fht-cell"></div></th>'; } count++; } head += '</tr><tr>'; count = 0; //循环加载子头部 for (var key in item) { if (count != 0) { var col = key.split("|"); head += '<th style="text-align: center; vertical-align: middle; width: 120px; "><div class="th-inner ">' + col[1] + '</div><div class="fht-cell"></div></th>'; } count++; } head += '</tr></thead>'; $("#dataTableSLA").append(head); } //加载数据 row += '<tr>'; for (var key in item) { row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + item[key] + '</td>'; } row += '</tr>'; }); row += '</tbody>'; $("#dataTableSLA").append(row); } }); }
4
-- 按天


--按月




数据量太大
public string GetBankDayTypeOfOrder(string projecte, string CustomerName, string DailyorMonthly, string[] sel_ATMOrder_Month, string startdate, string enddate) {//-- //List<VMBankDayTypeOfOrder> list = BankDayTypeOfOrderList(department, date); List<SummaryofOrder> list = SummaryofOrderList(projecte, CustomerName, DailyorMonthly, sel_ATMOrder_Month, startdate, enddate); if (DailyorMonthly == "1") { var data = new { flg = DailyorMonthly, list = list }; return JsonConvert.SerializeObject(data); } else { DataTable table = new DataTable(); table.Columns.Add("Branch"); table.Columns.Add("Bank"); // 一个数组 一行数据 foreach (var item in sel_ATMOrder_Month) { table.Columns.Add(item.ToInt() + "|Order"); table.Columns.Add(item.ToInt() + "|Same"); table.Columns.Add(item.ToInt() + "|BadCassette"); table.Columns.Add(item.ToInt() + "|Dropbag"); } DataRow dr; var prolist = db.SysProjects.Where(a => !a.Deleted).ToList(); var banks = db.AtmCustomers.Where(a => !a.Deleted).OrderByDescending(a => a.UpdatedDate).ToList(); foreach (var itempr in prolist) { foreach (var itembk in banks) { dr = table.NewRow(); dr["Branch"] = itempr.Name; dr["Bank"] = itembk.Name; foreach (var itemsj in sel_ATMOrder_Month) { var data = list.FirstOrDefault(a => a.Branch == itempr.Name && a.Bank == itembk.Name && a.Month == itemsj.ToInt()); dr[itemsj.ToInt() + "|Order"] = data != null ? data.OrderInAdvance : 0; dr[itemsj.ToInt() + "|Same"] = data != null ? data.SameDayOrder : 0; dr[itemsj.ToInt() + "|BadCassette"] = data != null ? data.CassetteDamage : 0; dr[itemsj.ToInt() + "|Dropbag"] = data != null ? data.DropBag : 0; } table.Rows.Add(dr); } dr = table.NewRow(); dr["Branch"] = ""; dr["Bank"] = "Total"; foreach (var itemsj in sel_ATMOrder_Month) { var data = list.Where(a => a.Branch == itempr.Name && a.Month == itemsj.ToInt()); dr[itemsj.ToInt() + "|Order"] = data != null ? data.Sum(a => a.OrderInAdvance) : 0; dr[itemsj.ToInt() + "|Same"] = data != null ? data.Sum(a => a.SameDayOrder) : 0; dr[itemsj.ToInt() + "|BadCassette"] = data != null ? data.Sum(a => a.CassetteDamage) : 0; dr[itemsj.ToInt() + "|Dropbag"] = data != null ? data.Sum(a => a.DropBag) : 0; } table.Rows.Add(dr); } if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } var datas = new { flg = DailyorMonthly, list = table, //count = list.Distinct(a => a.JobDate.Value.Month).Count() }; return JsonConvert.SerializeObject(datas); } } public List<SummaryofOrder> SummaryofOrderList(string projecte, string CustomerName, string DailyorMonthly, string[] sel_ATMOrder_Month, string startdate, string enddate) { SortByDocument sbd = new SortByDocument(); IMongoQuery query = null; List<IMongoQuery> list = new List<IMongoQuery>(); if (!string.IsNullOrEmpty(projecte)) { list.Add(Query.Matches("Branch", projecte)); } if (!string.IsNullOrEmpty(CustomerName)) { list.Add(Query.Matches("Bank", CustomerName)); } List<SummaryofOrder> task = new List<SummaryofOrder>(); if (DailyorMonthly == "1") {//day if (!string.IsNullOrEmpty(startdate)) { list.Add(Query.GTE("JobDate", startdate.ToDateTime())); } if (!string.IsNullOrEmpty(enddate)) { list.Add(Query.LT("JobDate", enddate.ToDateTime().AddDays(1))); } query = Query.And(list); task = Common.MongodbHelper.FindListBy<SummaryofOrder>(query, sbd, "table_SummoOrder"); task = task.GroupBy(a => new { a.Branch, a.Bank }).Select(a => new SummaryofOrder { Branch = a.Key.Branch, Bank = a.Key.Bank, OrderInAdvance = a.Sum(i => i.OrderInAdvance), SameDayOrder = a.Sum(i => i.SameDayOrder), CassetteDamage = a.Sum(i => i.CassetteDamage), DropBag = a.Sum(i => i.DropBag), //TotalOrder = a.Sum(i => i.TotalOrder) }).ToList(); } if (DailyorMonthly == "2") {//month //int i = 0; List<IMongoQuery> mq = new List<IMongoQuery>(); foreach (var item in sel_ATMOrder_Month) { DateTime dt = new DateTime(DateTime.Now.Year, item.ToInt(), 1); //if (i == 0) //{ // mq.Add(Query.And(Query.GTE("JobDate", dt), Query.LTE("JobDate", dt.MonthLast()))); //} //mq.Add(Query.Or(Query.GTE("JobDate", dt), Query.LTE("JobDate", dt.MonthLast()))); mq.Add(Query.And(Query.GTE("JobDate", dt), Query.LTE("JobDate", dt.MonthLast()))); //i++; //list.Add(Query.GTE("JobDate", dt)); //list.Add(Query.LTE("JobDate", dt.MonthLast())); //、、sel_ATMOrder_Month //list.Add(Query.Or()); } list.Add(Query.Or(mq)); query = Query.And(list); task = Common.MongodbHelper.FindListBy<SummaryofOrder>(query, sbd, "table_SummoOrder"); task = task.GroupBy(a => new { a.Branch, a.Bank, a.JobDate.Value.Month }).Select(a => new SummaryofOrder { Month = a.Key.Month, Branch = a.Key.Branch, Bank = a.Key.Bank, OrderInAdvance = a.Sum(i => i.OrderInAdvance), SameDayOrder = a.Sum(i => i.SameDayOrder), CassetteDamage = a.Sum(i => i.CassetteDamage), DropBag = a.Sum(i => i.DropBag), //TotalOrder = a.Sum(i => i.TotalOrder) }).ToList(); } return task; } function GetBankDayTypeOfOrder() { $("#dataTableBankDayTypeOfOrder").html(""); var sel_BankDayTypeOfOrder_Department = $("#sel_BankDayTypeOfOrder_Department").val(); var sel_BankDayTypeOfOrder_CustomerName = $("#sel_BankDayTypeOfOrder_CustomerName").val(); var DailyorMonthly = $("#DailyorMonthly").val(); var sel_ATMOrder_Month = $("#sel_ATMOrder_Month").val(); var startdate = $("#startdate").val(); var enddate = $("#enddate").val(); if (DailyorMonthly == "1") { if (startdate + "" == "" || enddate + "" == "") { toastr.error(SetStr("Error_SelectDay")); return; } } if (DailyorMonthly == "2") { if (sel_ATMOrder_Month == "" || sel_ATMOrder_Month == null) { toastr.error(SetStr("Error_SelectMonth")); return; } } $.ajax({ type: "POST", url: "/Plan/Replenishment/GetBankDayTypeOfOrder", dataType: "json", data: { "projecte": sel_BankDayTypeOfOrder_Department, "CustomerName": sel_BankDayTypeOfOrder_CustomerName, "DailyorMonthly": DailyorMonthly, "sel_ATMOrder_Month": sel_ATMOrder_Month, "startdate": startdate, "enddate": enddate }, success: function (data) { debugger if (data.flg == "1") { //day var row = '<tr>'; row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Summary_Branch") + '</div><div class="fht-cell"></div></td>'; row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Dispatch_Bank") + '</div><div class="fht-cell"></div></td>'; row += '<td colspan="4" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + (startdate + " ~ " + enddate) + '</div><div class="fht-cell"></div></td>'; row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("AtmAtmCount") + '</div><div class="fht-cell"></div></td>'; row += '</tr>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_OrderInAdvance") + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_SameDayOrder") + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_CassetteDamage") + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_DropBag") + '</div><div class="fht-cell"></div></td></tr>'; //$("#dataTableBankDayTypeOfOrder").append(row); var OrderInAdvance = 0, SameDayOrder = 0, CassetteDamage = 0, DropBag = 0, TotalOrder = 0; var Bank = ""; if (data.list.length > 0) { Bank = data.list[0]["Branch"]; } var bk = ""; $.each(data.list, function (i, item) { //Bank = item["Branch"]; row += '<tr>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Branch"] + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Bank"] + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["OrderInAdvance"] + '</td>'; OrderInAdvance += Number(item["OrderInAdvance"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["SameDayOrder"] + '</td>'; SameDayOrder += Number(item["SameDayOrder"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["CassetteDamage"] + '</td>'; CassetteDamage += Number(item["CassetteDamage"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["DropBag"] + '</td>'; DropBag += Number(item["DropBag"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["TotalOrder"] + '</td></tr>'; TotalOrder += Number(item["TotalOrder"]); try { bk = data.list[i + 1]["Branch"]; } catch (e) { bk = ""; } Bank = item["Branch"]; if (Bank != bk) { row += '<tr>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;"></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SetStr("AtmAtmCount") + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + OrderInAdvance + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SameDayOrder + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + CassetteDamage + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + DropBag + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + TotalOrder + '</td></tr>'; //Bank = 0, OrderInAdvance = 0, SameDayOrder = 0, CassetteDamage = 0, DropBag = 0, TotalOrder = 0; } }) $("#dataTableBankDayTypeOfOrder").append(row); } if (data.flg == "2") { //month var row = '<tr>'; row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Summary_Branch") + '</div><div class="fht-cell"></div></td>'; row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Dispatch_Bank") + '</div><div class="fht-cell"></div></td>'; for (var i = 0; i < sel_ATMOrder_Month.length; i++) { row += '<td colspan="4" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + (sel_ATMOrder_Month[i]) + '</div><div class="fht-cell"></div></td>'; } row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("AtmAtmCount") + '</div><div class="fht-cell"></div></td>'; row += '</tr>'; for (var i = 0; i < sel_ATMOrder_Month.length; i++) { row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_OrderInAdvance") + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_SameDayOrder") + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_CassetteDamage") + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_DropBag") + '</div><div class="fht-cell"></div></td>'; } row += '</tr>'; var OrderInAdvance = 0, SameDayOrder = 0, CassetteDamage = 0, DropBag = 0, TotalOrder = 0; Bank = data.list[0]["Branch"]; var bk = ""; //if (data.list.length != 0) { // //data.list. // var intnum = 0; // var str = ""; // for (var i in data.list) { // str = i["Month"]; // if (str == data.list[0]["Month"]) { // intnum++; // } // } //for (var i = 0; i < intnum; i++) { // Bank = data.list["Branch"]; // row += '<tr>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Branch"] + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Bank"] + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["OrderInAdvance"] + '</td>'; // OrderInAdvance += Number(item["OrderInAdvance"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["SameDayOrder"] + '</td>'; // SameDayOrder += Number(item["SameDayOrder"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["CassetteDamage"] + '</td>'; // CassetteDamage += Number(item["CassetteDamage"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["DropBag"] + '</td>'; // DropBag += Number(item["DropBag"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["TotalOrder"] + '</td></tr>'; // TotalOrder += Number(item["TotalOrder"]); // try { // bk = data.list[i + 1]["Branch"]; // } catch (e) { // bk = ""; // } // Bank = item["Branch"]; // if (Bank != bk) { // row += '<tr>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;"></td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SetStr("AtmAtmCount") + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + OrderInAdvance + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SameDayOrder + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + CassetteDamage + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + DropBag + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + TotalOrder + '</td></tr>'; // //Bank = 0, // OrderInAdvance = 0, // SameDayOrder = 0, // CassetteDamage = 0, // DropBag = 0, // TotalOrder = 0; // } //} $.each(data.list, function (i, item) { Bank = item["Branch"]; row += '<tr>'; for (var key in item) { //row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Branch"] + '</td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item[key] + '</td>'; } //每行 var total = 0; for (var key in item) { if (key == "Branch") continue if (key == "Bank") continue total += Number(item[key]); } row += '<td style="text-align: center; vertical-align: middle; width: 120px; ">' + total + '</td>'; row += '</tr>'; //row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["OrderInAdvance"] + '</td>'; //OrderInAdvance += Number(item["OrderInAdvance"]); //row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["SameDayOrder"] + '</td>'; //SameDayOrder += Number(item["SameDayOrder"]); //row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["CassetteDamage"] + '</td>'; //CassetteDamage += Number(item["CassetteDamage"]); //row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["DropBag"] + '</td>'; //DropBag += Number(item["DropBag"]); //row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["TotalOrder"] + '</td></tr>'; //TotalOrder += Number(item["TotalOrder"]); //try { // bk = data.list[i + 1]["Branch"]; //} catch (e) { // bk = ""; //} //Bank = item["Branch"]; //if (Bank != bk) { // row += '<tr>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;"></td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SetStr("AtmAtmCount") + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + OrderInAdvance + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SameDayOrder + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + CassetteDamage + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + DropBag + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + TotalOrder + '</td></tr>'; // //Bank = 0, // OrderInAdvance = 0, // SameDayOrder = 0, // CassetteDamage = 0, // DropBag = 0, // TotalOrder = 0; //} } ) $("#dataTableBankDayTypeOfOrder").append(row); } } }) }
5
--按天





--按月



public string GetTheSummaryOfOrder(string CityName, string CustomerName, string DailyorMonthly4, string startdate4, string enddate4, string sel_ATMOrder_Year, string[] sel_ATMOrder_Month4) { List<ResultofOrder> list = TheSummaryOfOrderLists(CityName, CustomerName, DailyorMonthly4, startdate4, enddate4, sel_ATMOrder_Year, sel_ATMOrder_Month4); if (DailyorMonthly4 == "2") {//mon var data = new { flg = DailyorMonthly4, list = list }; return JsonConvert.SerializeObject(data); } else { var prolist = db.SysProjects.Where(a => !a.Deleted).ToList(); var banks = db.AtmCustomers.Where(a => !a.Deleted).OrderByDescending(a => a.UpdatedDate).ToList(); List<DateTime> liststr = new List<DateTime>(); for (DateTime d1 = DateTime.Parse(startdate4); d1 <= DateTime.Parse(enddate4); d1 = d1.AddDays(1)) { liststr.Add(d1); } DataTable table = new DataTable(); DataRow dr; table.Columns.Add("Type"); // table.Columns.Add("Branch"); table.Columns.Add("Bank"); foreach (var item in liststr) { table.Columns.Add(item.ToString("dd-MM")); } for (int i = 1; i <= 4; i++) {//Bad Cassette //Drop Bag //Done //Total Order foreach (var itempr in prolist) { foreach (var itembk in banks) { var infoss = list.Where(a => a.Branch == itempr.Name && a.Bank == itembk.Name).ToList(); if (infoss.Count > 0) { dr = table.NewRow(); dr["Type"] = i; dr["Branch"] = itempr.Name; dr["Bank"] = itembk.Name; foreach (var itemdt in liststr) { string ms = itemdt.ToString("dd-MM"); var info = infoss.FirstOrDefault(a => a.Branch == itempr.Name && a.Bank == itembk.Name && a.Date == itemdt); //if (info != null) //{ switch (i) { case 1: dr[ms] = info != null ? info.BadCassette : 0; break; case 2: dr[ms] = info != null ? info.DropBag : 0; break; case 3: dr[ms] = info != null ? info.Done : 0; break; case 4: dr[ms] = info != null ? info.Totalorder : 0; break; } //} } table.Rows.Add(dr); } // list.Where(a=>a.Branch ==itempr.Name && a.Bank ==itembk.Name && a.Date == ) } } } if (table == null || table.Rows.Count < 1) { table.Rows.Add(table.NewRow()); } //list.Where(a=>a.Branch =="") var datas = new { flg = DailyorMonthly4, list = table, Count = liststr.Count, //count = list.Distinct(a => a.JobDate.Value.Month).Count() }; return JsonConvert.SerializeObject(datas); } } public List<ResultofOrder> TheSummaryOfOrderLists(string CityName, string CustomerName, string DailyorMonthly4, string startdate4, string enddate4, string sel_ATMOrder_Year, string[] sel_ATMOrder_Month4) {//-- SortByDocument sbd = new SortByDocument(); IMongoQuery query = null; List<IMongoQuery> list = new List<IMongoQuery>(); if (!string.IsNullOrEmpty(CityName)) { list.Add(Query.Matches("Branch", CityName)); } if (!string.IsNullOrEmpty(CustomerName)) { list.Add(Query.Matches("Bank", CustomerName)); } List<ResultofOrder> task = new List<ResultofOrder>(); if (DailyorMonthly4 == "1") {//day if (!string.IsNullOrEmpty(startdate4)) { list.Add(Query.GTE("JobDate", startdate4.ToDateTime())); } if (!string.IsNullOrEmpty(enddate4)) { list.Add(Query.LT("JobDate", enddate4.ToDateTime().AddDays(1))); } query = Query.And(list); task = Common.MongodbHelper.FindListBy<ResultofOrder>(query, sbd, "table_ResultofOrder"); task = task.GroupBy(a => new { a.JobDate.Value.Date, a.Branch, a.Bank }).Select(a => new ResultofOrder { Branch = a.Key.Branch, Bank = a.Key.Bank, Date = a.Key.Date, Totalorder = a.Sum(i => i.Totalorder), Done = a.Sum(i => i.Done), DropBag = a.Sum(i => i.DropBag), BadCassette = a.Sum(i => i.BadCassette), //TotalOrder = a.Sum(i => i.TotalOrder) }).ToList(); } if (DailyorMonthly4 == "2") {//mon //int i = 0; List<IMongoQuery> mq = new List<IMongoQuery>(); foreach (var item in sel_ATMOrder_Month4) { DateTime dt = new DateTime(sel_ATMOrder_Year.ToInt(), item.ToInt(), 1); mq.Add(Query.And(Query.GTE("JobDate", dt), Query.LTE("JobDate", dt.MonthLast()))); } list.Add(Query.Or(mq)); query = Query.And(list); task = Common.MongodbHelper.FindListBy<ResultofOrder>(query, sbd, "table_ResultofOrder"); task = task.GroupBy(a => new { a.Branch, a.Bank, a.JobDate.Value.Month }).Select(a => new ResultofOrder { //Month = a.Key.Month, Branch = a.Key.Branch, Bank = a.Key.Bank, Month = a.Key.Month, Totalorder = a.Sum(i => i.Totalorder), Done = a.Sum(i => i.Done), DropBag = a.Sum(i => i.DropBag), BadCassette = a.Sum(i => i.BadCassette), }).ToList(); } return task; } function GetTheSummaryOfOrder() { $("#dataTableTheSummaryOfOrder").html(""); var sel_TheSummaryOfOrder_Department = $("#sel_TheSummaryOfOrder_Department").val(); var sel_TheSummaryOfOrder_CustomerName = $("#sel_TheSummaryOfOrder_CustomerName").val(); var DailyorMonthly4 = $("#DailyorMonthly4").val(); var startdate4 = $("#startdate4").val(); var enddate4 = $("#enddate4").val(); var sel_ATMOrder_Year = $("#sel_ATMOrder_Year").val(); var sel_ATMOrder_Month4 = $("#sel_ATMOrder_Month4").val(); if (DailyorMonthly4 == "1") { if (startdate4 + "" == "" || enddate4 + "" == "") { toastr.error(SetStr("Error_SelectDay")); return; } } if (DailyorMonthly4 == "2") { if (sel_ATMOrder_Month4 == "" || sel_ATMOrder_Month4 == null) { toastr.error(SetStr("Error_SelectMonth")); return; } } $.ajax({ type: "POST", url: "/Plan/Replenishment/GetTheSummaryOfOrder", dataType: "json", data: { "CityName": sel_TheSummaryOfOrder_Department, "CustomerName": sel_TheSummaryOfOrder_CustomerName, "DailyorMonthly4": DailyorMonthly4, "startdate4": startdate4, "enddate4": enddate4, "sel_ATMOrder_Year": sel_ATMOrder_Year, "sel_ATMOrder_Month4": sel_ATMOrder_Month4 }, success: function (data) { debugger if (data.flg == "2") { //month var row = ''; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="6"><div class="th-inner ">Result of order</div><div class="fht-cell"></div></td></tr>'; for (var i = 0; i < sel_ATMOrder_Month4.length; i++) { row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="6"><div class="th-inner "></div><div class="fht-cell"></div></td></tr>'; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="6"><div class="th-inner "></div><div class="fht-cell">' + (sel_ATMOrder_Month4[i]) + '</div></td></tr>'; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="6"><div class="th-inner "></div><div class="fht-cell"></div></td></tr>'; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">branch</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">Bank</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">Done</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">Drop Bag</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">Bad Cassette</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">Total order</div><div class="fht-cell"></div></td>'; row += '</tr>'; var de = 0, db = 0, bc = 0, to = 0; for (var iz = 0; iz < data.list.length; iz++) { if (Number(sel_ATMOrder_Month4[i]) == Number(data.list[iz]["Month"])) { row += '<tr>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + (data.list[iz]["Branch"]) + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + (data.list[iz]["Bank"]) + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + (data.list[iz]["Done"]) + '</div><div class="fht-cell"></div></td>'; de += Number(data.list[iz]["Done"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + (data.list[iz]["DropBag"]) + '</div><div class="fht-cell"></div></td>'; db += Number(data.list[iz]["DropBag"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + (data.list[iz]["BadCassette"]) + '</div><div class="fht-cell"></div></td>'; bc += Number(data.list[iz]["BadCassette"]); row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + (data.list[iz]["Totalorder"]) + '</div><div class="fht-cell"></div></td>'; to += Number(data.list[iz]["Totalorder"]); row += '</tr>'; } } row += '<tr>'; row += '<td colspan="2" style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">Total</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + de + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + db + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + bc + '</div><div class="fht-cell"></div></td>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; " ><div class="th-inner ">' + to + '</div><div class="fht-cell"></div></td>'; row += '</tr>'; } //var row = '<tr>'; //row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Summary_Branch") + '</div><div class="fht-cell"></div></td>'; //row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Dispatch_Bank") + '</div><div class="fht-cell"></div></td>'; //row += '<td colspan="4" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + (startdate + " ~ " + enddate) + '</div><div class="fht-cell"></div></td>'; //row += '<td rowspan="2" style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("AtmAtmCount") + '</div><div class="fht-cell"></div></td>'; //row += '</tr>'; //row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_OrderInAdvance") + '</div><div class="fht-cell"></div></td>'; //row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_SameDayOrder") + '</div><div class="fht-cell"></div></td>'; //row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_CassetteDamage") + '</div><div class="fht-cell"></div></td>'; //row += '<td style="text-align: center; vertical-align: middle; width: 120px; ""><div class="th-inner ">' + SetStr("Replenishment_DropBag") + '</div><div class="fht-cell"></div></td></tr>'; ////$("#dataTableBankDayTypeOfOrder").append(row); //var OrderInAdvance = 0, SameDayOrder = 0, CassetteDamage = 0, DropBag = 0, TotalOrder = 0; //Bank = data.list[0]["Branch"]; //var bk = ""; //$.each(data.list, function (i, item) { // //Bank = item["Branch"]; // row += '<tr>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Branch"] + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["Bank"] + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["OrderInAdvance"] + '</td>'; // OrderInAdvance += Number(item["OrderInAdvance"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["SameDayOrder"] + '</td>'; // SameDayOrder += Number(item["SameDayOrder"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["CassetteDamage"] + '</td>'; // CassetteDamage += Number(item["CassetteDamage"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["DropBag"] + '</td>'; // DropBag += Number(item["DropBag"]); // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + item["TotalOrder"] + '</td></tr>'; // TotalOrder += Number(item["TotalOrder"]); // try { // bk = data.list[i + 1]["Branch"]; // } catch (e) { // bk = ""; // } // Bank = item["Branch"]; // if (Bank != bk) { // row += '<tr>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;"></td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SetStr("AtmAtmCount") + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + OrderInAdvance + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + SameDayOrder + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + CassetteDamage + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + DropBag + '</td>'; // row += '<td style="text-align: center; vertical-align: middle; width: 120px;">' + TotalOrder + '</td></tr>'; // //Bank = 0, // OrderInAdvance = 0, // SameDayOrder = 0, // CassetteDamage = 0, // DropBag = 0, // TotalOrder = 0; // } $("#dataTableTheSummaryOfOrder").append(row); } if (data.flg == "1") { debugger //day var row = ''; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (3 + data.Count) + '"><div class="th-inner ">Result of order</div><div class="fht-cell"></div></td></tr>'; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (3 + data.Count) + '"><div class="th-inner ">' + ((startdate4 + " ~ " + enddate4)) + '</div><div class="fht-cell"></div></td></tr>'; for (var i = 1; i <= 4; i++) { var obj = {}; for (var it00 = 1; it00 <= data.Count + 1; it00++) { obj["T" + it00] = 0; } var type = ""; switch (i) { case 1: type = "Bad Cassette"; break; case 2: type = "Drop Bag"; break; case 3: type = "Done"; break; case 4: type = "Total Order"; break; } row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (3 + data.Count) + '"><div class="th-inner "></div><div class="fht-cell"></div></td></tr>'; row += '<tr><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (2) + '"><div class="th-inner ">' + (type) + '</div><div class="fht-cell"></div></td><td style="text-align: center; vertical-align: middle; width: 120px; " colspan="' + (1 + data.Count) + '"><div class="th-inner "></div><div class="fht-cell"></div></td></tr>'; row += '<tr>'; for (var itembt in data.list[0]) { if (itembt == "Type") continue row += '<td style="text-align: center; vertical-align: middle; width: 120px;"><div class="th-inner ">' + (itembt) + '</div><div class="fht-cell"></div></td>'; } row += '<td style="text-align: center; vertical-align: middle; width: 120px;"><div class="th-inner ">Total</div><div class="fht-cell"></div></td>'; row += '</tr>'; for (var izz = 0; izz < data.list.length; izz++) { var rowTotal = 0; if (data.list[izz]["Type"] != i) continue row += '<tr>'; var numberiiii = 1; for (var iii in data.list[izz]) { if (iii == "Type") continue row += '<td style="text-align: center; vertical-align: middle; width: 120px;"><div class="th-inner ">' + (data.list[izz][iii]) + '</div><div class="fht-cell"></div></td>'; if (iii != "Branch" && iii != "Bank") { rowTotal += Number(data.list[izz][iii]); obj["T" + numberiiii] += Number(data.list[izz][iii]); numberiiii++; } } obj["T" + numberiiii] += Number(rowTotal); row += '<td style="text-align: center; vertical-align: middle; width: 120px;"><div class="th-inner ">' + (rowTotal) + '</div><div class="fht-cell"></div></td>'; row += '</tr>'; } row += '<tr>'; row += '<td style="text-align: center; vertical-align: middle; width: 120px; "colspan="2"><div class="th-inner ">Total</div><div class="fht-cell"></div></td>'; for (var it = 1; it <= data.Count + 1; it++) { row += '<td style="text-align: center; vertical-align: middle; width: 120px;"><div class="th-inner ">' + (obj["T" + it]) + '</div><div class="fht-cell"></div></td>'; } row += '</tr>'; } $("#dataTableTheSummaryOfOrder").append(row); } } }) }
统计行 列
在后台生成也好
在前台用js拼接也好
都行 js的对象可以 动态添加属性
报表 列动态不固定
最后需要一行 Total 统计每列数 如果在js 中动态组成字段 然后计算的话 不好确定字段个数
也可以根据js 对象 统计 js 对象是动态加载字段的 ~~~
var obj = {};
obj.t50 = 50;
for/in 语句用于循环对象属性。

浙公网安备 33010602011771号