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

521 lines
20 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 CQMSBasicData : 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;
int value13 = 0;
int value14 = 0;
int value15 = 0;
int value16 = 0;
int value17 = 0;
int value18 = 0;
//根据项目获取总包单位
var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu =>
pu.ProjectId == project.ProjectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位
if (generalContractorUnit != null)
{
var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser
where x.ProjectId == project.ProjectId && x.UnitId == generalContractorUnit.UnitId &&
x.IsPost == true && x.RoleId.Contains(Const.ZBCNEngineer) //专业工程师
select x).ToList();
//五环专业工程师
value1 = constructionManagerGCs.Count;
}
// 获取分包单位的专业工程师
var subContractorUnits = (from x in Funs.DB.Project_ProjectUnit
where x.ProjectId == project.ProjectId && x.UnitType == Const.ProjectUnitType_2 //分包单位
select x).ToList();
foreach (var unit in subContractorUnits)
{
var subContractorUsers = (from x in Funs.DB.Project_ProjectUser
where x.ProjectId == project.ProjectId && x.UnitId == unit.UnitId &&
x.IsPost == true && x.RoleId.Contains(Const.ZBCNEngineer) //分包商专业工程师
select x).ToList();
value2 += subContractorUsers.Count;
}
#region
var query1 = (from c in db.Comprehensive_GeneralPlanApproval
where c.ProjectId == project.ProjectId
select new
{
c.ApprovalDate,
c.ProjectId,
c.CompileDate
}).ToList();
value3 = query1.Where(x => x.ApprovalDate >= firstDayOfMonth).Count();
value4 = query1.Count();
#endregion
#region
var query2 = (from c in db.Comprehensive_MajorPlanApproval
where c.ProjectId == project.ProjectId
select new
{
c.ApprovalDate,
c.ProjectId,
c.ExpertReviewMan,
c.IsReview,
c.CompileDate
}).ToList();
value5 = query2.Where(x => x.ApprovalDate >= firstDayOfMonth).Count();
value6 = query2.Count();
#endregion
#region ITP发布情况
var query3 = (from c in db.Inspection_Test_Plan
where c.ProjectId == project.ProjectId
select new
{
c.ApprovalDate,
c.ProjectId,
c.CreateDate
}).ToList();
value7 = query3.Where(x => x.CreateDate >= firstDayOfMonth).Count();
value8 = query3.Count();
#endregion
#region
var query4 = (from c in db.Comprehensive_DesignDetails
where c.ProjectId == project.ProjectId
select new
{
c.Status,
c.CompileDate,
c.ProjectId,
}).ToList();
value9 = query4.Where(x => x.CompileDate >= firstDayOfMonth).Count();
value10 = query4.Count();
#endregion
#region
var query5 = (from c in db.Comprehensive_ReviewDrawings
where c.ProjectId == project.ProjectId
select new
{
c.Status,
c.ReviewDate,
c.ProjectId,
}).ToList();
value11 = query5.Where(x => x.ReviewDate >= firstDayOfMonth).Count();
value12 = query5.Count();
#endregion
#region
var query6 = (from c in db.Comprehensive_ReviewDrawings
where c.ProjectId == project.ProjectId
select new
{
c.Status,
c.ReviewDate,
c.ProjectId,
}).ToList();
value13 = query6.Where(x => x.ReviewDate >= firstDayOfMonth).Count();
value14 = query6.Count();
#endregion
#region
var query7 = (from x in Funs.DB.Comprehensive_InspectionPerson
join p in Funs.DB.Base_Project on x.ProjectId equals p.ProjectId into pGroup
from p in pGroup.DefaultIfEmpty()
join u in Funs.DB.Base_Unit on x.UnitId equals u.UnitId into uGroup
from u in uGroup.DefaultIfEmpty()
join y in Funs.DB.SitePerson_Person on x.InspectionPersonId equals y.PersonId into yGroup
from y in yGroup.DefaultIfEmpty()
join m in Funs.DB.Base_WorkPost on y.WorkPostId equals m.WorkPostId into mGroup
from m in mGroup.DefaultIfEmpty()
where p.ProjectId == project.ProjectId && x.IsTrain == true
select new
{
x.ProjectId,
p.ProjectName,
u.UnitId,
u.UnitName,
Name = x.PersonName,
Sex = y.Sex == null ? "" : (y.Sex == "1" ? "男" : "女"),
y.IdentityCard,
WorkPostName = m.WorkPostName == null ? "" : m.WorkPostName,
Phone = y.Telephone,
x.CompileDate
}).ToList();
value17 = query7.Where(x => x.CompileDate >= firstDayOfMonth).Count();
value18 = query7.Count();
#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, // ITP发布情况本月
Value8 = value8, // ITP发布情况累计
Value9 = value9, // 设计交底本月
Value10 = value10, // 设计交底累计
Value11 = value11, // 图纸会审本月
Value12 = value12, // 图纸会审累计
Value13 = value13, // 设计变更管理本月
Value14 = value14, // 设计变更管理累计
Value15 = value15, // 现场质量培训本月培训次数
Value16 = value16, // 现场质量培训累计培训次数
Value17 = value17, // 现场质量培训本月培训人数
Value18 = value18 // 现场质量培训累计培训人数
});
}
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));
summary.Add("Value13", pagedResult.Sum(p => p.Value13));
summary.Add("Value14", pagedResult.Sum(p => p.Value14));
summary.Add("Value15", pagedResult.Sum(p => p.Value15));
summary.Add("Value16", pagedResult.Sum(p => p.Value16));
summary.Add("Value17", pagedResult.Sum(p => p.Value17));
summary.Add("Value18", pagedResult.Sum(p => p.Value18));
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();
}
}
}