477 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			477 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
| using BLL;
 | ||
| using System;
 | ||
| using System.Text;
 | ||
| using System.Collections.Generic;
 | ||
| using System.Linq;
 | ||
| using Newtonsoft.Json.Linq;
 | ||
| 
 | ||
| namespace FineUIPro.Web.ZHGL.CQMSData
 | ||
| {
 | ||
|     public partial class CQMSCheckData : PageBase
 | ||
|     {
 | ||
|         //使用DateTime.Now获取当前日期,然后获取该月第一天
 | ||
|         DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
 | ||
|         
 | ||
|         public Model.SGGLDB db = Funs.DB;
 | ||
|         
 | ||
|         protected void Page_Load(object sender, EventArgs e)
 | ||
|         {
 | ||
|             if (!IsPostBack)
 | ||
|             {
 | ||
|                 this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
 | ||
|                 // 绑定表格
 | ||
|                 this.BindGrid();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         #region 绑定数据
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 绑定数据
 | ||
|         /// </summary>
 | ||
|         private void BindGrid()
 | ||
|         {
 | ||
|             var list = BaseDataService.GetBeUnderConstruction();
 | ||
| 
 | ||
|             if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
 | ||
|             {
 | ||
|                 list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList();
 | ||
|             }
 | ||
| 
 | ||
|             var result = new List<dynamic>();
 | ||
|             foreach (var project in list)
 | ||
|             {
 | ||
|                 int value1 = 0; 
 | ||
|                 int value2 = 0; 
 | ||
|                 int value3 = 0;
 | ||
|                 int value4 = 0;
 | ||
|                 string value5 = "0%";
 | ||
|                 string value6 = "0%";
 | ||
|                 int value7 = 0;
 | ||
|                 int value8 = 0;
 | ||
|                 int value9 = 0;
 | ||
|                 int value10 = 0;
 | ||
|                 int value11 = 0;
 | ||
|                 int value12 = 0;
 | ||
|                 int value13 = 0;
 | ||
|                 int value14 = 0;
 | ||
|                 string value15 = "0%";
 | ||
| 
 | ||
|                 
 | ||
| 
 | ||
|                 #region 现场共检点、共检合格点、共检一次合格率
 | ||
| 
 | ||
|                 //所有集合
 | ||
|                 List<Model.View_MonthReport_InspectionManagement> totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", Convert.ToDateTime("2015-01-01"), DateTime.Now, false);
 | ||
|                 //当期集合
 | ||
|                 List<Model.View_MonthReport_InspectionManagement> managementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", firstDayOfMonth, DateTime.Now, false);
 | ||
| 
 | ||
|                 
 | ||
|                 value1 = managementList.Count();
 | ||
|                 value2 = totalManagementList.Count();
 | ||
|                 
 | ||
|                 value3 = managementList.Count(x => x.IsOnceQualified == true);
 | ||
|                 value4 = totalManagementList.Count(x => x.IsOnceQualified == true);
 | ||
| 
 | ||
|                 
 | ||
|                 if (value1 != 0)//被除数不能为零
 | ||
|                 {
 | ||
|                     value5 = Math.Round((double)value3 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入
 | ||
|                 }
 | ||
|                 
 | ||
| 
 | ||
|                 if (value2 != 0)//被除数不能为零
 | ||
|                 {
 | ||
|                     value6 = Math.Round((double)value4 / (double)value2 * 100, 2) + "%";//保留两位小数、后四舍五入
 | ||
|                 }
 | ||
|                 
 | ||
|                 
 | ||
|                 #endregion
 | ||
| 
 | ||
| 
 | ||
|                 #region 计量器具管理(台套)
 | ||
| 
 | ||
|                 var query = (from c in db.Comprehensive_InspectionMachine
 | ||
|                     where c.ProjectId == project.ProjectId && c.InspectionType.Equals("计量")
 | ||
|                     select new
 | ||
|                     {
 | ||
|                         c.InspectionDate,
 | ||
|                         c.UnitsCount,
 | ||
|                         c.ProjectId,
 | ||
|                     }).ToList();
 | ||
|                 value7 = query.Where(x => x.InspectionDate >= firstDayOfMonth).Sum(x => x.UnitsCount ?? 0);
 | ||
|                 value8 = query.Sum(x => x.UnitsCount ?? 0);
 | ||
| 
 | ||
|                 #endregion
 | ||
|            
 | ||
|                 
 | ||
|                 #region 质量专项检查
 | ||
| 
 | ||
|                 var query1 = (from c in db.Check_JointCheck
 | ||
|                     where c.ProjectId == project.ProjectId
 | ||
|                     select new
 | ||
|                     {
 | ||
|                         c.CheckDate,
 | ||
|                         c.ProjectId,
 | ||
|                         c.CheckType
 | ||
|                     }).ToList();
 | ||
|                 value9 = query1.Where(x => x.CheckDate >= firstDayOfMonth).Count();
 | ||
|                 value10 = query1.Count();
 | ||
| 
 | ||
|                 #endregion
 | ||
|                 
 | ||
|                 #region 危险源检查
 | ||
|                 
 | ||
|                 var query2 = from c in db.Comprehensive_NCRManagement
 | ||
|                     where c.ProjectId == project.ProjectId
 | ||
|                     select new
 | ||
|                     {
 | ||
|                         c.NCRManagementId,
 | ||
|                         c.ProjectId,
 | ||
|                         c.IssuedDate,
 | ||
|                         c.Status,
 | ||
|                         c.ImplementationFrontState,
 | ||
|                     };
 | ||
| 
 | ||
|                 var AllList = query2.ToList();
 | ||
|                 var unitNCRStatic = query2.Where(x => x.IssuedDate >= firstDayOfMonth);
 | ||
|                 
 | ||
|                 
 | ||
|                 value11 = unitNCRStatic.Count();
 | ||
|                 value12 = AllList.Count();
 | ||
|                 
 | ||
|                 value13 = unitNCRStatic.Where(x => x.ImplementationFrontState == "已闭合").Count();
 | ||
|                 value14 = AllList.Where(x => x.ImplementationFrontState == "已闭合").Count();
 | ||
| 
 | ||
|                 
 | ||
| 
 | ||
|                 if (value12 != 0)//被除数不能为零
 | ||
|                 {
 | ||
|                     value15 = Math.Round((double)value14 / (double)value12 * 100, 2) + "%";//保留两位小数、后四舍五入
 | ||
|                 }
 | ||
|                 
 | ||
|                 #endregion
 | ||
| 
 | ||
|                 // 构造动态对象用于绑定到Grid
 | ||
|                 result.Add(new
 | ||
|                 {
 | ||
|                     project.ProjectId,
 | ||
|                     project.ProjectName,
 | ||
|                     project.ShortName,
 | ||
|                     Value1 = value1,
 | ||
|                     Value2 = value2,
 | ||
|                     Value3 = value3, 
 | ||
|                     Value4 = value4, 
 | ||
|                     Value5 = value5, 
 | ||
|                     Value6 = value6, 
 | ||
|                     Value7 = value7, 
 | ||
|                     Value8 = value8, 
 | ||
|                     Value9 = value9, 
 | ||
|                     Value10 = value10, 
 | ||
|                     Value11 = value11, 
 | ||
|                     Value12 = value12, 
 | ||
|                     Value13 = value13, 
 | ||
|                     Value14 = value14,
 | ||
|                     Value15 = value15, 
 | ||
|                 });
 | ||
|             }
 | ||
| 
 | ||
|             var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
 | ||
|             Grid1.RecordCount = result.Count;
 | ||
|             Grid1.DataSource = pagedResult;
 | ||
|             Grid1.DataBind();
 | ||
| 
 | ||
|             var Value1Sum = pagedResult.Sum(p => p.Value1);
 | ||
|             var Value2Sum = pagedResult.Sum(p => p.Value2);
 | ||
|             var Value3Sum = pagedResult.Sum(p => p.Value3);
 | ||
|             var Value4Sum = pagedResult.Sum(p => p.Value4);
 | ||
|             var Value12Sum = pagedResult.Sum(p => p.Value12);
 | ||
|             var Value14Sum = pagedResult.Sum(p => p.Value14);
 | ||
|             JObject summary = new JObject();
 | ||
|             summary.Add("ProjectName", "合计");
 | ||
|             summary.Add("Value1", Value1Sum);
 | ||
|             summary.Add("Value2", Value2Sum);
 | ||
|             summary.Add("Value3", Value3Sum);
 | ||
|             summary.Add("Value4", Value4Sum);
 | ||
|             if (Value1Sum != 0)
 | ||
|             {
 | ||
|                 summary.Add("Value5", Math.Round((double)Value3Sum / (double)Value1Sum * 100, 2) + "%");
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 summary.Add("Value5", "0%");
 | ||
|             }
 | ||
|             if (Value2Sum != 0)
 | ||
|             {
 | ||
|                 summary.Add("Value6", Math.Round((double)Value4Sum / (double)Value2Sum * 100, 2) + "%");
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 summary.Add("Value6", "0%");
 | ||
|             }
 | ||
|             summary.Add("Value7", pagedResult.Sum(p => p.Value7));
 | ||
|             summary.Add("Value8", pagedResult.Sum(p => p.Value8));
 | ||
|             summary.Add("Value9", pagedResult.Sum(p => p.Value9));
 | ||
|             summary.Add("Value10", pagedResult.Sum(p => p.Value10));
 | ||
|             summary.Add("Value11", pagedResult.Sum(p => p.Value11));
 | ||
|             summary.Add("Value12", Value12Sum);
 | ||
|             summary.Add("Value13", pagedResult.Sum(p => p.Value13));
 | ||
|             summary.Add("Value14", Value14Sum);
 | ||
|             if (Value12Sum != 0)
 | ||
|             {
 | ||
|                 summary.Add("Value15", Math.Round((double)Value14Sum / (double)Value12Sum * 100, 2) + "%");
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 summary.Add("Value15", "0%");
 | ||
|             }
 | ||
|             Grid1.SummaryData = summary;
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region GV 数据操作
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 分页
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
 | ||
|         {
 | ||
|             this.BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 排序
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Grid1_Sort(object sender, GridSortEventArgs e)
 | ||
|         {
 | ||
|             this.BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 分页显示条数下拉框
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
 | ||
|         {
 | ||
|             Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
 | ||
|             this.BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
| 
 | ||
|         #region 关闭弹出窗
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 关闭弹出窗
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Window1_Close(object sender, WindowCloseEventArgs e)
 | ||
|         {
 | ||
|             BindGrid();
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #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;
 | ||
|             this.BindGrid();
 | ||
|             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;\">");
 | ||
| 
 | ||
|             // 计算总列数,用于处理表头
 | ||
|             int totalColumns = 0;
 | ||
|             foreach (GridColumn column in grid.Columns)
 | ||
|             {
 | ||
|                 if (column is GroupField groupField && groupField.Columns != null)
 | ||
|                 {
 | ||
|                     totalColumns += groupField.Columns.Count;
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     totalColumns += 1;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             // 第一行表头 - 居中显示
 | ||
|             sb.Append("<tr>");
 | ||
|             foreach (GridColumn column in grid.Columns)
 | ||
|             {
 | ||
|                 if (column is GroupField groupField && groupField.Columns != null)
 | ||
|                 {
 | ||
|                     // 对于分组列,使用colspan跨越子列数量,文本居中
 | ||
|                     sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
 | ||
|                         groupField.HeaderText);
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     // 普通列,跨两行,文本居中
 | ||
|                     sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             sb.Append("</tr>");
 | ||
| 
 | ||
|             // 第二行表头(仅包含分组列的子列)- 居中显示
 | ||
|             bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
 | ||
|             if (hasGroupColumns)
 | ||
|             {
 | ||
|                 sb.Append("<tr>");
 | ||
|                 foreach (GridColumn column in grid.Columns)
 | ||
|                 {
 | ||
|                     if (column is GroupField groupField && groupField.Columns != null)
 | ||
|                     {
 | ||
|                         // 添加分组列的子列标题,居中显示
 | ||
|                         foreach (GridColumn subColumn in groupField.Columns)
 | ||
|                         {
 | ||
|                             sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 sb.Append("</tr>");
 | ||
|             }
 | ||
| 
 | ||
|             // 添加数据行
 | ||
|             foreach (GridRow row in grid.Rows)
 | ||
|             {
 | ||
|                 sb.Append("<tr>");
 | ||
|                 foreach (GridColumn column in grid.Columns)
 | ||
|                 {
 | ||
|                     if (column is GroupField groupField && groupField.Columns != null)
 | ||
|                     {
 | ||
|                         // 处理分组列中的每个子列
 | ||
|                         foreach (GridColumn subColumn in groupField.Columns)
 | ||
|                         {
 | ||
|                             string html = row.Values[subColumn.ColumnIndex].ToString();
 | ||
|                             if (subColumn.ColumnID == "tfNumber")
 | ||
|                             {
 | ||
|                                 html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
 | ||
|                             }
 | ||
| 
 | ||
|                             sb.AppendFormat("<td>{0}</td>", html);
 | ||
|                         }
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         // 处理普通列
 | ||
|                         string html = row.Values[column.ColumnIndex].ToString();
 | ||
|                         if (column.ColumnID == "tfNumber")
 | ||
|                         {
 | ||
|                             html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
 | ||
|                         }
 | ||
| 
 | ||
|                         sb.AppendFormat("<td>{0}</td>", html);
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 sb.Append("</tr>");
 | ||
|             }
 | ||
| 
 | ||
|             // 添加合计行
 | ||
|             if (grid.SummaryData != null)
 | ||
|             {
 | ||
|                 sb.Append("<tr style=\"font-weight:bold; color:red;\">");
 | ||
|                 foreach (GridColumn column in grid.Columns)
 | ||
|                 {
 | ||
|                     if (column is GroupField groupField && groupField.Columns != null)
 | ||
|                     {
 | ||
|                         // 处理分组列中的每个子列
 | ||
|                         foreach (GridColumn subColumn in groupField.Columns)
 | ||
|                         {
 | ||
|                             // 使用反射获取DataField属性值,避免编译错误
 | ||
|                             var dataFieldProperty = subColumn.GetType().GetProperty("DataField");
 | ||
|                             if (dataFieldProperty != null)
 | ||
|                             {
 | ||
|                                 string dataField = dataFieldProperty.GetValue(subColumn, null) as string;
 | ||
|                                 if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
 | ||
|                                 {
 | ||
|                                     sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
 | ||
|                                 }
 | ||
|                                 else
 | ||
|                                 {
 | ||
|                                     sb.Append("<td></td>");
 | ||
|                                 }
 | ||
|                             }
 | ||
|                             else
 | ||
|                             {
 | ||
|                                 sb.Append("<td></td>");
 | ||
|                             }
 | ||
|                         }
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         // 处理普通列
 | ||
|                         // 使用反射获取DataField属性值,避免编译错误
 | ||
|                         var dataFieldProperty = column.GetType().GetProperty("DataField");
 | ||
|                         if (dataFieldProperty != null)
 | ||
|                         {
 | ||
|                             string dataField = dataFieldProperty.GetValue(column, null) as string;
 | ||
|                             if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
 | ||
|                             {
 | ||
|                                 sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
 | ||
|                             }
 | ||
|                             else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
 | ||
|                             {
 | ||
|                                 sb.Append("<td>合计</td>");
 | ||
|                             }
 | ||
|                             else
 | ||
|                             {
 | ||
|                                 sb.Append("<td></td>");
 | ||
|                             }
 | ||
|                         }
 | ||
|                         else
 | ||
|                         {
 | ||
|                             sb.Append("<td></td>");
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 sb.Append("</tr>");
 | ||
|             }
 | ||
| 
 | ||
|             sb.Append("</table>");
 | ||
| 
 | ||
|             return sb.ToString();
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         protected void btSearch_Click(object sender, EventArgs e)
 | ||
|         {
 | ||
|             BindGrid();
 | ||
|         }
 | ||
|     }
 | ||
| } |