521 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			521 lines
		
	
	
		
			20 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 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();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |