424 lines
16 KiB
C#
424 lines
16 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 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 detailsGrid9 = (from x in db.Report_Construction_Plan
|
|||
|
// where x.ReportId == ReportId && x.ReType == "5"
|
|||
|
// select x).ToList();
|
|||
|
|
|||
|
#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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|