using BLL; using FineUIPro.Web.Controls; using Model; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Text; using AspNet = System.Web.UI.WebControls; namespace FineUIPro.Web.HJGL.WeldingReport { public partial class NDTTotalReport : PageBase { #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGrid(); } } private void BindGrid() { string strSql1 = @"select unit.UnitId+ workarea.WorkAreaId id,unit.UnitId,unit.UnitCode,unit.UnitName,install.InstallationName, workarea.WorkAreaCode ,workarea.WorkAreaId from Base_Unit unit left join Project_ProjectUnit projectUnit on unit.UnitId = projectUnit.UnitId left join ProjectData_WorkArea workarea on workarea.UnitId= unit.UnitId and workarea.ProjectId = projectUnit.ProjectId left join Project_Installation install on install.InstallationId = workarea.InstallationId and install.ProjectId=projectUnit.ProjectId where workarea.WorkAreaId is not null and projectUnit.UnitType not in ('7','6','3') and projectUnit.ProjectId = @ProjectId"; SqlParameter[] parameter1 = new SqlParameter[] { new SqlParameter("@ProjectId",this.CurrUser.LoginProjectId)}; DataTable tb1 = SQLHelper.GetDataTableRunText(strSql1, parameter1); string strSql2 = @"select iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode,count(distinct jot.JOT_ID) as num from CH_Trust trust left join CH_TrustItem trustItem on trust.CH_TrustID = trustItem.CH_TrustID left join PW_JointInfo jot on jot.JOT_ID = trustItem.JOT_ID left join PW_IsoInfo iso on iso.ISO_ID=jot.ISO_ID left join Base_DetectionType DetectionType on trust.CH_NDTMethod = DetectionType.DetectionTypeId where jot.ProjectId=@ProjectId and CH_AuditMan is null group by iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode"; SqlParameter[] parameter2 = new SqlParameter[] { new SqlParameter("@ProjectId",this.CurrUser.LoginProjectId)}; DataTable tb2 = SQLHelper.GetDataTableRunText(strSql2, parameter2); string strSql3 = @"select iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode,count(distinct jot.JOT_ID) as num from CH_Trust trust left join CH_TrustItem trustItem on trust.CH_TrustID = trustItem.CH_TrustID left join PW_JointInfo jot on jot.JOT_ID = trustItem.JOT_ID left join PW_IsoInfo iso on iso.ISO_ID=jot.ISO_ID left join Base_DetectionType DetectionType on trust.CH_NDTMethod = DetectionType.DetectionTypeId where jot.ProjectId=@ProjectId and CH_AuditMan is not null group by iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode"; SqlParameter[] parameter3 = new SqlParameter[] { new SqlParameter("@ProjectId",this.CurrUser.LoginProjectId)}; DataTable tb3 = SQLHelper.GetDataTableRunText(strSql3, parameter3); string strSql4 = @"select iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode,count(distinct jot.JOT_ID) as num from CH_Check chcheck left join CH_CheckItem checkitem on chcheck.CHT_CheckID = checkitem.CHT_CheckID left join CH_Trust trust on trust.CH_TrustID = chcheck.CH_TrustID left join PW_JointInfo jot on jot.JOT_ID = checkitem.JOT_ID left join PW_IsoInfo iso on iso.ISO_ID=jot.ISO_ID left join Base_DetectionType DetectionType on trust.CH_NDTMethod = DetectionType.DetectionTypeId where jot.ProjectId=@ProjectId and CHT_AuditMan is null group by iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode"; SqlParameter[] parameter4 = new SqlParameter[] { new SqlParameter("@ProjectId",this.CurrUser.LoginProjectId)}; DataTable tb4 = SQLHelper.GetDataTableRunText(strSql4, parameter4); string strSql5 = @"select iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode,count(distinct jot.JOT_ID) as num from CH_Check chcheck left join CH_CheckItem checkitem on chcheck.CHT_CheckID = checkitem.CHT_CheckID left join CH_Trust trust on trust.CH_TrustID = chcheck.CH_TrustID left join PW_JointInfo jot on jot.JOT_ID = checkitem.JOT_ID left join PW_IsoInfo iso on iso.ISO_ID=jot.ISO_ID left join Base_DetectionType DetectionType on trust.CH_NDTMethod = DetectionType.DetectionTypeId where jot.ProjectId=@ProjectId and CHT_AuditMan is not null group by iso.WorkAreaId,iso.UnitId,DetectionType.DetectionTypeCode"; SqlParameter[] parameter5 = new SqlParameter[] { new SqlParameter("@ProjectId",this.CurrUser.LoginProjectId)}; DataTable tb5 = SQLHelper.GetDataTableRunText(strSql5, parameter5); if (tb1 != null ) { tb1.Columns.Add("t1y"); tb1.Columns.Add("t2y"); tb1.Columns.Add("t3y"); tb1.Columns.Add("t4y"); tb1.Columns.Add("t5y"); tb1.Columns.Add("t6y"); tb1.Columns.Add("t1n"); tb1.Columns.Add("t2n"); tb1.Columns.Add("t3n"); tb1.Columns.Add("t4n"); tb1.Columns.Add("t5n"); tb1.Columns.Add("t6n"); tb1.Columns.Add("c1y"); tb1.Columns.Add("c2y"); tb1.Columns.Add("c3y"); tb1.Columns.Add("c4y"); tb1.Columns.Add("c5y"); tb1.Columns.Add("c6y"); tb1.Columns.Add("c1n"); tb1.Columns.Add("c2n"); tb1.Columns.Add("c3n"); tb1.Columns.Add("c4n"); tb1.Columns.Add("c5n"); tb1.Columns.Add("c6n"); for (int i = 0; i < tb1.Rows.Count; i++) { int t1y = 0; int t2y = 0; int t3y = 0; int t4y = 0; int t5y = 0; int t6y = 0; int t1n = 0; int t2n = 0; int t3n = 0; int t4n = 0; int t5n = 0; int t6n = 0; int c1y = 0; int c2y = 0; int c3y = 0; int c4y = 0; int c5y = 0; int c6y = 0; int c1n = 0; int c2n = 0; int c3n = 0; int c4n = 0; int c5n = 0; int c6n = 0; for (int j = 0; j < tb2.Rows.Count; j++) { if (tb1.Rows[i]["WorkAreaId"].ToString() == tb2.Rows[j]["WorkAreaId"].ToString() && tb1.Rows[i]["UnitId"].ToString() == tb2.Rows[j]["UnitId"].ToString()) { switch (tb2.Rows[j]["DetectionTypeCode"].ToString()) { case "RT\\UT": case "RT": t1y+=int.Parse(tb2.Rows[j]["num"].ToString()); break; case "PT": t2y += int.Parse(tb2.Rows[j]["num"].ToString()); break; case "MT": t3y += int.Parse(tb2.Rows[j]["num"].ToString()); break; case "UT": t4y += int.Parse(tb2.Rows[j]["num"].ToString()); break; case "TOFD\\UT\\MT": case "TOFD\\MT": case "3D-TFM": case "TOFD": t5y += int.Parse(tb2.Rows[j]["num"].ToString()); break; case "PA": t6y += int.Parse(tb2.Rows[j]["num"].ToString()); break; } } } for (int j = 0; j < tb3.Rows.Count; j++) { if (tb1.Rows[i]["WorkAreaId"].ToString() == tb3.Rows[j]["WorkAreaId"].ToString() && tb1.Rows[i]["UnitId"].ToString() == tb3.Rows[j]["UnitId"].ToString()) { switch (tb3.Rows[j]["DetectionTypeCode"].ToString()) { case "RT\\UT": case "RT": t1n += int.Parse(tb3.Rows[j]["num"].ToString()); break; case "PT": t2n += int.Parse(tb3.Rows[j]["num"].ToString()); break; case "MT": t3n += int.Parse(tb3.Rows[j]["num"].ToString()); break; case "UT": t4n += int.Parse(tb3.Rows[j]["num"].ToString()); break; case "TOFD\\UT\\MT": case "TOFD\\MT": case "3D-TFM": case "TOFD": t5n += int.Parse(tb3.Rows[j]["num"].ToString()); break; case "PA": t6n += int.Parse(tb3.Rows[j]["num"].ToString()); break; } } } for (int j = 0; j < tb4.Rows.Count; j++) { if (tb1.Rows[i]["WorkAreaId"].ToString() == tb4.Rows[j]["WorkAreaId"].ToString() && tb1.Rows[i]["UnitId"].ToString() == tb4.Rows[j]["UnitId"].ToString()) { switch (tb4.Rows[j]["DetectionTypeCode"].ToString()) { case "RT\\UT": case "RT": c1y += int.Parse(tb4.Rows[j]["num"].ToString()); break; case "PT": c2y += int.Parse(tb4.Rows[j]["num"].ToString()); break; case "MT": c3y += int.Parse(tb4.Rows[j]["num"].ToString()); break; case "UT": c4y += int.Parse(tb4.Rows[j]["num"].ToString()); break; case "TOFD\\UT\\MT": case "TOFD\\MT": case "3D-TFM": case "TOFD": c5y += int.Parse(tb4.Rows[j]["num"].ToString()); break; case "PA": c6y += int.Parse(tb4.Rows[j]["num"].ToString()); break; } } } for (int j = 0; j < tb5.Rows.Count; j++) { if (tb1.Rows[i]["WorkAreaId"].ToString() == tb5.Rows[j]["WorkAreaId"].ToString() && tb1.Rows[i]["UnitId"].ToString() == tb5.Rows[j]["UnitId"].ToString()) { switch (tb5.Rows[j]["DetectionTypeCode"].ToString()) { case "RT\\UT": case "RT": c1n += int.Parse(tb5.Rows[j]["num"].ToString()); break; case "PT": c2n += int.Parse(tb5.Rows[j]["num"].ToString()); break; case "MT": c3n += int.Parse(tb5.Rows[j]["num"].ToString()); break; case "UT": c4n += int.Parse(tb5.Rows[j]["num"].ToString()); break; case "TOFD\\UT\\MT": case "TOFD\\MT": case "3D-TFM": case "TOFD": c5n += int.Parse(tb5.Rows[j]["num"].ToString()); break; case "PA": c6n += int.Parse(tb5.Rows[j]["num"].ToString()); break; } } } tb1.Rows[i]["t1y"] = t1y; tb1.Rows[i]["t2y"] = t2y; tb1.Rows[i]["t3y"] = t3y; tb1.Rows[i]["t4y"] = t4y; tb1.Rows[i]["t5y"] = t5y; tb1.Rows[i]["t6y"] = t6y; tb1.Rows[i]["t1n"] = t1n; tb1.Rows[i]["t2n"] = t2n; tb1.Rows[i]["t3n"] = t3n; tb1.Rows[i]["t4n"] = t4n; tb1.Rows[i]["t5n"] = t5n; tb1.Rows[i]["t6n"] = t6n; tb1.Rows[i]["c1y"] = c1y; tb1.Rows[i]["c2y"] = c2y; tb1.Rows[i]["c3y"] = c3y; tb1.Rows[i]["c4y"] = c4y; tb1.Rows[i]["c5y"] = c5y; tb1.Rows[i]["c6y"] = c6y; tb1.Rows[i]["c1n"] = c1n; tb1.Rows[i]["c2n"] = c2n; tb1.Rows[i]["c3n"] = c3n; tb1.Rows[i]["c4n"] = c4n; tb1.Rows[i]["c5n"] = c5n; tb1.Rows[i]["c6n"] = c6n; } } this.Grid1.DataSource = tb1; this.Grid1.DataBind(); } #endregion protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { object[] keys = Grid1.DataKeys[e.RowIndex]; string fileId = string.Empty; if (keys == null) { return; } else { fileId = keys[0].ToString(); } if (e.CommandName == "print") { var projectName = ProjectService.GetProjectNameByProjectId(CurrUser.LoginProjectId); string dateStr = Grid1.Rows[e.RowIndex].Values[2].ToString(); Dictionary keyValuePairs = new Dictionary(); keyValuePairs.Add("projectName", projectName); keyValuePairs.Add("dateStr", dateStr); List units = UnitService.GetUnitByProjectIdUnitTypeList(this.CurrUser.LoginProjectId, Const.ProjectUnitType_5); string unitName = ""; foreach (Base_Unit unit in units) { unitName += unit.UnitName + ","; } keyValuePairs.Add("unitName", unitName); BLL.Common.FastReportService.ResetData(); BLL.Common.FastReportService.AddFastreportParameter(keyValuePairs); var dates = dateStr.Split('至'); DateTime begin = DateTime.Parse(dates[0]); DateTime end = DateTime.Parse(dates[1]); string strSql1 = @"select unit.UnitId,unit.UnitName,workArea.WorkAreaName,workArea.WorkAreaCode,curr.curr_pass_film,curr.curr_total_film,recurr.recurr_pass_film,recurr.recurr_total_film, 0.0 curr_pass_rate,0.0 recurr_pass_rate from Base_Unit unit right join ProjectData_WorkArea workArea on workArea.UnitId=unit.UnitId left join ( SELECT WorkAreaId,IsoInfo.UnitId,COUNT(*) AS curr_check_count_total , SUM(cht_totalfilm) AS curr_total_film , SUM(cht_passfilm) AS curr_pass_film FROM CH_Check Checks LEFT JOIN CH_CheckItem ON ch_checkitem.CHT_CheckID = Checks.CHT_CheckID LEFT JOIN PW_JointInfo as JointInfo ON JointInfo.JOT_ID = ch_checkitem.JOT_ID LEFT JOIN PW_IsoInfo as IsoInfo ON IsoInfo.ISO_ID = JointInfo.ISO_ID where JointInfo.ProjectId=@ProjectId and (cht_checkdate >= @date1 OR @date1 IS NULL) and(cht_checkdate <= @date2 OR @date2 IS NULL) group by WorkAreaId,IsoInfo.UnitId) as curr on unit.UnitId= curr.UnitId and workArea.WorkAreaId=curr.WorkAreaId left join ( SELECT WorkAreaId,IsoInfo.UnitId,COUNT(*) AS recurr_check_count_total , SUM(cht_totalfilm) AS recurr_total_film , SUM(cht_passfilm) AS recurr_pass_film FROM CH_Check Checks LEFT JOIN CH_CheckItem ON ch_checkitem.CHT_CheckID = Checks.CHT_CheckID LEFT JOIN PW_JointInfo as JointInfo ON JointInfo.JOT_ID = ch_checkitem.JOT_ID LEFT JOIN PW_IsoInfo as IsoInfo ON IsoInfo.ISO_ID = JointInfo.ISO_ID LEFT JOIN CH_Trust trust on trust.CH_TrustID = Checks.CH_TrustID where JointInfo.ProjectId=@ProjectId and trust.CH_TrustType='2' and (cht_checkdate >= @date1 OR @date1 IS NULL) and(cht_checkdate <= @date2 OR @date2 IS NULL) group by WorkAreaId,IsoInfo.UnitId) as recurr on unit.UnitId= recurr.UnitId and workArea.WorkAreaId=recurr.WorkAreaId where workArea.ProjectId=@ProjectId "; List listpar = new List { new SqlParameter("@projectId", this.CurrUser.LoginProjectId) }; listpar.Add(new SqlParameter("@date1", begin.ToString("yyyy-MM-dd"))); listpar.Add(new SqlParameter("@date2", end.ToString("yyyy-MM-dd"))); SqlParameter[] parameter5 = listpar.ToArray(); DataTable dt = SQLHelper.GetDataTableRunText(strSql1, parameter5); if (dt != null) { dt.TableName = "Table1"; foreach (DataRow row in dt.Rows) { try { row["curr_pass_rate"] =1.0 * int.Parse(row["curr_pass_film"].ToString()) / int.Parse(row["curr_total_film"].ToString()); } catch (Exception e1) { } try { row["recurr_pass_rate"] = 1.0 * int.Parse(row["recurr_pass_film"].ToString()) / int.Parse(row["recurr_total_film"].ToString()); } catch (Exception e2) { } } } BLL.Common.FastReportService.AddFastreportTable(dt); string initTemplatePath = ""; string rootPath = Server.MapPath("~/"); initTemplatePath = "File\\Fastreport\\无损检测周报.frx"; if (File.Exists(rootPath + initTemplatePath)) { PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("../TrustManage/Fastreport.aspx?ReportPath={0}", rootPath + initTemplatePath))); } } } #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(); MultiHeaderTable mht = new MultiHeaderTable(); mht.ResolveMultiHeaderTable(Grid1.Columns); sb.Append(""); sb.Append(""); foreach (List rows in mht.MultiTable) { sb.Append(""); foreach (object[] cell in rows) { int rowspan = Convert.ToInt32(cell[0]); int colspan = Convert.ToInt32(cell[1]); GridColumn column = cell[2] as GridColumn; sb.AppendFormat("{3}", rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "", colspan != 1 ? " colspan=\"" + colspan + "\"" : "", colspan != 1 ? " style=\"text-align:center;\"" : "", column.HeaderText); } sb.Append(""); } int j = 0; foreach (GridRow row in grid.Rows) { sb.Append(""); int i = 0; foreach (GridColumn column in mht.Columns) { string html = row.Values[column.ColumnIndex].ToString(); if (column.ColumnID == "tfNumber") { html = (row.FindControl("labNumber1") as AspNet.Label).Text; } sb.AppendFormat("", html); i++; } j++; sb.Append(""); } var sumary = grid.SummaryData; if (sumary != null) { sb.Append(""); foreach (GridColumn column in grid.Columns) { try { if (column is GroupField) { if (((GroupField)column).Columns != null) { foreach (var item in ((GroupField)column).Columns) { if (!column.Hidden) { if (sumary.ContainsKey(item.ColumnID)) { sb.AppendFormat("", sumary.GetValue(item.ColumnID).ToString()); } else { sb.AppendFormat("", ""); } } } } } else if (column is RenderField) { if (!column.Hidden) { if (sumary.ContainsKey(column.ColumnID)) { sb.AppendFormat("", sumary.GetValue(column.ColumnID).ToString()); } else { sb.AppendFormat("", ""); } } } else { if (!column.Hidden) { sb.AppendFormat("", ""); } } } catch (Exception e) { sb.AppendFormat("", ""); } } sb.Append(""); } sb.Append("
{0}
{0}{0}{0}{0}{0}{0}
"); return sb.ToString(); } #endregion protected void BtnAnalyse_Click(object sender, EventArgs e) { BindGrid(); } } }