208 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			208 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | 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 NCRStatisc : 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); | |||
|  |                     } | |||
|  |                 } | |||
|  |                 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(); | |||
|  |         } | |||
|  |         #region 绑定GridView | |||
|  |         /// <summary> | |||
|  |         /// 绑定 | |||
|  |         /// </summary> | |||
|  |         /// <param name="cNProfessionalId"></param> | |||
|  |         public void BindStatisc() | |||
|  |         { | |||
|  |             DateTime startDate = Convert.ToDateTime(this.txtStartDate.Text.Trim()); | |||
|  |             DateTime endDate = Convert.ToDateTime(this.txtEndDate.Text.Trim()); | |||
|  |             //DateTime projectStartDate = Convert.ToDateTime("2015-01-01"); | |||
|  |             List<Model.NCRStatisc> StatisticsList = new List<Model.NCRStatisc>(); | |||
|  |             //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; | |||
|  |             if (this.ckType.SelectedValue == "1")  //按单位 | |||
|  |             { | |||
|  |                 //所有集合 | |||
|  |                 List<Model.Comprehensive_NCRManagement> totalManagementList = BLL.NCRManagementService.GetNCRManagementListByDate(this.CurrUser.LoginProjectId, startDate, endDate); | |||
|  |                 List<string> unitNames = (from x in totalManagementList select x.ReceiveUnit).Distinct().ToList(); | |||
|  |                 foreach (var item in unitNames) | |||
|  |                 { | |||
|  |                     //当期集合 | |||
|  |                     List<Model.Comprehensive_NCRManagement> managementList = BLL.NCRManagementService.GetNCRManagementListByUnitNameAndDate(this.CurrUser.LoginProjectId, item, startDate, endDate); | |||
|  |                     Model.NCRStatisc NCRStatisc = new Model.NCRStatisc(); | |||
|  |                     NCRStatisc.Num = i; | |||
|  |                     NCRStatisc.WorkName = BLL.UnitService.getUnitNamesUnitIds(item); | |||
|  |                     NCRStatisc.CheckNum = managementList.Count(); | |||
|  |                     NCRStatisc.OKNum = managementList.Count(x => x.CompleteDate != null); | |||
|  |                     NCRStatisc.NotOKNum = managementList.Count(x => x.CompleteDate == null); | |||
|  |                     NCRStatisc.Remark = ""; | |||
|  |                     if (NCRStatisc.CheckNum != 0)//被除数不能为零 | |||
|  |                     { | |||
|  |                         NCRStatisc.OKRate = Math.Round((double)NCRStatisc.OKNum / (double)NCRStatisc.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         NCRStatisc.OKRate = "0%"; | |||
|  |                     } | |||
|  |                     StatisticsList.Add(NCRStatisc); | |||
|  |                     i++; | |||
|  |                 } | |||
|  |             } | |||
|  |             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<Model.Comprehensive_NCRManagement> managementList = BLL.NCRManagementService.GetNCRManagementListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, item.CNProfessionalId, startDate, endDate); | |||
|  |                     Model.NCRStatisc NCRStatisc = new Model.NCRStatisc(); | |||
|  |                     NCRStatisc.Num = i; | |||
|  |                     NCRStatisc.WorkName = item.ProfessionalName; | |||
|  |                     NCRStatisc.CheckNum = managementList.Count(); | |||
|  |                     NCRStatisc.OKNum = managementList.Count(x => x.CompleteDate != null); | |||
|  |                     NCRStatisc.NotOKNum = managementList.Count(x => x.CompleteDate == null); | |||
|  |                     NCRStatisc.Remark = ""; | |||
|  |                     if (NCRStatisc.CheckNum != 0)//被除数不能为零 | |||
|  |                     { | |||
|  |                         NCRStatisc.OKRate = Math.Round((double)NCRStatisc.OKNum / (double)NCRStatisc.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         NCRStatisc.OKRate = "0%"; | |||
|  |                     } | |||
|  |                     StatisticsList.Add(NCRStatisc); | |||
|  |                     i++; | |||
|  |                 } | |||
|  |             } | |||
|  |             if (StatisticsList.Count() > 0)   //增加总计 | |||
|  |             { | |||
|  |                 Model.NCRStatisc StatisticsLast = new Model.NCRStatisc(); | |||
|  |                 StatisticsLast.Num = StatisticsList.Count() + 1; | |||
|  |                 StatisticsLast.WorkName = "合计"; | |||
|  |                 StatisticsLast.Remark = ""; | |||
|  |                 foreach (Model.NCRStatisc item in StatisticsList) | |||
|  |                 { | |||
|  |                     StatisticsLast.CheckNum += item.CheckNum; | |||
|  |                     StatisticsLast.OKNum += item.OKNum; | |||
|  |                     StatisticsLast.NotOKNum += item.NotOKNum; | |||
|  |                 } | |||
|  |                 if (StatisticsLast.CheckNum != 0)//被除数不能为零 | |||
|  |                 { | |||
|  |                     StatisticsLast.OKRate = Math.Round((double)StatisticsLast.OKNum / (double)StatisticsLast.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入 | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     StatisticsLast.OKRate = "0%"; | |||
|  |                 } | |||
|  |                 StatisticsList.Add(StatisticsLast); | |||
|  |             } | |||
|  |             this.Grid1.DataSource = StatisticsList; | |||
|  |             this.Grid1.DataBind(); | |||
|  |         } | |||
|  |         #endregion | |||
|  |         protected void ckType_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             BindStatisc(); | |||
|  |         } | |||
|  |         protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             BindStatisc(); | |||
|  |         } | |||
|  |         #region 导出按钮 | |||
|  |         /// 导出按钮 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         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(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 导出方法 | |||
|  |         /// </summary> | |||
|  |         /// <param name="grid"></param> | |||
|  |         /// <returns></returns> | |||
|  |         private string GetGridTableHtml(Grid grid) | |||
|  |         { | |||
|  |             StringBuilder sb = new StringBuilder(); | |||
|  |             sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>"); | |||
|  |             sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">"); | |||
|  |             sb.Append("<tr>"); | |||
|  |             grid.PageSize = 10000; | |||
|  |             BindStatisc(); | |||
|  |             foreach (GridColumn column in grid.Columns) | |||
|  |             { | |||
|  |                 sb.AppendFormat("<td>{0}</td>", column.HeaderText); | |||
|  |             } | |||
|  |             sb.Append("</tr>"); | |||
|  |             foreach (GridRow row in grid.Rows) | |||
|  |             { | |||
|  |                 sb.Append("<tr>"); | |||
|  |                 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("<td>{0}</td>", html); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 sb.Append("</tr>"); | |||
|  |             } | |||
|  | 
 | |||
|  |             sb.Append("</table>"); | |||
|  | 
 | |||
|  |             return sb.ToString(); | |||
|  |         } | |||
|  |         #endregion | |||
|  |     } | |||
|  | } |