using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using BLL; using AspNet = System.Web.UI.WebControls; namespace FineUIPro.Web.CQMS.ManageReport { public partial class CheckStatisc : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); this.txtStartDate.Text = "2015-01-01"; this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now); if (project != null) { if (project.StartDate != null) { this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", project.StartDate); } } BLL.CNProfessionalService.InitCNProfessionalDownList(drpCNProfessional,true); BLL.UnitService.InitUnitByProjectIdUnitTypeDropDownList1(drpUnit,this.CurrUser.LoginProjectId,true); this.drpUnit.Hidden = true; BindStatisc(); } } #region 绑定GridView /// /// 绑定 /// /// public void BindStatisc() { if (this.ckType.SelectedValue == "1") { this.drpCNProfessional.Hidden = true; this.drpUnit.Hidden = false; this.lbUnit.Visible = true; this.lblPostName.Visible = false; UnitStatisc(); } else { this.drpCNProfessional.Hidden = false; this.drpUnit.Hidden = true; this.lbUnit.Visible = false; this.lblPostName.Visible = true; CNProfessionalsStatisc(); } } public void CNProfessionalsStatisc() { DateTime startDate = Convert.ToDateTime(this.txtStartDate.Text.Trim()); DateTime endDate = Convert.ToDateTime(this.txtEndDate.Text.Trim()); DateTime projectStartDate = Convert.ToDateTime("2015-01-01"); List StatisticsList = new List(); Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); if (project != null) { if (project.StartDate != null) { projectStartDate = Convert.ToDateTime(project.StartDate); } } int i = 1; string cNProfessionalId = this.drpCNProfessional.SelectedValue; if (cNProfessionalId != BLL.Const._Null) //某一专业 { List workNames = new List(); //专业下所有集合 List totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, projectStartDate, endDate, false); //专业下当期集合 List managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, startDate, endDate, false); foreach (var item in totalManagementList) { Model.WBS_BreakdownProject breakdownProject = BLL.BreakdownProjectService.GetBreakdownProjectById(item.ControlPointType); if (breakdownProject != null) { Model.WBS_DivisionProject divisionProject = BLL.DivisionProjectService.GetDivisionProjectById(breakdownProject.DivisionProjectId); if (divisionProject != null) { if (!workNames.Contains(divisionProject.DivisionName)) //新增记录 { Model.CheckStatisc checkStatisc = new Model.CheckStatisc(); checkStatisc.Num = i; checkStatisc.WorkName = divisionProject.DivisionName; workNames.Add(divisionProject.DivisionName); checkStatisc.CheckNum = managementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc.TotalCheckNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc.OKNum = managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); checkStatisc.TotalOKNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); StatisticsList.Add(checkStatisc); } else //更新已有记录 { Model.CheckStatisc checkStatisc1 = StatisticsList.FirstOrDefault(x => x.WorkName == divisionProject.DivisionName); checkStatisc1.CheckNum += managementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc1.TotalCheckNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc1.OKNum += managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); checkStatisc1.TotalOKNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); } } } i++; } foreach (var item in StatisticsList) { if (item.CheckNum != 0)//被除数不能为零 { item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.OneOKRate = "0%"; } if (item.TotalCheckNum != 0)//被除数不能为零 { item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.TotalOneOKRate = "0%"; } } } else //所有专业 { var cNProfessionals = from x in Funs.DB.Base_CNProfessional where x.CNProfessionalId != Const.CNProfessionalConstructId orderby x.SortIndex select x; foreach (var item in cNProfessionals) { //专业下所有集合 List totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, item.CNProfessionalId, projectStartDate, endDate, false); //专业下当期集合 List managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, item.CNProfessionalId, startDate, endDate, false); Model.CheckStatisc checkStatisc = new Model.CheckStatisc(); checkStatisc.Num = i; checkStatisc.WorkName = item.ProfessionalName; checkStatisc.CheckNum = managementList.Count(); checkStatisc.TotalCheckNum = totalManagementList.Count(); checkStatisc.OKNum = managementList.Count(x => x.IsOnceQualified == true); checkStatisc.TotalOKNum = totalManagementList.Count(x => x.IsOnceQualified == true); StatisticsList.Add(checkStatisc); i++; } foreach (var item in StatisticsList) { if (item.CheckNum != 0)//被除数不能为零 { item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.OneOKRate = "0%"; } if (item.TotalCheckNum != 0)//被除数不能为零 { item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.TotalOneOKRate = "0%"; } } } if (StatisticsList.Count() > 0) //增加总计 { Model.CheckStatisc StatisticsLast = new Model.CheckStatisc(); StatisticsLast.Num = StatisticsList.Count() + 1; StatisticsLast.WorkName = "合计"; foreach (Model.CheckStatisc item in StatisticsList) { StatisticsLast.CheckNum += item.CheckNum; StatisticsLast.TotalCheckNum += item.TotalCheckNum; StatisticsLast.OKNum += item.OKNum; StatisticsLast.TotalOKNum += item.TotalOKNum; } if (StatisticsLast.CheckNum != 0)//被除数不能为零 { StatisticsLast.OneOKRate = Math.Round((double)StatisticsLast.OKNum / (double)StatisticsLast.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsLast.OneOKRate = "0%"; } if (StatisticsLast.TotalCheckNum != 0)//被除数不能为零 { StatisticsLast.TotalOneOKRate = Math.Round((double)StatisticsLast.TotalOKNum / (double)StatisticsLast.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsLast.TotalOneOKRate = "0%"; } StatisticsList.Add(StatisticsLast); } this.Grid1.DataSource = StatisticsList; this.Grid1.DataBind(); } public void UnitStatisc() { DateTime startDate = Convert.ToDateTime(this.txtStartDate.Text.Trim()); DateTime endDate = Convert.ToDateTime(this.txtEndDate.Text.Trim()); DateTime projectStartDate = Convert.ToDateTime("2015-01-01"); List StatisticsList = new List(); Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); if (project != null) { if (project.StartDate != null) { projectStartDate = Convert.ToDateTime(project.StartDate); } } int i = 1; string unitId = this.drpUnit.SelectedValue; if (unitId != BLL.Const._Null && !string.IsNullOrEmpty(unitId)) //某一专业 { List workNames = new List(); //专业下所有集合 List totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, unitId, projectStartDate, endDate, false); //专业下当期集合 List managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, unitId, startDate, endDate, false); foreach (var item in totalManagementList) { Model.WBS_BreakdownProject breakdownProject = BLL.BreakdownProjectService.GetBreakdownProjectById(item.ControlPointType); if (breakdownProject != null) { Model.WBS_DivisionProject divisionProject = BLL.DivisionProjectService.GetDivisionProjectById(breakdownProject.DivisionProjectId); if (divisionProject != null) { if (!workNames.Contains(divisionProject.DivisionName)) //新增记录 { Model.CheckStatisc checkStatisc = new Model.CheckStatisc(); checkStatisc.Num = i; checkStatisc.WorkName = divisionProject.DivisionName; workNames.Add(divisionProject.DivisionName); checkStatisc.CheckNum = managementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc.TotalCheckNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc.OKNum = managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); checkStatisc.TotalOKNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); StatisticsList.Add(checkStatisc); } else //更新已有记录 { Model.CheckStatisc checkStatisc1 = StatisticsList.FirstOrDefault(x => x.WorkName == divisionProject.DivisionName); checkStatisc1.CheckNum += managementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc1.TotalCheckNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType); checkStatisc1.OKNum += managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); checkStatisc1.TotalOKNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true); } } } i++; } foreach (var item in StatisticsList) { if (item.CheckNum != 0)//被除数不能为零 { item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.OneOKRate = "0%"; } if (item.TotalCheckNum != 0)//被除数不能为零 { item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.TotalOneOKRate = "0%"; } } } else //所有专业 { //var cNProfessionals = from x in Funs.DB.WBS_CNProfessional orderby x.SortIndex select x; var units = BLL.UnitService.GetUnitByProjectIdList(this.CurrUser.LoginProjectId); foreach (var item in units) { //专业下所有集合 List totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, item.UnitId, projectStartDate, endDate, false); //专业下当期集合 List managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, item.UnitId, startDate, endDate, false); Model.CheckStatisc checkStatisc = new Model.CheckStatisc(); checkStatisc.Num = i; checkStatisc.WorkName = item.UnitName; checkStatisc.CheckNum = managementList.Count(); checkStatisc.TotalCheckNum = totalManagementList.Count(); checkStatisc.OKNum = managementList.Count(x => x.IsOnceQualified == true); checkStatisc.TotalOKNum = totalManagementList.Count(x => x.IsOnceQualified == true); StatisticsList.Add(checkStatisc); i++; } foreach (var item in StatisticsList) { if (item.CheckNum != 0)//被除数不能为零 { item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.OneOKRate = "0%"; } if (item.TotalCheckNum != 0)//被除数不能为零 { item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { item.TotalOneOKRate = "0%"; } } } if (StatisticsList.Count() > 0) //增加总计 { Model.CheckStatisc StatisticsLast = new Model.CheckStatisc(); StatisticsLast.Num = StatisticsList.Count() + 1; StatisticsLast.WorkName = "合计"; foreach (Model.CheckStatisc item in StatisticsList) { StatisticsLast.CheckNum += item.CheckNum; StatisticsLast.TotalCheckNum += item.TotalCheckNum; StatisticsLast.OKNum += item.OKNum; StatisticsLast.TotalOKNum += item.TotalOKNum; } if (StatisticsLast.CheckNum != 0)//被除数不能为零 { StatisticsLast.OneOKRate = Math.Round((double)StatisticsLast.OKNum / (double)StatisticsLast.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsLast.OneOKRate = "0%"; } if (StatisticsLast.TotalCheckNum != 0)//被除数不能为零 { StatisticsLast.TotalOneOKRate = Math.Round((double)StatisticsLast.TotalOKNum / (double)StatisticsLast.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsLast.TotalOneOKRate = "0%"; } StatisticsList.Add(StatisticsLast); } this.Grid1.DataSource = StatisticsList; this.Grid1.DataBind(); } #endregion protected void ckType_SelectedIndexChanged(object sender, EventArgs e) { BindStatisc(); } protected void btnSearch_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.txtStartDate.Text.Trim()) || string.IsNullOrEmpty(this.txtEndDate.Text.Trim())) { Alert.ShowInTop("开始和结束日期不能为空!", MessageBoxIcon.Warning); return; } if (Convert.ToDateTime(this.txtStartDate.Text.Trim()) >= Convert.ToDateTime(this.txtEndDate.Text.Trim())) { Alert.ShowInTop("开始日期不能大于结束日期!", MessageBoxIcon.Warning); return; } BindStatisc(); } protected void btnRset_Click(object sender, EventArgs e) { drpUnit.SelectedIndex = 0; drpCNProfessional.SelectedIndex = 0; txtStartDate.Text = ""; txtEndDate.Text = ""; ckType.SelectedValue = "2"; BindStatisc(); } protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { BindStatisc(); } #region 导出按钮 /// 导出按钮 /// /// /// protected void btnOut_Click(object sender, EventArgs e) { Response.ClearContent(); string filename = Funs.GetNewFileName(); Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("现场检查情况" + filename, System.Text.Encoding.UTF8) + ".xls"); Response.ContentType = "application/excel"; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.Write(GetGridTableHtml(Grid1)); Response.End(); } /// /// 导出方法 /// /// /// private string GetGridTableHtml(Grid grid) { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); sb.Append(""); grid.PageSize = 10000; BindStatisc(); foreach (GridColumn column in grid.Columns) { sb.AppendFormat("", column.HeaderText); } sb.Append(""); foreach (GridRow row in grid.Rows) { sb.Append(""); foreach (GridColumn column in grid.Columns) { string html = row.Values[column.ColumnIndex].ToString(); if (column.ColumnID == "tfNumber") { html = (row.FindControl("labNumber") as AspNet.Label).Text; } sb.AppendFormat("", html); } sb.Append(""); } sb.Append("
{0}
{0}
"); return sb.ToString(); } #endregion } }