对于页面上显示 一些跨行扩列 动态加载列 的 各种奇葩表格的 记录

类似这种很多数据的 而且数据列 又不确定的 直接用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 语句用于循环对象属性。

posted @ 2018-09-06 20:41  ~雨落忧伤~  阅读(268)  评论(0)    收藏  举报