CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs

441 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 WeldingData : 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;
int value5 = 0;
int value6 = 0;
int value7 = 0;
int value8 = 0;
int value9 = 0;
int value10 = 0;
int value11 = 0;
int value12 = 0;
string value13 = "0%";
string value14 = "0%";
#region
var query1 = from c in db.Comprehensive_InspectionPerson
join cn in db.Base_CNProfessional on c.CNProfessionalId equals cn.CNProfessionalId into cnJoin
from cn in cnJoin.DefaultIfEmpty()
join p in db.Base_Post on c.PostId equals p.PostId into postJoin
from p in postJoin.DefaultIfEmpty()
where c.ProjectId == project.ProjectId
select new
{
c.InspectionPersonId,
c.ProjectId,
c.PersonName,
c.ApprovalTime,
cn.ProfessionalName,
p.PostName
};
var totalWelderList = query1.ToList();
var welderList = query1.Where(x => x.ApprovalTime >= firstDayOfMonth);
value1 = welderList.Count(x => x.ProfessionalName == "管道" && x.PostName == "焊工");
value2 = totalWelderList.Count(x => x.ProfessionalName == "管道" && x.PostName == "焊工");
value3 = welderList.Count(x => x.ProfessionalName == "土建" && x.PostName == "焊工");
value4 = totalWelderList.Count(x => x.ProfessionalName == "土建" && x.PostName == "焊工");
value5 = welderList.Count(x => x.ProfessionalName == "设备" && x.PostName == "焊工");
value6 = totalWelderList.Count(x => x.ProfessionalName == "设备" && x.PostName == "焊工");
value7 = welderList.Count(x => x.ProfessionalName != "管道" && x.ProfessionalName != "土建" && x.ProfessionalName != "设备" && x.PostName == "焊工");
value8 = totalWelderList.Count(x => x.ProfessionalName != "管道" && x.ProfessionalName != "土建" && x.ProfessionalName != "设备" && x.PostName == "焊工");
#endregion
#region PQR/WPS报验
var query = (from x in db.Report_Construction_Plan
join y in db.Report_WeekAndMonthReport_New on x.ReportId equals y.Id into yJoin
from y in yJoin.DefaultIfEmpty()
where y.ProjectId == project.ProjectId && x.ReType == "5"
select new
{
x.Quantity1,
x.Quantity2,
x.Quantity3,
x.QuaRate,
y.CreateDate
}).ToList();
var sum1 = query.Sum(x => x.Quantity1 ?? 0);
var sum2 = query.Sum(x => x.Quantity2 ?? 0);
var sum3 = query.Sum(x => x.Quantity3 ?? 0);
value10 = sum1 + sum2 + sum3;
var sum4 = query.Where(x => x.CreateDate >= firstDayOfMonth).Sum(x => x.Quantity1 ?? 0);
var sum5 = query.Where(x => x.CreateDate >= firstDayOfMonth).Sum(x => x.Quantity2 ?? 0);
var sum6 = query.Where(x => x.CreateDate >= firstDayOfMonth).Sum(x => x.Quantity3 ?? 0);
value9 = sum4 + sum5 + sum6;
#endregion
#region
var query2 = from c in db.ProcessControl_NondestructiveTest_New
where c.ProjectId == project.ProjectId
orderby c.CreateDate descending
select new
{
c.CreateDate,
c.ProjectId,
c.ProfessionalName,
c.MonthQuantity,
c.TotalQuantity,
c.MonthRate,
c.TotalRate
};
if (query2.Count()>0)
{
var data1 = query2.FirstOrDefault(x => x.ProfessionalName == "工艺管道");
var data2 = query2.FirstOrDefault(x => x.ProfessionalName == "地管");
var data3 = query2.FirstOrDefault(x => x.ProfessionalName == "非标");
value11 = (int)((data1?.MonthQuantity ?? 0) + (data2?.MonthQuantity ?? 0) + (data3?.MonthQuantity ?? 0));
value12 = (int)((data1?.TotalQuantity ?? 0) + (data2?.TotalQuantity ?? 0) + (data3?.TotalQuantity ?? 0));
}
#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, // PQR/WPS报验本月
Value10 = value10, // PQR/WPS报验累计
Value11 = value11, // 本月拍片数
Value12 = value12, // 累计拍片数
Value13 = value13, // 本月一次合格率
Value14 = value14, // 累计一次合格率
});
}
var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
Grid1.RecordCount = result.Count;
Grid1.DataSource = pagedResult;
Grid1.DataBind();
JObject summary = new JObject();
summary.Add("ProjectName", "合计");
summary.Add("Value1", pagedResult.Sum(p => p.Value1));
summary.Add("Value2", pagedResult.Sum(p => p.Value2));
summary.Add("Value3", pagedResult.Sum(p => p.Value3));
summary.Add("Value4", pagedResult.Sum(p => p.Value4));
summary.Add("Value5", pagedResult.Sum(p => p.Value5));
summary.Add("Value6", pagedResult.Sum(p => p.Value6));
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", pagedResult.Sum(p => p.Value12));
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();
}
}
}